CS 551/651-2: Advanced Computer Graphics
Assignment #3
Goal: Experiment with different techniques to simplify polygonal objects
Assigned: Tuesday, March 27, 2001
Due: Thursday, April 5, 2001
Relevant reading /software:
Synopsis: You will write a filter to read in an object file in the .ply 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 on fidelity and speed; doing very well in either category can get you a good grade. Accuracy in degree of reduction (i.e., how closely the number of polygons in the simplification matches the specified number of polygons) matters—within 10% of the simplified model size is close enough for full credit). Your assignment must compile and run on an SGI. I will compile all assignments on sgi-01.unixlab.virginia.edu.
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 I will try this.
Grading: The usual 10-point scale. I will publish a few sample simplifications that you can look at in METRO to evaluate the quality of your own work. You can get a good grade (8 or 9) by achieving high fidelity, or extreme speed (while still producing an actual LOD!). The fastest and highest fidelity simplifications, as measured by METRO at some set number of polygons, get automatic 10s. If your program ever crashes on my examples, that will hurt your grade, so write robust code.
Turning in the assignment: The usual. Send me a zipped directory containing your code, a readme, and a couple of sample simplifications.
Advice:
Honor Code: The usual rules. 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.