As my cs779 project, I implemented some variations of the Loop subdivision scheme for triangular meshes.
Even though the subdivision framework is intuitive and seems easy, a number of queries need to be performed fast at each step. This requires some indexing mechanisms.
There are many data structures available (half edge or winged edge), but for each of them there is a trade-off in terms of efficiency and generality.
I opted for a data structure that is more general and less efficient. However, since the subdivision algorithm is exponential in the number of faces and vertices, efficiency should be considered carefully.
The triangular mesh consists of two arrays: a vertex array and a face array. Vertices of each face are indexed in the vertex array and conversely the faces adjacent to each vertex are indexed in the face array. Therefore, we can perform most types of query efficiently.
Load up obj files and .m files |
|
The “m” files are the files found at Hughes Hoppe web-site |
Editing functionality |
Create new faces and new points. Move points. |
Cannot delete points, but I can delete faces |
Editing functionality |
Reorient edges or faces |
|
Editing functionality |
Mark edges as sharp and vertices as corners |
|
Simple average subdivision scheme |
The averaging algorithm presented in Warren subdivision book |
I used his evaluation algorithm which has interesting behaviour on non-manifolds. |
Loop subdivision |
Basic Loop subdivision |
|
Preserve sharp features |
|
|
Preserve corner vertices |
|
|
Boundary Lock |
Forces the subdivided surface to match the boundary |
Useful for C0 continuity on merging operations. |
Detection of corner vertices and boundary edges |
|
|
Sharp edge detection based on Dihedral angle |
|
|
Subdivision animation |
Animated transition from the initial mesh to the subdivided surface |
|
Saving functionality |
It saves pictures and obj models |
|
Capturing functionality |
It saves the animation as a sequence of frames |
|
Extrude functionality |
|
Hard constraint on the order of vertices |
Morphing |
Morph the subdivided surfaces assuming that the initial meshes are isomorphic |
Linear and cubic interpolation |
|
|
|
|
|
|
|
|
|
|
|
|