Subdivision Surfaces Geri’s Game (1989) : Pixar Animation Studios Nathan Carr, N. Nikolaidis et al
Smooth versus General • Polygon meshes are very general, but hard to model with – In a production context (film, game), creating a dense, accurate mesh requires lots of work – Biggest problem is smoothness • We desire a way to “smooth out” a polygonal mesh – We can model at a coarse level, and automatically fill in the smooth parts • Subdivision surfaces are part of the answer
Subdivision Schemes • Basic idea: Start with something coarse, and refine it into smaller pieces, smoothing along the way – Stop whenever the required smoothness is achieved (usually 3-5 iterations) • Starting mesh is called control mesh
Subdivision Surfaces • Approach Limit Curve Surface through an Iterative Refinement Process. Refinement 1 Refinement 2 Note: Limit Curve/Surface not known! Refinement ∞
Subdivision in 3D • Same approach works in 3D Refinement
Types of Subdivision • Interpolating Schemes – Limit Surfaces/Curves will pass through original set of data points. – Each iteration generates only new vertices, does not move old ones – Curve/Surface interpolates vertices from the previous step • Approximating Schemes – Limit Surface will not necessarily pass through the original set of data points.
Interpolating vs Approximating schemes • Approximating: – Create fair surfaces (smooth bends) – Converge faster – Shape is lowpass filtered, often shrinks! • Potential remedy: use denser and carefully selected control mesh • Interpolating: – Less fairness, might create unnatural undulations – Creates mesh that usually is more “faithful” to the control mesh • Differences almost disappear in meshes with many triangles or smooth
Types of Subdivision • Triangle based • Polygon based • Uniform: same update/subdivision rules for all vertices/edges • Nonuniform: different update/subdivision rules for different vertices/edges (e.g. on boundary edges or irregular vertices) • Stationary: same subdivision rule in all subdivision steps • Non-stationary: different subdivision rule in different subdivision steps
Two phase process (conceptually) • In each subdivision step: – Refinement phase: creates new vertices and connects them to create new, smaller triangles/polygons – Smoothing phase: moves new and perhaps old vertices
A Primer: Chaiken’s Algorithm P 2 1 3 Q 2 Q 3 = + Q P P 0 0 1 P 1 4 4 Q 4 3 1 = + Q 1 Q P P 1 0 1 4 4 Q 5 Q 0 1 3 P 3 = + Q P P P 0 2 1 2 4 4 3 1 = + 1 3 Q P P Apply Iterated = + 3 1 2 Q P P 4 4 + 2 i i i 1 Function 4 4 System 3 1 = + 1 3 Q P P = + + + Q P P 2 i 1 i i 1 4 4 4 2 3 4 4 3 1 = + Q P P 5 2 3 4 4 In each step, points are doubled Limit Curve Corners are cut: lowpass filtering
Subdivision Operations Example • Split an edge, create a new vertex and two new edges – Each edge must be split exactly once – Need to know endpoints of edge to create new vertex • Split a face, creating new edges and new faces based on the old edges and the old and new vertices – Require knowledge of which new edges to use – Require knowledge of new vertex locations
Definitions • Valence of a vertex: the number of neighboring vertices of this vertex (the ones connected by edges) – Number of edges emanating from the vertex • In triangular meshes: • Vertex of valence 6: regular • Valence<>6: irregular, extraordinary 1-ring Rectangular meshes: regular vertices are usually those of valence 4
3D Surfaces Loop Subdivision • Works on triangular meshes • Is an Approximating Scheme • Guaranteed to be smooth everywhere except at extraordinary vertices.
Loop’s scheme (‘87) 1 3 3 Edge 8 8 8 1 8 Vertex β β β β 1 n β − ⎛ ⎞ 2 ⎛ π ⎞ ⎛ ⎞ 1 5 3 2 2 β = ⎜ − + ⎟ ⎜ ⎜ ⎟ ⎟ cos ⎜ ⎟ ⎝ ⎠ ⎝ ⎠ n 8 8 8 n ⎝ ⎠ β β
Loop’s scheme (‘87) • Edge mask: position of new vertex • Vertex mask: new position of the existing vertex • Both are applied on the values of the existing vertices • Weights in each mask sum to one: new/updated point within the neighborhood of the weighted points • C2 continuity (at the limit) except for irregular vertices in the control mesh (its C1 there)
Loop’s scheme - Boundary 1 1 1 3 1 2 2 8 4 8 Edge point Vertex point • The boundary is a cubic B-Spline curve • The curve only depends on the control points on the boundary • Good for connecting 2 meshes • C0 for irregularities near boundary
Loop’s scheme - Summary • Triangles – better use valence 6 (no special rules for irregular vertices: uniform in that respect) • Approximation • Face Split • C2 on regular meshes • Only C1 on extraordinary points • C0 for irregularities near boundary • The scheme generates three directional box Splines at the limit • Closed formulas for vertices and tangents at the limit exist (also for other schemes)
Piecewise smooth subdivision • Subdivision produces smooth continuous surfaces, not always desirable. • How can “sharpness” and creases be controlled in a modeling environment? ANSWER: Define new subdivision rules for “creased” edges and vertices. 1. Tag sharp edges. 2. If an edge is sharp, apply new sharp subdivision rules. 3. Otherwise subdivide with normal rules.
Sharp Edges… 1. Tag Edges as “ sharp ” or “not-sharp” 2. Count number s of sharp edges coming in at a vertex • s = 0 – “ not sharp-smooth” • s=1 dart • s=2 crease • s>2 corner During Subdivision, 3. Near “sharp” edges, use “sharp” subdivision rules, according to the type of vertices. 4. Use normal rules otherwise
Subdivision as Matrices • Subdivision can be expressed as a matrix S mask of weights w . – S mask is very sparse – Never Implement this way! = ˆ – Allows for analysis S P P mask • Curvature ⎡ ⎤ ˆ p ⎡ ⎤ ⎡ ⎤ 0 L w w 0 ⎢ ⎥ p • Limit Surface 00 01 0 ⎢ ⎥ ⎢ ⎥ ˆ p ⎢ ⎥ 1 L w w 0 p ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ = 10 11 1 ˆ p ⎢ ⎥ ⎢ ⎥ 2 M M O ⎢ ⎥ M 0 ⎢ ⎥ ⎢ ⎥ M ⎢ ⎥ ⎢ L ⎥ 0 0 w ⎣ ⎦ ⎣ ⎦ p ⎢ ⎥ nj n ⎣ ˆ ⎦ p 0 S mask Weights Old New Control Points Points
What About Continuity and Curvature.. • Subdivision mask weights w are derived from splines, such as B-Splines. – In many cases subdivision surfaces converge to spline surfaces with C 2 continuity everywhere.** – Too lengthy to cover here, but there is lots of literature. Subdivision Methods for Geometric Design Joe Warren, Henrik Weimer. (2002) **Math works out except at “ Extraordinary Vertices ”. Most Subdivision Schemes have and “ideal” valence for which it can be shown that the limit surface will converge to a spline surface.
Ordinary and Extraordinary Catmull-Clark Subdivision Loop Subdivision Valence 4 Valence 6 •Subdividing a mesh does not add extraordinary vertices. •Subdividing a mesh does not remove extraordinary vertices. How should extraordinary vertices be handled? •Make up rules for extraordinary vertices that keep the surface “smooth”.
Modified Butterfly scheme – Zorin(’96) • Interpolating scheme: vertices of the previous step are maintained. • Connectivity as in Loop’s algorithm: insert a new vertex in each edge, connect new vertices and split each triangle into four new ones
Modified Butterfly scheme – Zorin(’96) c b c Weights : 1 − a : w 2 a a 1 + d d b : 2 w 8 1 − − c : w 16 d : w c b c • Multiply each vertex by its weight and sum them up • w is a control parameter – determines how closely the shape conforms to the original mesh (Moller book: w=0, d vertices do not participate)
Modified Butterfly Scheme –Cont’ e 3 e 2 Extraordinary Vertex e 1 New Edge vertex 1 ring neighborhood e 0 v Weights : ⎧ ⎫ 3 5 1 1 = − − ⎨ ⎬ N 3 : v : , e : , e : , e : 0 1 2 ⎩ ⎭ 4 12 12 12 e N-1 ⎧ ⎫ 3 3 1 e N-3 = − e N-2 ⎨ ⎬ N 4 : v : , e : , e : 0 , e : , e : 0 ⎩ 0 1 2 3 ⎭ 4 8 8 ⎧ ⎫ ⎡ ⎤ π π ⎛ ⎞ ⎛ ⎞ 3 1 1 2 j 1 4 j ≥ + + ⎜ ⎟ ⎜ ⎟ ⎨ ⎬ N 5 : v : , e : ⎢ cos cos ⎥ j ⎝ ⎠ ⎝ ⎠ ⎣ ⎦ ⎩ 4 N 4 N 2 N ⎭ 3. (Valence != 6) X (valence != 6): (can 1. (Valence 6) X (valence 6): prev. case happen only in the first iteration) 2. (Valence 6) X (valence != 6): see compute temporary vertices using formulas on the right (N=valence) formulas above, average to get new vertex. 4. Boundary vertices (see Moller)
Modified Butterfly Scheme - Summary • Triangles – use any valence • Interpolation • Face Split • C1 everywhere • Not C2 even on regular meshes • Non-uniform
Recommend
More recommend