CS 551/651: Advanced Computer Graphics

Assignment #3

Goal: Experiment with different techniques to simplify polygonal objects

Assigned: Thursday, April 8, 1999

Due: Thursday, April 22, 1999

Relevant reading /software:

Synopsis: You will write a filter to read in an object file in the .poly format (described on the web page) and write out a simplified version with fewer polygons. Your program should be named simplify and should take an argument –t <num>, where num is the number of polygons desired. You can use any algorithm you like to simplify the model, but be aware that some algorithms make it easier to choose the degree of reduction than others do. Your program will be graded, in order of importance, on fidelity, speed, and accuracy in degree of reduction (i.e., how closely the number of polygons in the simplification matches the specified number of polygons—within 1% of the original model size is close enough for full credit).

Example usage: Your program should be a filter, reading from stdin and writing to stdout:

% simplify –t 1000 < object.poly > simplification.poly

Note that this also allows cascading simplifications by piping the output of one simplify process into the input of another:

 

% simplify –t 1000 < object.poly | simplify –t 100 > simplification.poly

You can be sure that we will try this.

Grading: The usual 10-point scale. An assignment satisfying the basic requirements will receive 8 points. An assignment implementing "extras" such as additional algorithms (specified with command-line flags), or exhibiting particularly good fidelity or speed, can get up to 9 points. The single best assignment will get 10 points. Note that an assignment which breaks (core dumps, outputs nonsensical simplifications, etc.) on any of our test cases may lose points, so writing robust code matters.

 

Turning in the assignment: Before class starts on Thursday, April 22, you should:

Advice:

Honor Code: Public-domain code is available on the web for many simplification algorithms. You are specifically forbidden to use code from an external source for this assignment. While I encourage you to read the papers, study the presentations, and generally use the resources of the web, I want all code you write to be your own. See me if you have any questions about how this applies.