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:
- Inverse kinematics
- 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.
|