Inverse Kinematics

Rock climber 140.png

It turns out I have written a lot of Inverse Kinematics solvers using a lot of different IK algorithms.

I didn't even realize how many different algorithms I've tried for solving IK until I started writing this page. The list looks something like this:

  • simple serial analytical IK
  • Cyclic Coordinate Descent (CCD)
    • serial and tree structured
    • with joint limits from the root
    • with child-child joint limits
    • dynamically re-rooted
    • 2 Degree of Freedom (DOF), 3 DOF, and 6 DOF
    • sequential euler angle joint solver
    • numerical quaternion joint solver
  • rigid body dynamics solver
    • augmented coordinates
    • generalized coordinates
      • explicit with springs
      • implicit Featherstone with stiff springs
  • particle-based solver (like SHAKE, RATTLE, Jakobsen)
    • dense constraint approach to branching nodes
    • sparse branching with multiple passes

Yikes! I hope to make each of those a link to a detailed description of the technique and its pros and cons in the future.

For now, here is my 2002 Game Developers Conference lecture, titled My Adventures in Inverse Kinematics. It's a description of the CCD-based approach I took for a while on my indie rock climbing game.

This page was last edited on 31 January 2009, at 01:18.