510 likes | 550 Views
Learn about the use of subdivision surfaces in character animation, including modeling with semi-sharp creases, support for cloth dynamics in animation, energy functional for realistic movements, collision handling, and rendering techniques. Discover the motivation behind using subdivision surfaces and the advantages they offer in improving tools for human character animation.
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