Subdivision Surfaces with Displacement Mapping

hires rhinork

Rhinork design
© Wizards of the Coast. Used with permission
Figure 1

The Fantasy Engine uses subdivision surfaces with displacement mapping to render complex geometry in real-time.
The model in Figure 1 contains about 500,000 quadrilaterals (quads). It is not practical to rig and animate such a model directly. It is not a treat to UV map it either. Instead we make a low resolution version of the model with about 1,700 quads and triangles. See Figure 2.
low poly rhinork
Figure 2

This low resolution model is much easier to rig and animate (and UV map). We can also afford to make blend shapes (morph targets) for more complex deformations since it is a pretty light mesh. We could displacement map this version of the model directly, but it would not deform properly when animated and ugly points and flat edges would appear. It is much better to displace a nice smooth model like we have in Figure 3.
subd rhinork
Figure 3

Here we have a smoothed version of the model created by treating the low resolution model as a subdivision surface. It deforms naturally when animated, never introducing any flat edges or jutting vertices. Also, it gets a closer fit to the high-resolution model than the polygon version so we can get by with a fairly low-resolution displacement map with fewer bits per pixel.

displacement map

Figure 4

We use a mapping program to create a displacement map that gives the difference between the smoothed model and the high resolution model. The displacement map tells the renderer how much to displace the surface in the direction of the low resolution model’s normal. Figure 4 is the displacement map used to change the smoothed model into the displaced model shown in Figure 5. If the displacement mapping is done properly the displaced low resolution model will be virtually indistinguishable from the original high resolution model.
displaced model
Figure 5

TM & © 2005 - 2006 Fantasy Lab, Inc. All Rights Reserved.