CS 679 Term Project

Overview:

For my project I chose to implement the subdivision on generalized quadrilateral strips. My starting point was Eric Hall's Master Thesis "Efficient Subdivision Surface Evaluation" which explored subdivision surfaces techniques on the standard quadstrips. I expanded this idea to generalized quadrilateral strips subdivision and implemented Catmull-Clark subdivision in software.

As an input for my application I chose a subset of OBJ file format. In order to focus on strip subdivision, as opposed to mesh subdivision, I used Kevin Moule's half edge data structure package and I implemented one level of Catmull-Clark subdivision on mesh. This subdivision ensured that all the faces are quadrilaterals.

Next I implemented a simple stripification algorithm to dissect the mesh into generalized strips of quadrilaterals. I also designed a file format that would encode strip information in serialized form. Any file that conforms to this format can be viewed by a simple viewer that I wrote.

Finally, I wrote a quadstrip subdivider that reads the strip file, subdivides, and produces two new longtitudal strips that are written to two separate files.

Procedure:

    > mkqstrips mesh.obj mesh.strips     > subdiv mesh.strips mesh.strips.1L mesh.strips.1R
    > subdiv mesh.strips.1L mesh.strips.2LL mesh.strips.2LR
    > ...

Examples:

 
Three stages of quadstrip subdivision on a pyramid:
1 subdivision
2 subdivisions
3 subdivisions

 
Left and right longtitudal strips produced by subdivision:
Left sub-strip
Right sub-strip

 
Example of longtitudal sub-strips on the ball:
Left sub-strip of the subdivided ball