Loop Subdivision

Me and Nisha Jain, developed a C++ implementation of Loop subdivision algorithm[0] for smoothly subdividing meshes, as a part of our CSL859 (Advanced Computer Graphics) assignment in Fall 2010. We were supposed to model a smooth chess pawn using subdivision. The input is a coarse base mesh (see the images below). The coarse mesh can be subsequently tessellated to any required kth level. We implemented an OpenGL viewer for the subdivided model and  on zooming the model up on screen, it continues to look smoother and smoother (with appropriate k). The mesh is stored in the half-winged-edge data structure for algorithmic efficiency. The handling of creases was a task and for that we followed the approach described in [1].

<<coarse mesh image>>
<< subsequent subdivision-1 >>
<< subsequent subdivision-2 >> << subsequent subdivision -3 >>

References

[0] "Smooth Subdivision Surfaces Based on Triangles" - MS Thesis by Charles Loop, University of Utah, 1987.
[1] "Piecewise Smooth Surface Reconstruction", Hoppe .et.al. SIGGRAPH 1994.