This document describes the requirements for Project 1 in CSE 472. The project will be due Wednesday, February 29, 2008 at 11:59pm. Details on how to turn in the project will follow. The project is a group project. Step 5 will begin the project.

|
We will make group assignments this year of size 4 or 5. |
Your assignment is to create a graphical regatta and render it. A regatta is a boat race. You will create a program that has a group of boats that are racing each other around a buoy. Your program must only present the race, it's not a game; you don't need to have any controls during the race. Each member of your team is individually responsible for a boat Your final project must present the boats in a regatta. The group is responsible for ensuring the boats work together and that a reasonable setting for your regatta exists. A minimal setting would be water, some sort of starting line, and a buoy or something else for the boats around. You can create sailboats or power boats. If your group has both, the powerboats should go faster than the sailboats.
Each group member is wholly responsible for one boat. Your boat must have the following characteristics:
You are not responsible for putting people on your boat. Consider your competitors to be ghosts.
Your group must create water. At the very least, your water must be a blue surface with some minimum amount of geometry that looks like the surface of water. You are not required to make your water transparent, though that is pretty easy to do. You are not required to create a wake for the boats. You are not allowed to texture map your water.
You must declare a unit for measurements in your boat. It can be meters, inches, cubits, yards, nose lengths, or whatever you like, but you must be consistent and everything must be to scale for every boat in your group. Consider measuring real objects to design your objects. I've measured real chairs, tables, and windows for this type of project before.
The key for this project is realism. Try to make your images look as real as possible. Do not break the laws of gravity (chairs floating in the air or things that could not possibly stand up).
You must, I repeat, must implement the entire scene as a set of graphical models that are then rendered. Do not simply draw your room using OpenGL calls! See Lecture 5 for ideas on creating your own graphical model. The structure of your graphical model can be based on my examples. Project 2 will require you to render this same model using a different rendering system, so there must be a clear way to separate the model from the rendering.
Notice: If you wish to create some alternative image for this project, I will entertain suggestions. Please email me with a proposal and I will let you know. Some students in the past have suggested that they would like some "artistic latitude".
You must utilize a scene graph for this project. The only code I expect to see in OnGLDraw is any setup of your graphics environment, code that modifies your scene graph to accomplish any animation, and a single call to glDraw on the root of your scene graph. Any projects that are not implemented as a scene graph will be rejected. You must utilize the CGrCamera class to make your scene viewpoint easy to manipulate.
Here are some ground rules about scene graphs that must be adhered to:
When you are done, you will turn in your entire project in a turn-in directory we will specify later. You will:
Make a .zip file with all of these files in it and name the file with the name of your group. If you have to turn in a second time, add a suffix (groupname-2.zip).
|
You will find several example scene graph components in graphics.zip. You are not allowed to use any of those components in your solution. You can look at them as examples of how to implement scene graph components. |
Your animation must run at exactly the same speed no matter what speed the machine is displaying at. You must not base the steps in your animation on the frame rate. Read the system time when you start your animation and for each step compute the animation state based on the elapsed time. As an example, if you want to slide a table across the room 10 feet in 5 seconds, you should slide it 2 feet each section rather than 0.06 feet each time you redraw.
When this project is graded, we will be specifically looking for the following problems that you should avoid:
Excellence points will be assigned to projects to indicate just that, excellence. Up to 3 excellence points will be available on his project.
