Paper
Paper
Figure 1: Geri.
v0
e 03
e 0n e 13 Figure 6: A surface where boundary edges are tagged as sharp and
v1 f 12 boundary vertices of valence two are tagged as corners. The control
f 1n
e 11 mesh is yellow and the limit surface is cyan.
e 12
f 11
e 02
e 01
Following Hoppe et. al. [10] it is possible to modify the subdivi-
sion rules to create piecewise smooth surfaces containing infinitely
sharp features such as creases and corners. This is illustrated in
Figure 5 which shows a close-up shot of Geri’s hand. Infinitely
sharp creases were used to separate the skin of the hand from the
Figure 4: The situation around a vertex v0 of valence n. finger nails. Sharp creases can be modeled by marking a subset
of the edges of the control mesh as sharp and then using specially
These averaging rules — also called subdivision rules, masks, or designed rules in the neighborhood of sharp edges. Appendix A
stencils — are such that the limit surface can be shown to be tangent describes the necessary special rules and when to use them.
plane smooth no matter where the control vertices are placed [14, Again following Hoppe et. al., we deal with boundaries of the
19].1 control mesh by tagging the boundary edges as sharp. We have also
Whereas Catmull-Clark subdivision is based on quadrilaterals, found it convenient to tag boundary vertices of valence 2 as corners,
Loop’s surfaces [11] and the Butterfly scheme [6] are based on tri- even though they would normally be treated as crease vertices since
angles. We chose to base our work on Catmull-Clark surfaces for they are incident to two sharp edges. We do this to mimic the behav-
two reasons: ior of endpoint interpolating tensor product uniform cubic B-spline
surfaces, as illustrated in Figure 6.
1. They strictly generalize uniform tensor product cubic B-
splines, making them easier to use in conjunction with exist-
ing in-house and commercial software systems such as Alias- 3 Modeling fillets and blends
Wavefront and SoftImage.
2. Quadrilaterals are often better than triangles at capturing the As mentioned in Section 1 and shown in Figure 5, infinitely sharp
symmetries of natural and man-made objects. Tube-like sur- creases are very convenient for representing piecewise-smooth sur-
faces — such as arms, legs, and fingers — for example, can faces. However, real-world surfaces are never infinitely sharp. The
be modeled much more naturally with quadrilaterals. corner of a tabletop, for instance, is smooth when viewed suffi-
ciently closely. For animation purposes it is often desirable to cap-
1 Technical caveat for the purist: The surface is guaranteed to be smooth ture such tightly curved shapes.
except for control vertex positions in a set of measure zero. To this end we have developed a generalization of the Catmull-
Clark scheme to admit semi-sharp creases – that is, creases of con- arbitrary number of subdivision steps, followed by another set of
trollable sharpness, a simple example of which is shown in Figure 7. rules that are applied to the limit. Smoothness therefore depends
only on the second set of rules. Hybrid subdivision can be used to
obtain semi-sharp creases by using infinitely sharp rules during the
first few subdivision steps, followed by use of the smooth rules for
subsequent subdivision steps. Intuitively this leads to surfaces that
are sharp at coarse scales, but smooth at finer scales.
Now the details. To set the stage for the general situation where
the sharpness can vary along a crease, we consider two illustrative
special cases.
Case 1: A constant integer sharpness s crease: We subdivide
s times using the infinitely sharp rules, then switch to the smooth
rules. In other words, an edge of sharpness s > 0 is subdivided us-
ing the sharp edge rule. The two subedges created each have sharp-
(a) (b) ness s , 1. A sharpness s = 0 edge is considered smooth, and it
stays smooth for remaining subdivisions. In the limit where s ! ∞
the sharp rules are used for all steps, leading to an infinitely sharp
crease. An example of integer sharpness creases is shown in Fig-
ure 7. A more complicated example where two creases of different
sharpnesses intersect is shown in Figure 8.
(c) (d)
(a) (b)
(e)
One approach to achieve semi-sharp creases is to develop subdi- Figure 8: A pair of crossing semi-sharp creases. The control mesh
vision rules whose weights are parametrized by the sharpness s of for all surfaces is the octahedron drawn in wire frame. Yellow de-
the crease. This approach is difficult because it can be quite hard notes smooth edges, red denotes the edges of the first crease, and
to discover rules that lead to the desired smoothness properties of magenta denotes the edges of the second crease. In (a) the crease
the limit surfaces. One of the roadblocks is that subdivision rules sharpnesses are both zero; in (b), (c), and (d) the sharpness of the
around a crease break a symmetry possessed by the smooth rules: red crease is 4. The sharpness of the magenta crease in (b), (c), and
typical smooth rules (such as the Catmull-Clark rules) are invariant (d) is 0, 2, and 4, respectively.
under cyclic reindexing, meaning that discrete Fourier transforms
can be used to prove properties for vertices of arbitrary valence (cf.
Zorin [19]). In the absence of this invariance, each valence must Case 2: A constant, but not necessarily integer sharpness s: the
currently be considered separately, as was done by Schweitzer [15]. main idea here is to interpolate between adjacent integer sharp-
Another difficulty is that such an approach is likely to lead to a nesses. Let s# and s" denote the floor and ceiling of s, respectively.
zoo of rules depending on the number and configuration of creases Imagine creating two versions of the crease: the first obtained by
through a vertex. For instance, a vertex with two semi-sharp creases subdividing s# times using the sharp rules, then subdividing one ad-
passing through it would use a different set of rules than a vertex ditional time using the smooth rules. Call the vertices of this first
with just one crease through it. version v#0 ; v#1 ; :::. The second version, the vertices of which we
Our approach is to use a very simple process we call hybrid sub- denote by v"0 ; v"1 ; :::, is created by subdividing s" times using the
division. The general idea is to use one set of rules for a finite but sharp rules. We take the s"-times subdivided semi-sharp crease to
Figure 9: A simple example of a variable sharpness crease. The Figure 10: A more complex example of variable sharpness creases.
edges of the bottom face of the cubical control mesh are infinitely This model, inspired by an Edouard Lanteri sculpture, contains nu-
sharp. Three edges of the top face form a single variable sharpness merous variable sharpness creases to reduce the size of the control
crease with edge sharpnesses set to 2 (the two magenta edges), and mesh. The control mesh for the model made without variable sharp-
4 (the red edge). ness creases required 840 faces; with variable sharpness creases the
face count dropped to 627. Model courtesy of Jason Bickerstaff.
s"
have vertex positions vi computed via simple linear interpolation:
4.1 Energy functional
vsi" = (1 , σ)v#i +σv"i (3)
For physical simulation, the basic properties of a material are gen-
where σ = (s , s#)=(s" ,s#). Subsequent subdivisions are done us- erally specified by defining an energy functional to represent the
ing the smooth rules. In the case where all creases have the same attraction or resistance of the material to various possible deforma-
non-integer sharpness s, the surface produced by the above process tions. Typically, the energy is either specified as a surface integral
is identical to the one obtained by linearly interpolating between or as a discrete sum of terms which are functions of the positions of
the integer sharpness limit surfaces corresponding to s# and s". Typ- surface samples or control vertices. The first type of specification
ically, however, crease sharpnesses will not all be equal, meaning typically gives rise to a finite-element approach, while the second
that the limit surface is not a simple blend of integer sharpness sur- is associated more with finite-difference methods.
faces. Finite-element approaches are possible with subdivision sur-
The more general situation where crease sharpness is non-integer faces, and in fact some relevant surface integrals can be computed
and varies along a crease is presented in Appendix B. Figure 9 de- analytically [8]. In general, however, finite-element surface in-
picts a simple example. A more complex use of variable sharpness tegrals must be estimated through numerical quadrature, and this
is shown in Figure 10. gives rise to a collection of special cases around extraordinary
points. We chose to avoid these special cases by adopting a finite-
difference approach, approximating the clothing with a mass-spring
4 Supporting cloth dynamics model [18] in which all the mass is concentrated at the control
points.
The use of simulated physics to animate clothing has been widely Away from extraordinary points, Catmull-Clark meshes under
discussed in the literature (cf. [1, 5, 16]). Here, we address the subdivision become regular quadrilateral grids. This makes them
issues that arise when interfacing a physical simulator to a set of ideally suited for representing woven fabrics which are also gen-
geometric models constructed out of subdivision surfaces. It is not erally described locally by a gridded structure. In constructing the
our intent in this section to detail our cloth simulation system fully energy functions for clothing simulation, we use the edges of the
– that would require an entire paper of its own. Our goal is rather to subdivision mesh to correspond with the warp and weft directions
highlight issues related to the use of subdivision surfaces to model of the simulated woven fabrics.
both kinematic and dynamic objects. Since most popular fabrics stretch very little along the warp
In Section 4.1 we define the behavior of the cloth material by or weft directions, we introduce relatively strong fixed rest-length
constructing an energy functional on the subdivision control mesh. springs along each edge of the mesh. More precisely, for each edge
If the material properties such as the stiffness of the cloth vary over from p1 to p2 , we add an energy term ks Es ( p1 ; p2 ) where
the surface, one or more scalar fields (see Section 5.1) must be de-
fined to modulate the local energy contributions. In Section 4.2 we 1
j p1 , p2 j , 12
describe an algorithm for rapidly identifying potential collisions in- Es ( p1 ; p2 ) =
2 j p1 , p2 j : (4)
volving the cloth and/or kinematic obstacles. Rapid collision detec-
tion is crucial to achieving acceptable performance. Here, p1 and p2 are the rest positions of the two vertices, and ks is
the corresponding spring constant. Finally, very short edges in the surface need not give rise to deep
With only fixed-length springs along the mesh edges, the simu- branches in the tree, as they would using a volume-based method.
lated clothing can undergo arbitrary skew without penalty. One way
to prevent the skew is to introduce fixed-length springs along the It is a simple matter to construct a suitable surface-based data
diagonals. The problem with this approach is that strong diagonal structure for a NURBS surface. One method is to subdivide the
springs make the mesh too stiff, and weak diagonal springs allow (s; t ) parameter plane recursively into an quadtree. Since each node
the mesh to skew excessively. We chose to address this problem in the quadtree represents a subsquare of the parameter plane, a
by introducing an energy term which is proportional to the product bounding box for the surface restricted to the subsquare can be
of the energies of two diagonal fixed-length springs. If p1 and p2 constructed. An efficient method for constructing the hierarchy of
are vertices along one diagonal of a quadrilateral mesh face and p3 boxes is to compute bounding boxes for the children using the con-
and p4 are vertices along the other diagonal, the energy is given by vex hull property; parent bounding boxes can then be computed in a
kd Ed ( p1 ; p2 ; p3 ; p4 ) where kd is a scalar parameter that functions bottom up fashion by unioning child boxes. Having constructed the
analagously to a spring constant, and where quadtree, we can find all patches within ε of a point p as follows.
We start at the root of the quadtree and compare the bounding box
Ed ( p1 ; p2 ; p3 ; p4 ) = Es ( p1 ; p2 )Es ( p3 ; p4 ): (5) of the root node with a box of size 2ε centered on p. If there is
no intersection, then there are no patches within ε of p. If there is
The energy Ed ( p1 ; p2 ; p3 ; p4 ) reaches its minimum at zero when an intersection, then we repeat the test on each of the children and
either of the diagonals of the quadrilateral face are of the original recurse. The recursion terminates at the leaf nodes of the quadtree,
rest length. Thus the material can fold freely along either diago- where bounding boxes of individual subpatches are tested against
nal, while resisting skew to a degree determined by kd . We some- the box around p.
times use weak springs along the diagonals to keep the material
from wrinkling too much. Subdivision meshes have a natural hierarchy for levels finer than
With the fixed-length springs along the edges and the diagonal the original unsubdivided mesh, but this hierarchy is insufficient
contributions to the energy, the simulated material, unlike real cloth, because even the unsubdivided mesh may have too many faces to
can bend without penalty. To add greater realism to the simulated test exhaustively. Since there is there is no global (s; t ) plane from
cloth, we introduce an energy term that establishes a resistance to which to derive a hierarchy, we instead construct a hierarchy by
bending along virtual threads. Virtual threads are defined as a se- “unsubdividing” or “coarsening” the mesh: We begin by forming
quence of vertices. They follow grid lines in regular regions of the leaf nodes of the hierarchy, each of which corresponds to a face
mesh, and when a thread passes through an extraordinary vertex of of the subdivision surface control mesh. We then hierarchically
valence n, it continues by exiting along the edge bn=2c-edges away merge faces level by level until we finish with a single merged face
in the clockwise direction. If p1 ; p2 ; and p3 are three points along corresponding to the entire subdivision surface.
a virtual thread, the anti-bending component of the energy is given
by k p E p ( p1 ; p2 ; p3 ) where The process of merging faces proceeds as follows. In order to
create the `th level in the hierarchy, we first mark all non-boundary
edges in the ` , 1st level as candidates for merging. Then until all
E p ( p1 ; p2 ; p3 ) =
1
2
[C( p1 ; p2 ; p3 ) , C( p1 ; p2 ; p3 )]2 (6)
candidates at the `th level have been exhausted, we pick a candidate
edge e, and remove it from the mesh, thereby creating a “superface”
p3 , p2 p2 , p1 f by merging the two faces f1 and f2 that shared e: The hierarchy
C( p1 ; p2 ; p3 ) =
j p3 , p2 j , j p2 , p1 j (7)
is extended by creating a new node to represent f and making its
children be the nodes corresponding to f1 and f2 . If f were to
and p1 ; p2 ; and p3 are the rest positions of the three points. participate immediately in another merge, the hierarchy could be-
By adjusting ks , kd and k p both globally and locally, we have come poorly balanced. To ensure against that possibility, we next
been able to simulate a reasonably wide variety of cloth behavior. In remove all edges of f from the candidate list. When all the candi-
the production of Geri’s game, we found that Geri’s jacket looked a date edges at one level have been exhausted, we begin the next level
great deal more realistic when we modulated k p over the surface of by marking non-boundary edges as candidates once again. Hierar-
the jacket in order to provide more stiffness on the shoulder pads, on chy construction halts when only a single superface remains in the
the lapels, and in an area under the armpits which is often reinforced mesh.
in real jackets. Methods for specifying scalar fields like k p over a
subdivision surface are discussed in more detail in section 5.1. The coarsening hierarchy is constructed once in a preprocessing
phase. During each iteration of the simulation, control vertex posi-
4.2 Collisions tions change, so the bounding boxes stored in the hierarchy must be
updated. Updating the boxes is again a bottom up process: the cur-
The simplest approach to detecting collisions in a physical simula- rent control vertex positions are used to update the bounding boxes
tion is to test each geometric element (i.e. point, edge, face) against at the leaves of the hierarchy. We do this efficiently by storing with
each other geometric element for a possible collision. With N geo- each leaf in the hierarchy a set of pointers to the vertices used to
metric elements, this would take N 2 time, which is prohibitive for construct its bounding box. Bounding boxes are then unioned up
large N. To achieve practical running times for large simulations, the hierarchy. A point can be “tested against” a hierarchy to find
the number of possible collisions must be culled as rapidly as possi- all faces within ε of the point by starting at the root of the hierar-
ble using some type of spatial data structure. While this can be done chy and recursively testing bounding boxes, just as is done with the
in a variety of different ways, there are two basic strategies: we NURBS quadtree.
can distribute the elements into a two-dimensional surface-based
data structure, or we can distribute them into a three-dimensional We build a coarsening hierarchy for each of the cloth meshes, as
volume-based data structure. Using a two-dimensional structure well as for each of the kinematic obstacles. To determine collisions
has several advantages if the surface connectivity does not change. between a cloth mesh and a kinematic obstacle, we test each vertex
First, the hierarchy can be fixed, and need not be regenerated each of the cloth mesh against the hierarchy for the obstacle. To deter-
time the geometry is moved. Second, the storage can all be stati- mine collisions between a cloth mesh and itself, we test each vertex
cally allocated. Third, there is never any need to rebalance the tree. of the mesh against the hierarchy for the same mesh.
5 Rendering subdivision surfaces Fortunately, the situation for subdivision surfaces is profoundly
better than for polygonal models. As we prove in Appendix C,
In this section, we introduce the idea of smoothly varying scalar smoothly varying texture coordinates result if the texture coordi-
fields defined over subdivision surfaces and show how they can be nates (s; t ) assigned to the control vertices are subdivided using
used to apply parametric textures to subdivision surfaces. We then the same subdivision rules as used for the geometric coordinates
describe a collection of implementation issues that arose when sub- (x; y; z). (In other words, control point positions and subdivision can
division surfaces and scalar fields were added to RenderMan. be thought of as taking place in a 5-space consisting of (x; y; z; s; t )
coordinates.) This is illustrated in Figure 11(c), where the surface
is treated as a Catmull-Clark surface with infinitely sharp bound-
5.1 Texturing using scalar fields ary edges. A more complicated example of parametric texture on a
NURBS surfaces are textured using four principal methods: para- subdivision surface is shown in Figure 12.
metric texture mapping, procedural texture, 3D paint [9], and solid As is generally the case in real productions, we used a combi-
texture [12, 13]. It is straightforward to apply 3D paint and solid nation of texturing methods to create Geri: the flesh tones on his
texturing to virtually any type of primitive, so these techniques head and hands were 3D-painted, solid textures were used to add
can readily be applied to texture subdivision surfaces. It is less fine detail to his skin and jacket, and we used procedural texturing
clear, however, how to apply parametric texture mapping, and more (described more fully below) for the seams of his jacket.
generally, procedural texturing to subdivision surfaces since, unlike
NURBS, they are not defined parametrically. The texture coordinates s and t mentioned above are each in-
With regard to texture mapping, subdivision surfaces are more stances of a scalar field; that is, a scalar-valued function that varies
akin to polygonal models since neither possesses a global (s; t ) over the surface. A scalar field f is defined on the surface by as-
parameter plane. The now-standard method of texture mapping signing a value fv to each of the control vertices v. The proof sketch
a polygonal model is to assign texture coordinates to each of the in Appendix C shows that the function f ( p) created through sub-
vertices. If the faces of the polygon consist only of triangles and division (where p is a point on the limit surface) varies smoothly
quadrilaterals, the texture coordinates can be interpolated across wherever the subdivision surface itself is smooth.
the face of the polygon during scan conversion using linear or bi-
linear interpolation. Faces with more than four sides pose a greater Scalar fields can be used for more than just parametric texture
challenge. One approach is to pre-process the model by splitting mapping — they can be used more generally as arbitrary parameters
such faces into a collection of triangles and/or quadrilaterals, us- to procedural shaders. An example of this occurs on Geri’s jacket.
ing some averaging scheme to invent texture coordinates at newly A scalar field is defined on the jacket that takes on large values for
introduced vertices. One difficulty with this approach is that the points on the surface near a seam, and small values elsewhere. The
texture coordinates are not differentiable across edges of the origi- procedural jacket shader uses the value of the this field to add the
nal or pre-processed mesh. As illustrated in Figures 11(a) and (b), apparent seams to the jacket. We use other scalar fields to darken
these discontinuities can appear as visual artifacts in the texture, Geri’s nostril and ear cavities, and to modulate various physical
especially as the model is animated. parameters of the cloth in the cloth simulator.
We assign scalar field values to the vertices of the control mesh
in a variety of ways, including direct manual assignment. In some
cases, we find it convenient to specify the value of the field directly
at a small number of control points, and then determine the rest by
interpolation using Laplacian smoothing. In other cases, we spec-
ify the scalar field values by painting an intensity map on one or
more rendered images of the surface. We then use a least squares
solver to determine the field values that best reproduce the painted
intensities.
(a) (b)
(a) (b)
During subdivision, face points are always placed at face cen- where S(0; 0) = p and where each of x(s; t ), y(s; t ), and z(s; t ) is
troids. The rules used when placing edge and vertex points are once differentiable if the surface is smooth at p. Since scalar fields
determined by examining edge sharpnesses as follows: are subdivided according to the same rules as the x; y, and z coordi-
nates of the control points, the function f (s; t ) must also be smooth.
An edge point corresponding to a smooth edge (i.e, e:s = 0) is
computed using the smooth edge rule (Equation 1).
Acknowledgments
An edge point corresponding to an edge of sharpness e:s >= 1
is computed using the sharp edge rule (Equation 8). The authors would like to thank Ed Catmull for creating the Geri’s
game project, Jan Pinkava for creating Geri and for writing and di-
An edge point corresponding to an edge of sharpness e:s < 1 is recting the film, Karen Dufilho for producing it, Dave Haumann and
computed using a blend between smooth and sharp edge rules: Leo Hourvitz for leading the technical crew, Paul Aichele for build-
specifically, let vsmooth and vsharp be the edge points computed ing Geri’s head, Jason Bickerstaff for modeling most of the rest of
using the smooth and sharp edge rules, respectively. The edge Geri and for Figure 10, and Guido Quaroni for Figure 12. Finally,
point is placed at we’d like to thank the entire crew of Geri’s game for making our
(1 , e s)vsmooth + e svsharp
: : : (11)
work look so good.