PhotoRealistic RenderMan
Application Note #28
Using the Subdivision Mesh Primitive
August, 1998
Currently, the most common way to model complex smooth surfaces is by using a patchwork of trimmed NURBS. Trimmed NURBs are used primarily because they are readily available in existing commercial systems. They do, however, suffer from at least two difficulties:
Subdivision surfaces overcome both of these problems: they do not require trimming, and smoothness of the model is automatically guaranteed, even as the model animates.
A subdivision surface, like a parametric surface, is described by its control mesh of points. The surface itself can approximate or interpolate this control mesh while being piecewise smooth. Furthermore, its control mesh is not confined to be rectangular, which is a major limitation of NURBs and uniform B-splines. In this respect, the control mesh is analogous to a polygonal description. But where polygonal surfaces require large numbers of data points to approximate being smooth, a subdivision surface is smooth - meaning that polygonal artifacts are never present, no matter how the surface animates or how closely it is viewed.
The basic idea is to construct a surface from an arbitrary polyhedron by an appropriate repeated subdivision of each of the faces, as illustrated in Figure 1. This subdivision process eventually converges to a smooth surface that is commonly called the limit surface (which is the result of rendering).
Fig.1 Recursive subdivision of a polyhedron. The control mesh is at the top left.
Following in left to right order, are the mesh after one subdivision step,
two subdivision steps, and the limit surface.
As subdivision surfaces go, there are a number of species to choose from, but all subdivision surfaces have this recursive subdivision property. PRMan currently implements one such subdivision scheme called the Catmull-Clark scheme. Whereas other schemes subdivide into triangles or interpolate their control points, the Catmull-Clark scheme produces quadrilaterals and approximates their points. We prefer Catmull-Clark surfaces for the following reasons:
It is possible to modify the subdivision rules to create piecewise smooth surfaces containing infinitely sharp features such as creases and corners (Fig. 4). As a special case, surfaces can be made to interpolate their boundaries by tagging their boundary edges as sharp (Fig. 5).
However, we've recognized that real world surfaces never really have infinitely sharp edges, especially when viewed sufficiently close. To this end, we've added the notion of semi-sharp creases, i.e. rounded creases of controllable sharpness (Fig. 3). These allow you to create features that are more akin to fillets and blends. In PRMan, as you tag edges and edge chains as creases, you also supply a sharpness value that ranges from 0-10, with sharpness values >=10 treated as infinitely sharp.
It should be noted that infinitely sharp creases are really tangent discontinuities in the surface, implying that the geometric normals are also discontinuous there. Therefore, displacing along the normal will likely tear apart the surface along the crease. If you really want to displace a surface at a crease, it may be better to make the crease semi-sharp.
Examples
A simple closed, smooth surface:
SubdivisionMesh "catmull-clark"
[4 4 4 4 4 4] [0 2 3 1 4 6 7 5 5 1 3 4 2 0 7 6 6 4 3 2 1 5 7 0]
"P" [ 25 -25 -25 25 25 -25 25 -25 25 25 25 25-25 25 25 -25 25 -25 -25 -25 25 -25 -25 -25]
Fig. 2 Simple surface with control mesh in yellow.
An example with semi-sharp creases:
SubdivisionMesh "catmull-clark"
[4 4 4 4 4 4] [0 2 3 1 4 6 7 5 5 1 3 4 2 0 7 6 6 4 3 2 1 5 7 0]
["crease" "crease"] [5 1 5 1] [1 5 7 0 1 3 4 6 2 3] [2 2]
"P" [ 25 -25 -25 25 25 -25 25 -25 25 25 25 25 -25 25 25 -25 25 -25 -25 -25 25 -25 -25 -25]
Fig. 3 Surface with semi-sharp creases (in red) set to 2.
SubdivisionMesh "catmull-clark"
[4 4 4 4 4 4] [0 2 3 1 4 6 7 5 5 1 3 4 2 0 7 6 6 4 3 2 1 5 7 0]
["crease" "crease"] [5 1 5 1] [1 5 7 0 1 3 4 6 2 3] [10 10]
"P" [ 25 -25 -25 25 25 -25 25 -25 25 25 25 25 -25 25 25 -25 25 -25 -25 -25 25 -25 -25 -25]
Fig. 4 Surface with infinitely sharp creases (in red).
Interpolating the mesh boundaries:
SubdivisionMesh "catmull-clark"
[4 4 4 4 4 4 4 4 4]
[0 4 5 1 1 5 6 2 2 6 7 3 4 8 9 5 5 9 10 6 6 10 11 7 8 12 13 9 9 13 14 10 10 14 15 11]
["interpolateboundary"] [0 0] [] []
"P" [-60 60 0 -60 20 0 -60 -20 0 -60 -60 0 -20 60 0 -20 20 45 -20 -20 45 -20 -60 0 20 60 0 20 20 45 20 -20 45 20 -60 0 60 60 0 60 20 0 60 -20 0 60 -60 0]
Fig. 5 Open surface that interpolates boundaries.
As far as texture mapping goes, you might suspect that for a subdivision surface, there is no global st-space. Normally, we can use projection techniques and "paint" textures directly onto the surface. Subdivision surfaces, like other PRMan geometric primitives, allow users to associate Pref data with vertices so that projected textures can be handled properly.
In construction a subdivision mesh, special attention must be paid to its topology so that it subdivides correctly. Some important rules to observe are:
Portions of this Applications Note originally appeared in:
Tony DeRose, Michael Kass, Tien Truong, "Subdivision Surfaces in Character Animation," SIGGRAPH '98 Proceedings, Orlando, FL, July 20, 1998.
Pixar Animation Studios
|