120 likes | 294 Views
Subdivision Surfaces. Ref: Subdivision Surfaces in Character Animation, DeRose et. al, SIGGRAPH98. Complex shapes used in character animation head, hand, clothing, etc. Traditionally, (trimmed) NURBS Alias/Wavefront, SoftImage severe topological restrictions
E N D
Subdivision Surfaces Ref: Subdivision Surfaces in Character Animation, DeRose et. al, SIGGRAPH98
Complex shapes used in character animation head, hand, clothing, etc. Traditionally, (trimmed) NURBS Alias/Wavefront, SoftImage severe topological restrictions Pixar introduces subdivision surfaces in production environment Geri’s game Introduction
topologically equivalent to a sheet trimming is expensive; prone to numerical error difficult to maintain smoothness across boundary manual labor to hide the seams even more so when model animates Bad things about trimmed NURBS
On the contrary, subdivision surface… • do not require trimming • smoothness of model is automatically guaranteed • support arbitrary topology • construct a surface from an arbitrary polyhedron by repeatedly subdividing each of the faces
one of the first subdivision schemes based on quadrilateral (triangle-based Loop surface) control mesh M(0) M(1), M(2), … limit surface can be shown to be tangent plane smooth Catmull-Clark Surface
Subdivision Rules • valence (of a vertex) n : # of incident edges • vertex pt, edge pt, face pt: • each vertex of M(i+1) can be associated with v/e/f of M(i) • fpt: centroid of face • ept: • vpt:
Implementation • Require basic topological data structure • winged edge is sufficient • Each subdivision step • geometric computation (as in previous slide) • topological update • new vertices (fpt, ept) • new edges • new faces
Creating Sharp Features (creases) • subdivision rules need to be modified • ept • vpt w/ 1 crease: smooth formula • vpt w/ 2 creases • vpt w/ 3+ creases
Task • implement subdivision surface in OpenGL • design your own data structure • design a file format for inputting M0 • use picking and keyboard callback function to edit control mesh M0 • slider to control subdivision steps; able to modify mesh in each step • mark (infinitely) sharp edges