Academic / Geometric modelingAcademic project2024–2025

Geometric Modeling

C++ 3D mesh-processing project covering half-edge structures, triangulation, mesh simplification and Catmull-Clark subdivision.

108-face dolphin mesh shown as a wireframe around its 6,464-face surface smoothed by Catmull-Clark subdivision.

108-face dolphin mesh shown as a wireframe around its 6,464-face surface smoothed by Catmull-Clark subdivision.

Technologies

  • C++
  • OpenGL
  • CMake
  • Half-edge
  • Catmull-Clark

What I built

  • Mesh file reading
  • Normal computation
  • Silhouette extraction
  • Triangulation
  • Half-edge data structure
  • Surface of revolution
  • Shortest-edge simplification
  • Catmull-Clark subdivision

Context

An academic C++ and OpenGL project focused on mesh topology, geometric operations and interactive visualization.

Problem

Mesh editing algorithms need explicit adjacency information between vertices, edges and faces. A half-edge structure provides the traversal needed for local topology operations.

Implementation

The project covers mesh file reading, normal computation, silhouette extraction, triangulation, half-edge tests, a surface of revolution, shortest-edge simplification and Catmull-Clark subdivision.

Technical architecture

Vertices, faces and directed half-edges store mesh topology. CMake builds the C++ application, while OpenGL renders faces, vertices, normals, edges and silhouettes for inspection.

Key engineering decisions

Simplification tests shorter edges first and resolves each operation to a valid collapse. Catmull-Clark subdivision treats face, edge and vertex updates as separate topology steps before rebuilding connectivity.

Challenges

Edge collapse and subdivision must preserve consistent twin, next and previous links. The source includes topology and normal checks to make those structural errors visible.

What I learned

The implementation shows how the choice of topology structure affects algorithm correctness, local mesh traversal and the resulting visualization.

Visual evidence

Cube subdivided three times with Catmull-Clark: 6, 24, 96 then 384 faces.
Gear at four Catmull-Clark subdivision levels: 34, 192, 768 then 3,072 faces.
Wireframe apple mesh with 2,814 faces loaded into a half-edge structure with 8,442 half-edges.