The Subdivision Surface Library

SDLib™ is an object oriented, subdivision surface library to easily model complex shapes with hierarchical Catmull-Clark surfaces. Subdivision surfaces provide smooth surfaces with C2 continuity well suited for many modeling applications. Subdivision surface can easily be converted to and from polygonal representations.

Key Features

  • Code distribution of C++ objects and methods to create and modify surfaces, faces, edges, and vertices.

  • Convert from polygon representation to subdivision surfaces and from subdivision surfaces to a NURBS representation compatible with SMLib where the NURBS patches are exactly equivalent to the subdivision surface nearly everywhere.

  • Tessellate subdivision surfaces to a polygon representation.

  • Continuity – Creation of smooth C2 surfaces.

  • Surface modification – Control point manipulation at any level of the hierarchy: fine, medium, coarse.

  • Evaluate for crease or continuity information at edges or points Includes iterators to evaluate positions, normals, or derivatives at any point on the subdivision surface.

Summary of Functions

Subdivision surface creation from a polygonal mesh:
• A polygonal representation is input to give the basic topological layout of the subdivision surface.
• Any manifold mesh may be used, giving a wide range of shape possibilities.
• Resulting subdivision surface contains faces, edges, vertices at every level.

Subdivision surface operations:
• Level iterators for faces, edges, and vertices.
• Counting of faces, edges and vertices at any level.
• Subdivide entire level to get a finer level.
• Compute coarser-level influence on all vertices at this level.

Face operations:
• Query adjacent face, vertex, edge at the same level.
• Query parent faces and finer-level features.
• Boundary queries.
• Compute position or normal at a (u,v) parameter within this face.

Edge operations:
• Access adjacent face, vertex, edge.
• Access hierarchy of sub edges.
• Boundary queries.

Vertex operations:
• Get and set CV position at vertices.
• Compute position where this vertex maps on the surface.
• Compute normal at this vertex on the surface.
• Crease management for the vertex: set and query crease information.

• Limit positions at any level may be output as a watertight polygonal mesh.
• Surface CVs at any level may be output as a connected polygonal mesh. This allows a means for topological modification at finer levels in the surface.

NURBS output:
• A closely approximating NURBS representation of the subdivision surface may be produced.
• The NURBS representation is compatible with SMLib.