University of Wisconsin Computer Sciences Header Map (repeated with 
textual links if page includes departmental footer) Useful Resources Research at UW-Madison CS Dept UW-Madison CS Undergraduate Program UW-Madison CS Graduate Program UW-Madison CS People Useful Information Current Seminars in the CS Department Search Our Site UW-Madison CS Computer Systems Laboratory UW-Madison Computer Sciences Department Home Page UW-Madison Home Page

CS559 Spring 2002: Project 3

An Amusement Park

Due Date: 5pm Friday May 10

Project Source Code

The Basic Task

This project is all about modeling, and gaining experience with many more of the features of OpenGL. The starting point is a small virtual space that consists of a grassy square with a roller-coaster track running around it. A carriage, just a box for now, runs around the track. Your task is to model and render the carriages and other objects in the environment.

Like project 1, this project defines a set of sub-goals with points awarded for each goal. Unlike project 1, the goals are far more loosely defined, so there is scope to try interesting things to get all the points available.

You may work in pairs. If you choose to work in a pair, then each member of the pair will get half of the earned points. Once again the maximum number of points, per person, is 100, but there are well over 200 points available.

The Tasks

Each task requires modeling some objects using one of the techniques described in class. You will score 30 points for the first object of each type, and 5 additional points for each additional object of that type, up to a maximum of 45 points for any one type. For instance, if you create a texture mapped polygonal ticket booth, and a texture-mapped polygonal roller-coaster carriage, and extrude the roller-coaster tracks, then you get 30 + 5 + 30 = 65 points.

The individual tasks are:

Texture Mapped Polygons
Add texture mapped polygon objects to the environment. Each "object" for grading purposes consists of at least 5 polygons all texture mapped. Different objects require different maps.
Hierarchical Animated Model
Add a hierarchical, animated model. Something like a ferris wheel is a good choice, but there are lots of rides that would do.
Parametric Instancing
Create a class of parametric objects and instantiate multiple instances with different parameters. The objects must differ by more than a transformation.
Sweep Objects
Add an extruded object or a surface of revolution. The natural choice is extruded tracks for the roller coaster.
Bezier Surfaces
Add something made of Bezier patches to the environment. A good possibility is the roller-coaster carriage. You are not allowed to cheat and use the OpenGL Bezier functions, and you must have multiple patches joined with C1 continuity.
Subdivision surfaces
Add some hills, or something else (a garbage heap) modeled as a subdivision surface. Fractal terrain counts as a subdivision scheme. Terrain must be texture mapped to get all the points. To help, the code for the subdivision sphere is available here.
Change the Navigation System
The navigation system now is not great. Change it to something better. To get all the points, you must have a mode where the viewer rides the roller-coaster.

Multiple objects modeled using the same technique must be significantly different in order to gain the additional points. Objects that differ only by a sequence of transformations are not different, nor are parameterized objects that only differ by the parameter. Hierarchical objects with the same hierarchy and animation are not different.

The Program Skeleton

The program skeleton is an extensive piece of software. Here are some notes on its operation:

The Interface

The existing simple interface uses three mouse buttons. Moving the mouse with the left button pushed rotates the world about a fixed point - the look-at point. Moving the mouse up or down with the middle button pushed changes the distance from the viewer to the look-at point. Moving the mouse with the right button pushed translates the world - by moving the look-at point in the ground plane. It's not the best, but it is relatively simple.

Hints and Suggestions

Back to CS559 Home Page