CS 418 Lectures Assignments Exams Links

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.