CS 395T - Computer Animation for Synthetic Characters

Fall 2005


Homework 1

Due date: September  29th (Thursday)

Simple key framing

In this assignment, you will cerate a simple key-framing system. Your system must allow the user to pose a 2D articulated character at at least two time instances and then interpolate between these two configurations to generate a motion. Your system must incorporate inverse kinematics to allow the user to pose the character intuitively. 

First you should implement an inverse kinematics system. Your system should assume there is an articulated body made up of  "bones" that look like this:

Note that each bone has a local coordinate system. You should maintain the transformations that relate a bone to its parent (A translation and a rotation). The lengths of these bones must be fixed. Therefore there is only one degree of freedom for each bone: the relative angle to its parent (the rotation amount). If a bone does not have a parent (i.e., it is the root of the kinematic tree), then the angle defines that bones global orientation. The bones without any parent also have two additional degrees of freedom: the (x,y) position of the local coordinate frame in the global coordinate frame.

Your inverse kinematics system should allow the user to click at the joints and drag them using a mouse. The figure below shows the joints that can be clicked and dragged as red circles:

Your system should fix the position of the root and the current position of the clicked joint and perform inverse kinematics to solve for the remaining degrees of freedom so that these two constraints are satisfied. Your system must feature a humanoid skeleton such as the one above. You figure must have all the bones in the figure above.

The second component of this assignment is creating an animation between key-frames that the user prepares using your inverse kinematics system. You should allow the user specify at least two key-frames such as those below:

Your system should then be able to interpolate the these two configurations and display the resulting animation in real-time. Try to minimize your user interface: you can hard code the times of key-frames and the skeleton structure of your character. The crucial  components of this assignment that you will be graded on are:

  1. Inverse kinematics
  2. Key frame interpolation
As long as you allow the user to edit the configuration of the character using inverse kinematics and display an interpolated animation, you get the full grade.

This is also a very open ended assignment. It is worth %10 of your grade which means 10 points out of 100 that will be available in this class. You can implement the following optional features to get more points that will contribute to your final grade:
  • 3D version (2 points)
  • Joint limits for inverse kinematics (1 point)
  • Numerical robustness for impossible to meet configurations for inverse kinematics (1 point)
  • Secondary objectives such as closenesss to a rest pose for inverse kinematics (1 point)
  • Multiple constraints for inverse kinematics (i.e., fixing the positions of both hands) (1 point)
  • Ability to edit/pose multiple key frames (1 point)
  • Any additional features that you come up with.

Submission procedure

You should implement your system in C/C++ on Unix or Windows. You can use tools such as FLTK, OpenGL, a vector/matrix library etc. I should be able to compile your source code on the departmental instructional computers.