510 likes | 550 Views
CS284-CAGD. Subdivision Surfaces in Character Animation. Tony DeRose Michael Kass Tien Truong Pixar Animation Studios. Balaji Kannan Chen Shen. Outline. Motivation. Show Geri’s game. Novelties. Modeling: semi-sharp creases. Animation: support for cloth dynamics. Energy functional.
E N D
CS284-CAGD Subdivision Surfaces in Character Animation Tony DeRose Michael Kass Tien Truong Pixar Animation Studios Balaji Kannan Chen Shen
Outline • Motivation. • Show Geri’s game. • Novelties. • Modeling: semi-sharp creases. • Animation: support for cloth dynamics. • Energy functional. • Collisions. • Rendering: Parametric texture mapping & implementation issues. • Conclusion.
Outline • Motivation. • Show Geri’s game. • Novelties. • Modeling: semi-sharp creases. • Animation: support for cloth dynamics. • Energy functional. • Collisions. • Rendering: Parametric texture mapping & implementation issues. • Conclusion.
Motivation • Trimming NURBS is expensive and prone to numerical error.
Motivation • Trimmed NURBS is difficult to maintain smoothness.
Motivation • Subdivision surfaces are flexible...
Motivation • ...and smooth
Geri’s Game • Improve tools for human character animation • Skin, hair & cloth • Opportunity to: • Experiment with subdivision surfaces • Experiment with cloth dynamics • Experiment with parametric texture mapping
Outline • Motivation • Show Geri’s Game • Novelties • Modeling: Semi-sharp creases • Animation: Support for cloth dynamics • Energy functional • Collisions • Rendering: Parametric texture mapping & implementation issues. • Conclusion.
Outline • Motivation • Show Geri’s Game • Novelties • Modeling: Semi-sharp creases • Animation: Support for cloth dynamics • Energy functional • Collisions • Rendering: Parametric texture mapping & implementation issues. • Conclusion.
Modeling Blends and Fillets • Infinitely sharp creases • Helpful to model piecewise-smooth surfaces • But real-world surfaces not really infinitely sharp • Semi-sharp creases give smoothly varying normals across crease. So surface does not tear if displaced in direction of normal
Modeling Blends contd… • Use a generalized Catmull-Clark algorithm = Hybrid subdivision • Better than developing individual subdivision rules using weights of creases: • Will have to develop rules for lots of special cases • The symmetry that bestows invariance under cyclic re-indexing is lost
Rules using Hoppe’s algorithm for Catmull-Clark surfaces… • Dart and smooth vertices are normal Catmull-Clark vertex points • Corner vertices stay where they are • Crease vertex mask shown below 6 1 1
Hybrid Subdivision concepts… • Tag edges with some sharpness value(s) • Can be integer constant or otherwise • Tells how many times Hoppe’s algorithm is to be applied before smoothing (Catmull-Clark) • Subdivided edges one level finer than parent • Integral sharpness = s • Subdivide using Hoppe’s sharp rules s times • Use smooth Catmull-Clark rules after this
Hybrid subdivision contd… • Non-integral sharpness = s: si<s<si+1 • Use sharp rules si times and smooth rule once more to get vertex set V1 • Use sharp rules si+1 times to get vertex set V2 • Linearly interpolate between V1 and V2 • Use smooth rules to the limit
Example of non-integral sharpness… si Smoothing Linear interpolation Si+1
Generalized rules (hybrid subdivision) • Face points are same as from Catmull-Clark subdivision • Edge points • Smooth edge- same as from Catmull-Clark • Crease with sharpness > 1- use midpoint as edge point • Edge with sharpness between 0 and 1- linear blend of above two
Generalized rules contd… • Vertex points • Smooth/Dart vertex- use Catmull-Clark rules for vertex points • Corner vertices- vertex points stay at same place as vertex • Crease vertices • Average sharpness >= 1- use crease vertex rule • Otherwise, take linear blend of crease vertex rule and smooth vertex rule • Blooper in paper- says use linear blend of crease vertex rule and corner vertex rule for above case
Sharpness of subdivided edges… • Use Chaikin’s corner-cutting algorithm at 3:1 (or 1:3) ratio: • eab.s = max(0, 0.75*eb.s + 0.25*ea.s-1) eb ebc eab ec ea
Outline • Motivation • Show Geri’s Game • Novelties • Modeling: Semi-sharp creases • Animation: Support for cloth dynamics • Energy functional • Collisions • Rendering: Parametric texture mapping & implementation issues. • Conclusion.
Cloth Dynamics • Simulated physics for clothing animation • Subdivision surfaces for kinematics and dynamic objects • Energy functional • Surface integral ---- finite-element approaches • Discrete sum of terms ---- finite-difference methods
Quad Meshes for Cloth • Catmull-Clark ---- regular quadrilateral grids. • Warp & weft directions given locally. • “Threads” have meaning.
Energy Functional • Avoid stretch • Springs along mesh edges • Avoid skew • Springs along mesh diagonals • Avoid bending • Virtual threads
Avoid Stretch • Little stretch long the warp and weft directions. • Strong fixed rest-length spring along each edge of the mesh. • Energy term.
Avoid Skew • Diagonal springs resist skew. • Problems with diagonal springs. • E = k E(S1) E(S2). • Energy minimized when either spring is at its rest length. • Free to bend along either diagonal.
Avoid bending Virtual thread • Virtual threads. • Anti-bending energy.
Outline • Motivation • Show Geri’s Game • Novelties • Modeling: Semi-sharp creases • Animation: Support for cloth dynamics • Energy functional • Collisions • Rendering: Parametric texture mapping & implementation issues. • Conclusion.
Collision detection • Simplest approach is O(N2) algorithm • Use of some elegant spatial data structures can help make it O(N*log(N)) • Use a 2-D surface-based data structure- in some sense, a quadtree analog • No parameter plane to recurse on for hierarchy coarser than initial control mesh. So, • Iteratively remove edges from control mesh and build up hierarchy (un-subdividing) • Stop when only one super-face is left • Maintain reasonable balance in hierarchy
Collision detection contd… • Balancing hierarchy • Because, if edges in newly generated super-face are removed, imbalance occurs • So, if an edge has been removed, remove all edges of corresponding super-face from candidate list • How do we detect collisions? • Build bounding boxes for patches in hierarchy in bottom-up fashion
Collision detection contd… • Start at root to check bounding box intersection with object • Recurse down hierarchy if intersection occurs • Control vertex positions change as subdivision progresses • So all bounding boxes in hierarchy should be updated in bottom-up fashion • Efficient way-each leaf knows which vertices constructed its bounding box
Outline • Motivation • Show Geri’s Game • Novelties • Modeling: Semi-sharp creases • Animation: Support for cloth dynamics • Energy functional • Collisions • Rendering: Parametric texture mapping & implementation issues. • Conclusion.
Texture Mapping • Four principal methods: • Parametric texture mapping. • Not easy for subdivision surface. • Procedural texture. • Not easy for subdivision surface. • 3D painting. • Straightforward for subdivision surface. • Solid texture. • Straightforward for subdivision surface.
For Polygonal Models • Assign texture coordinates to vertexes. • Linear or bilinear interpolation for triangles and quadrilaterals. • Split for other faces. • Not differentiable across edges.
For Subdivision Surface • Texture coordinates (s,t) assigned to the control vertices. • Subdivide using the same rules. • Totally, 5D space (x,y,z,s,t).
Scalar Field • For texture coordinates. • For arbitrary parameters. • Seams for Geri’s jackets. • Geri’s nostril and ear cavities. • Physical parameters in cloth simulator. • Scalar field assignment. • Manually. • Interpolation using Laplacian smoothing. • Painting on rendered images and use a least squares solver.
Outline • Motivation. • Show Geri’s game. • Novelties. • Modeling: semi-sharp creases. • Animation: support for cloth dynamics. • Energy functional. • Collisions. • Rendering: Parametric texture mapping & implementation issues. • Conclusion.
Implementation issues in rendering • Renderman requires all primitives to be convertible to grids of micro-polygons • So each primitive should be • Able to split into sub-patches • Able to bound itself for culling • Able to dice itself into micro-polygons • BOUNDING patches • Each patch has a control mesh • Take bounding box of control mesh (convex hull property of Catmull-Clark surfaces)
Implementation contd…. • Check if primitive is diceable • Not diceable if splitting produces • Lots of micro-polygons • Micro-polygons vary hugely in size • If not diceable, subdivide each patch to get 4 new sub-patch primitives • Check whether sub-patches are diceable iteratively
Catmull-Clark limit properties and rendering… • Bi-cubic B-Splines are the limit surfaces except for extraordinary points • So a number of sub-patches are identified with B-Spline patches • Advantages • Fixed memory allocation for a patch- no need to store vertex connectivity for B-Spline patch • Ability to be split independently in either parametric direction reduces splitting time
Catmull-Clark limit contd… • Efficient forward-differencing algorithms for dicing B-Spline patches available
Outline • Motivation. • Show Geri’s game. • Novelties. • Modeling: semi-sharp creases. • Animation: support for cloth dynamics. • Energy functional. • Collisions. • Rendering: Parametric texture mapping & implementation issues. • Conclusion.
Conclusions • Compare subdivision and NURBS • NURBS • Prevent local refinement • Care should be taken to hide seams between patches • Subdivision surfaces • Overcome some apparent (inherent) disadvantages by using semi-sharp creases and scalar fields for shading