15-864 Assignment 1: Subdivision Surfaces
Overview
In this assignment you will get experience working with subdivision
algorithms. This will also give you a refresher in writing OpenGL code
in case it's been a while.
Details
-
Read a mesh from an
.obj
file and put it in a
half-edge
data-structure. We will provide C++ code for parsing .obj files, and
some sample triangle-based and quadrilateral-based meshes.
-
Subdivide the mesh using one of the subdivision algorithms discussed in
class; namely, loop scheme,
Catmull-Clark scheme,
Butterfly scheme,
Kobbelt scheme, or
Doo-Sabin scheme (note that some of these schemes require a quadrilateral mesh!).
You should also implement support for semi-sharp features, as in
[DeRose et al., SIGGRAPH 98], and provide a simple example. (To
automatically specify edge sharpness for a complex example, you might
map control mesh edge-flap angles to sharpness values.)
- Display the subdivided mesh.
Preferrably you should use the vertex positions and normals on the limit
surface, e.g., formulae of limit positions and normals for Loop surfaces
are given in the
course notes, or in
[Hoppe et. al 1994].
Provide some capability for switching between
subdivision levels and also for moving the camera around the scene
so we can view the entire mesh (and document this!).
- Turn in your full source code.
Include a
README
file that summarizes what you did, any
special build instructions, and how to control the UI.
Update: Apparently a turn-in directory wasn't set
up for this class yet; I'm working on that now but if you are in a hurry
to turn it in you can email me (cdtwigg at cs.cmu.edu).
.obj files
You can find an obj file reader and some example code that uses it
here. It depends on both
the vl
and boost libraries,
both of which have been
installed
in a convenient location in afs
(the Makefile includes all the appropriate paths; take a look at it for details).
If you are curious about
the .obj file format, Roy Riggs has a great
summary.
Here are some test meshes (more to appear soon):
Also, check out Turbo Squid;
it has a lot of free models. (Warning: Some of these models can
have pretty gross mesh topology, since artists seldom care about the
numerical properties of the meshes they create. Look before you leap and
make sure your error checking code is okay. This will be a problem also
when we are doing physically-based simulation.)
Additional tips
-
Take a look at this page for some useful
library pointers.
-
If you're having trouble logging into the lab machines, please see
this page.
References
-
Tony D. DeRose, Michael Kass, and Tien Truong.
Subdivision Surfaces in Character Animation.
Proceedings of SIGGRAPH 98. pp. 85-94, 1998.
-
Hugues Hoppe, Tony DeRose, Tom Duchamp, Mark Halstead, Hubert Jin, John McDonald, Jean Schweitzer, and Werner Stuetzle.
Piecewise Smooth Surface Reconstruction.
Proceedings of SIGGRAPH 94. pp. 295-302, 1994.
-
Jos Stam.
Exact Evaluation of Catmull-Clark Subdivision Surfaces at Arbitrary Parameter Values.
Proceedings of SIGGRAPH 98. pp. 395-404, 1998.
-
Joe Warren and Henrik Weimer.
Subdivision Methods for Geometric Design: A Constructive Approach
Morgan Kaufmann, 2001.
-
Denis Zorin, Peter Schröder, Tony DeRose, Leif Kobbelt, Adi Levin, and Wim Sweldens.
Subdivision for Modeling and Animation.
SIGGRAPH 2000 Course Notes. 2000.
Questions? Contact Christopher Twigg.