CS 523 - Fall 2003
Project 1: Progressive meshes

Due: Thursday, Oct 23; 9 am
(electronic handin)


Progressive meshes, as described in [Hoppe 1996] provide a means for simplifying meshes through a series of simple operations: edge collapses. The order in which the collapses occur provide control over the quality of the result. One effective solution for choosing an order uses quadric error metrics, as described in [Garland 1997].

In this project, you will implement a mesh data structure that supports an edge collapse operation, and implements a progressive mesh using a quadric error metric for deciding the order of edge collapses.

You have the option of using OpenGL in C++ (with GLUT and GLUI), or Java (using GL4Java). These are both set up in the cereal lab.

Requirements

Optional extensions

Here are just some ideas; feel free to add your own!

Skeleton code

There are two versions of skeleton code; C++ and Java. You are welcome to work from either. They are located in the directory:
   ~decarlo/523/proj1
on the cereal machines. See the cereal lab machines page about using that lab.

Note: the Java code that reads in OFF files can't read in floating-point numbers in exponential notation; you'll have to fix it yourself (well, the example meshes on cereal don't have any numbers in this format, so you could always skip it). Sorry! Java programmers should be used to things not quite working right. :) If you do fix it, please send me any improvements you make, so I can change the skeleton code.

Models

Several 3D models in OFF format are on the cereal machines in:
   ~decarlo/523/off

There are many more in the database for the Princeton Shape Benchmark, right here.

Work policy

You're allowed to talk about the assignment with other students in the class, but you can't give away a key idea. Furthermore, all code you write must be your own. No using or viewing code from other sources/people/etc...

The exception is in replacing parts of the skeleton code that are clearly not part of the requirements (i.e. a class that implements 3D vectors, a user interface toolkit, etc...). When in doubt, ask.

Handin

Use the handin program on the cereal lab machines. See the description here.

The name for this assignment is cs523-proj1.

Hand in the following:

Please double check that your assignment does indeed compile on the Linux cereal lab machines before you hand in.


523 Home