Game Development Reference
In-Depth Information
15 Using subdivision
surfaces
Real-time 3D applications are limited to relatively few polygons to
describe a model. On some machines displaying 5000 triangles, 25-30
times a second is the limit of the processor and graphic card capabilities;
on other systems, a 50 000-polygon limit could be achieved. How do we
scale the display to suit the hardware? One popular technique is to use
subdivision surfaces. Using this method the original polygonal mesh is
used as the basis for the model. With one pass of subdivision every edge
is divided in two, so that each triangle is replaced with four triangles. If the
new vertices are placed simply at the mid-point of the edge then the
surface would not be smoothed, but if we could devise a way of placing
the vertices at the optimum place to smooth the mesh then the effect is a
smoothly refined mesh. It is equally possible to subdivide the new mesh
again, thereby replacing the original triangle with 16 new triangles. As you
can see, each level of subdivision replaces the original triangles with four
times the number of triangles, so the polygon count ramps up at a rate of
4 n , where n is the subdivision count. Subdividing four times gives 4 4 = 256
times the original polygon count. A 1000-polygon character now has a
staggering 256 000 polygons. For most real-time applications, one level of
subdivision, or two at the most, will be the limit. So that is the principle, but
the real cunning of any subdivision scheme is deciding where to place the
new vertices. Let's look at the options.
An overview of subdivision
We must decide first whether the original vertices feature in the
subdivided mesh or not. If we choose a scheme that retains the original
vertices, then we know that the new surface will go through the original
mesh. A scheme that retains the original vertices and adds to the vertex
list is described as interpolating, while a scheme that creates all new
vertices is called approximating . For low resolution meshes, this decision