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:
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).
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.
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.
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:
To actually hand in your project: