Half-edge meshes and Catmull-Clark subdivision
| Links:
In this project, I wrote code for importing .obj meshes and converting them to a half-edge mesh data-structure that supports arbitrary edge splitting, face triangulation, and Catmull-Clark subdivision (mesh smoothing).
A half-edge datastructure encodes mesh adjacency and connectivity, requires constant-size storage, enforces proper topology, and can be traversed starting from any arbitrary component (face, vertex, or half-edge).
The Catmull-Clark subdivision algorithm smoothes a half-edge mesh by inserting new vertices into the mesh and quadrangulating its faces. The result is a B-spline surface with the mesh’s original vertices as control points.