EECS 598-1: Winter 2002
Programming Assignment 3: due 3/25/2002 at 11:59pm
In this assignment you are asked to implement the Catmull-Clark
subdivision scheme for closed meshes (no boundaries). A simple mesh
framework is given that implements some bogus subdivision scheme.
Thus all the datastructures are in place.
You will need to implement the following:
- (40pts) Catmull-Clark subdivision as described in section 2 of
Halstead et al. This will involve implementing a procedure that
takes a mesh on some level and produces the mesh on the next level.
Do not worry about the interpolation and fairing portion of the
paper.
- (30pts) A procedure that will produce a limit position for every
point -- add an additional field into VertexT and store it in there.
Add an option to the rendering procedure so that it will render not
the control points of the current level but their limiting positions.
See Appendix A of Halstead et al. for the limit mask (it is denoted as
l^1 in the paper).
- (30pts) A procedure that will produce a normal vector for every
point -- store it in the normal field of VertexT.
The smooth shading should work properly after you've done this.
See Appendix A of Halstead et al. for the normal masks (they are denoted as
l^2 and l^3 in the paper).
The archive(code and data):
pa3.zip
After compiling run the code: Debug/pa3.exe 2 data/almost.obj
A number of OBJ files on which your code will be tested are
included in the archive.
Updated 3/14: Explanatory supplement
Papers:
Misc
My code may have some bugs. Please let me know as soon as you find
any.
The provided
code should compile under Visual C++ 6.0. With a proper makefile it
should also compile on other platforms. Do not forget to check if
glut.h file is in the standard include/GL folder. If it is not please
download GLUT package from the web at www.xmission.com/~nate/glut.html