
Specifications
You will model something that exemplifies animation employing hierarchical
modeling. For example, a solar system in which moons orbit planets which orbit
the sun, as well as spinning on their own axes. An amusement park ride also
typically employs rotations heaped upon rotations in an attempt to make the
rider sick. In general, you can pick one of the following four types of thing to
animate:
- a solar system
- an amusement park ride
- a hanging mobile
- an animal or person moving in a coordinated way
All data regarding your model (radius of orbit, number of cars, length of bar
or bone, etc.) should be given as parameters that can be easily changed.
Do not hard-code them. In the past, students have read the data in from
a file or declared constants within a global header file. Finally, your
hierarchy should be at least three levels deep (sun, planet, moon or shoulder,
elbow, hand, etc.); however, the data structure for your model must be easily
extendible to an arbitrary hierarchical depth (moons orbiting moons, fingers on
hands, etc.).
The user of your program should be able to control a variety of options
within your simulation using the keyboard. You may choose which keys control
which functions, but make sure they are clearly documented in your README file.
Allow the user the following controls
- start/stop the animation
- show/hide spaceship
- show/hide the arc of movement (orbits, etc)
- move around within the simulation, i.e., zoom in/out, move
left/right/up/down
- reset the view of the simulation
- reset the simulation
- quit the simulation
Extra Credit
There are many parts of the homework that are open ended. You can earn bonus
points with extremely creative or artistic solutions. Make sure that you mention
your assumptions, extra features, and how to run your program in your README
file.
To get you started, here are some extra credit ideas:
- Make your model extremely physically accurate (based on actual data,
balanced properly, physically correct, etc.)
- Use objects read from files instead of the standard GLUT objects
- Use textures and materials on your objects
- Allow the user to zoom in on a specific piece of the model (either by clicking on it
or via the keyboard)
- Create a model within your scene that does not follow the hierarchical
motion (a spaceship, fly, loose change, etc.)
- Allow the user to follow the additional model with the camera as it moves through the
scene
Resources
|