Assignment 2: Inverse Kinematics
Due Date: Feb 15
Grade Value: 20%
Your assignment is to implement two ways of doing inverse kinematics
for an articulated character and create a demonstration that clearly
shows the differences between the two techniques.
- Implement these two IK methods:
Prepare a project report describing what you did and
showing results that demonstrate differences between the two
techniques (e.g. plots of the hand position over time as it
moves to the same IK target using each of the two techniques).
Create an animation using your IK techniques.
Prepare a 5min presentation to discuss your project and show
your results in class.
Cyclic-Coordinate Descent. See these articles
"Oh My God, I Inverted Kine!" and
"Making Kine More Flexible" for an
explanation of this method.
Compute the pseudoinverse of the Jacobian, and use this to compute the joint angles
needed to pose the character's arm. See Rick Parent's "Computer Animation" book,
Section 4.2.4, for details about this method.
- Your code and documentation of how to run it.
- Your report.
- Your animation.
Once again, you may use any implementation you like. If you choose to
work with the ASF/AMC file format and the data in the motion capture
database, the following figure shows the skeleton hierarchy. For
example, you could choose to use IK to move the hand from one place to
another, moving only the wrist, elbow, and shoulder joints.
For this project, you will need to find some way of inverting a
matrix. There are various sources of code online, both for matrix
inversion and SVD, which can be used for safe matrix inversion as
discussed in class. If you are using C++, you may make use of the
safe matrix inversion code in this directory:
Note that you will
need all of the files in this directory in order to compile and use the matrix class.
Here are some ideas for extra credit.
Different weights for different joints:
You can weigh the joints differently so certain ones can be preferred over others.
Discuss how to achieve desired poses this way.
Multiple targets at once:
For example, you can match both the end of the rfingers bone to a target point, and
the end of the rhand bone to another target point.
Create a click-and-drag environment so the user can drag the target points. The
character's pose updates continuously to match the targets.
Compute an optimal pose. For example, you can minimize the sum of the squared change
in joint angle (compared to starting pose).
Anything else that makes posing the character more intuitive!
Last Modified: 01/11/07