cos426.jpg (39279 bytes)

Computer Graphics, Fall 99

Thomas Funkhouser

Assignment 4: Procedural Modeling

Due: 11/22/99 at 11:59PM



In this assignment you will implement a procedural modeling program that generates seashells. The method we will use is described in the following paper: 
    Deborah R. Fowler, Hans Meinhardt, and Przemyslaw Prusinkiewicz. Modeling seashells. Proceedings of SIGGRAPH '92 (Chicago,Illinois, July 26-31, 1992), In Computer Graphics, 26, 2, (July 1992), ACM SIGGRAPH, New York, pp. 379-387.
The basic idea is to construct a 3D polygonal mesh by sweeping a curve along a helico-spiral. With this relatively simple model, several different types of seashells can be generated by varying a few input parameters. 

What You Have to Do

You should implement a program that generates seashells with the method described in the paper "Modeling Seashells." The inputs to the program will be: The output of the program will be: Your program should first construct a helico-spiral using the procedural method described in Section 2.1 of the paper.  It should represent the generating curve as a Catmull-Rom spline generating curve in the uv plane.  It should construct a 3D triangle mesh by sweeping the generating curve along the helico-spiral, aligned with the helico-spiral's Frenet Frame, as described in Sections 2.3 and 2.4 of the paper, and output the resulting mesh as a .ray file.  Other features can be included as described below.

The assignment is worth 15 points. The following is a list of features that you may implement. The number in parentheses corresponds to how many points it is worth.  Options in bold are mandatory.

By implementing all the required features, you get 12 points. There are many ways to get more points: It is possible to get more than 15 points. However, after 15 points, each point is divided by 2, and after 17 points, each point is divided by 4.

Getting Started

You should use the code available at /u/cs426/4/, on the MECA machines, as a starting point for your assignment. We provide you with several files: The only file you will have to touch is shell.c. There you will find the three functions that you have to implement: After you copy the provided files to your directory, the first thing to do is compile the program. An executable called seashell or seashell.exe will be compiled and linked. To run a simple test, type:
% seashell < shell1.tcl
The shell1.tcl file contains a sample script (for the shell in Figure 1 of "Modeling Seashells"). Note that the file is a Tcl script that is interpreted by the parser created for you in main.c. You don't have to worry about how the parser works at all.

What to Submit

You should submit: The writeup should be a HTML document called assignment4.html which may include other documents or pictures. It should be brief, describing what you have implemented, what works and what doesn't, how you created your .tcl files, how you created the art contest images, and any relevant instructions on how to compile and run your program.

Make sure the source code compiles in the MECA workstations. If it doesn't, you will have to attend to a grading session with a TA, and your grade will suffer.

Always remember the late policy and the collaboration policy.

Last update: 11/10/99 10:17 AM