| |
MP2: Animating Articulated Objects
Assigned: Wednesday, March 8, 2006
Due: 5:00pm Wednesday, April 5, 2006
Goals
In the previous project, you have rendered a 3D terrain onto
the screen. You should be able to easily generalize this code to
generate arbitrary objects consisting of polygon meshes with shading
and texture mapping. You have also implemented code to move the camera
in various ways. In this project, you will be adding more dynamism by
putting objects into motion.
The primary things you should learn during this project are:
- How to draw and animate hierarchical articulated figures.
- How to produce key-framed animation.
- How to perform multipass rendering.
Getting Started
You may use the code you wrote for MP1. You do not necessarily need to
preserve all features of MP2. For instance, you can restrict camera
motion to always be parallel to some ground plane, as in a walk-through.
If you have trouble with any part of the project preparation,
please see an instructor or TA during their
office hours. Alternatively, post a message on the course newsgroup
(news.cs.uiuc.edu/class.cs418).
We usually check the newsgroup regularly.
Sample Hierarchical Model and Key Frames
To help you in preparing an interesting project, we are providing you with
a sample hierarchical articulated model and a number of sample key frames.
These files were converted from a sequence in the
CMU Motion Capture Database.
You are free to use all, some, or none of them. The hierarchical model and
the key frames are defined using two different ASF and AMCM formats.
We are also providing you with a starter kit
with a sample code for reading the ASF format. The sample data files
are in the same kit.
The provided key frames can be viewed by downloading the viewer kit
from the following link.
Requirements
Your project will consist of an animated scene. Your project
must implement the following required features. When animation
is turned on in the menu, your animation should start running. It
should last for at least 10 seconds, and continue looping until
animation is turned off.
- [30 points] Hierarchical model display
Draw a hierarchically defined articulated figure, such as a human character
or a creature, using hierarchical transformations and a matrix stack.
You are not required to use the provided hierarchical model.
Your hierarchy should have at least 3 levels of relative motion
(e.g., (1) shoulder (2) elbow and (3) wrist rotation).
You do not need to use polygon meshes. Instead, modeling with simple
primitives, such as cylinders, spheres and ellipsoids, is acceptable.
- [35 points] Key frame animation
Create animations for your articulated figure using key-framing.
Generate intermediate frames between every pair of consecutive
key frames using linear quaternion interpolation. You need to
interpolate all the 3D joint rotations in the hierarchical model.
Again, it is your choice to use the provided key frames.
You should display at least two animations simultaneously.
Each of the animations may use different portions of the provided data.
Your program should have a mechanism to control the frame rate.
For example, if the user sets the frame rate to be 25 fps,
your program should actually display 25fps on a sufficiently fast
machine. It is OK though to display fewer than 25fps on a slow machine.
- [30 points] Texture Shading
Implement texture shading as described in class for the Phong illumination
model and at least one other model. You should demonstrate texture
shading on a non-trivial mesh object (i.e., single polygons, spheres,
and cylinders don't count).
You should precompute the texture map, but update the texture
coordinates of the vertices on the fly so that the specular component
of the Phong model changes with the camera position.
Silhouette rendering is NOT required.
In addition to the above, 1-unit graduate students must also
complete the following requirement:
- [25 points] Spline Interpolation
Create key-frame animations for at least two rigid objects.
The key frames define the position of the rigid objects.
Interpolate key frames using cubic splines, either Catmull-Rom or
Hermite splines. You should naturally assume the number of key frames
match those required by the spline you're using (for example, at least
4 points for Catmull-Rom; Hermite requires at least two points, with
tangent vectors between two consecutive points). You may not use any of
the GLU functions supporting splines to implement spline interpolation.
The final components of your grade will be the following.
Notice that this brings to total number of points for this project to 125 for
1-unit graduate students and 100 for everyone else.
[5 points] Clean Coding
While we won't demand anything pristine and breath-takingly well-written,
we do expect you to write reasonable clear and concise code.
Tips and hints
- Check back here often. Commonly asked questions on the
newsgroup may be posted here in the future.
Handing in your Project
Important: Follow all handin instructions
carefully. You may lose most or all points for failure
to follow these instructions or if you do not hand in all required files.
You must turn in the following files:
- All source, header and Make files (e.g., *.cxx, *.h)
whether or not you have modified them.
- A ReadMe file named README.txt.
It should contain the following information:
- Your name and NetID
- Whether you are an undergrad, 0.75 unit grad, or 1
unit grad student.
- If you used a different GUI kit, instructions on
setting it up on the machines in the labs. (Yes, your project
must be able to run on them)
- Clearly document how to use each feature you
implemented.
- Any other files (e.g., libraries, data files) needed to
compile and run your program. If you've used the provided libraries,
do not turn those in.
To actually turn in your finished project, follow the hand-in instructions that we have provided.
We will allow late hand-ins on this and future projects,
but with reductions described below. To request extensions because of
individual reasons, you should still handin your project as soon as possible
instead of waiting for our response to your request.
Grading
Code-sharing, working together with peers, and copying code
from other sources are only allowed under restricted conditions. Make sure
you read the code-sharing policy for details.
Significant reductions will be imposed for projects that do
not compile. If a project is handed in late, there will be a 20-point
reduction (25 points for 1-unit grads) for every 24-hour period after the deadline.
|
|