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:
-
Start with a OBJ file and process it with mkqstrips application:
> mkqstrips mesh.obj mesh.strips
-
Subdivide the strips with subdiv application
as many times as needed:
> subdiv mesh.strips mesh.strips.1L
mesh.strips.1R
> subdiv mesh.strips.1L
mesh.strips.2LL mesh.strips.2LR
> ...
-
View the result:
-
either single subdivided strips:
> qstripview
(and choose mesh.strips.1L from the
File->Open menu)
-
or catenate files and view whole surface:
> cat mesh.strips.1L mesh.strips.1R
> mesh.strips.1
> qstripview
(and choose mesh.strips.1 from the File->Open
menu)
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
|