Project 2: Subdivision Surfaces

Assigned: Friday, Friday 25

Due: Friday, November 8 before 5:00 p.m.
Due: Monday, November 11 before 5:00 p.m.


This project is focused on quad-mesh subdivision surfaces. You will implement an interactive program that can read a control polyhedron and display the resulting subdivision surface at varying levels of subdivision. The choice of OpenGL vs. DirectX vs. other APIs is up to you.

I encourage you to browse the subdivision course notes. The "Subdivision Zoo" and implementation chapters will probably be particularly helpful.


For full credit, your project must meet the following requirements:

Visual Display
I expect to see subdivision surfaces. Your program should be able to display the results of variable levels of subdivision at interactive rates. I recommend you begin with simple control polyhedrons (e.g., cube or tetrahedron) before trying more complex surfaces (e.g., cow).

Catmull-Clark Subdivision
You should implement the Catmull-Clark subdivision scheme (see Subdivision Zoo for a reminder of the details of this scheme). Note that repeated subdivision is acceptable. You do not necessarily need to compute the limit positions of vertices.

Barycentric Subdivision
Recall that another approach to subdivision is to: (1) average vertices into dual "face points" and (2) average face points around a vertex to compute a new position. (These are the VF and FV steps described in the Oswald and Schröder paper.) You should implement this scheme, allowing a user-specified number of repetitions of the averaging process. This will give you higher-order surfaces.

You should support user-specified sharp creases for at least one of the above subdivision schemes.

Quality Code
Your code should be efficient and well-written. It should be easy to follow and demonstrate quality design.


You must hand in all the following things:

  1. All source code that you have written.
  2. Any other file necessary to make your software compile.

To actually hand in your project:

  1. Package all your files in a single archive (either .zip or .tar.gz are acceptable).
  2. E-mail this archive to me at prior to the handin deadline. If your project is too large for e-mail, you can contact to make other handin arrangements.

Last modified: 11/06/02 22:11:06 CST