Game Development Community

Blender's IK?

by Daniel Buckmaster · in Artist Corner · 11/08/2007 (7:42 am) · 4 replies

I'm just throwing this out there to see if anyone knows. What IK algorithm does Blender use? I'm working on integrating some sort of limited IK into Torque, and the first step is to find an algorithm. Blender's works well, and it was the first source I thought of. I've searched around, but all I can find on the net is mostly too academic to provide me with anything useful. Solid examples for the win...

About the author

Studying mechatronic engineering and computer science at the University of Sydney. Game development is probably my most time-consuming hobby!


#1
11/08/2007 (7:56 am)
I'm not sure. You could look at Blender's IK source code and see if there are documentation references to the academic sources and algorithmic whitepapers they used. Of course, you can't use the source code itself since it's under the GPL. But you can see if they listed their references.
#2
11/08/2007 (8:15 am)
@Daniel, search for and read up on "cyclic co-ordinate descent". It's quite a good, fast algorithm suitable for games.
#3
11/10/2007 (8:38 am)
David - yeah, I thought of that just after posting. It wasn't as useful as I thought it might be :P. Also, I found a comment in the IK solver file's header saying that the algorithm probably wasn't suitable for real-time.
Ross - thanks for the tip! Just did some quick hunting around, and found a really good source. If you check the private dev forum, yo can see I refactoed my original idea of making full IK to just making a simple three-joint triangle solver for an arm. However, I may just broaden that back out now...
#4
06/02/2008 (3:18 pm)
@Daniel, by the way the Blender IK uses one of the Jacobian methods (CCD is a simplification of those, Jacobian, Jacobian transpose and pseudo-inverse). It actually has a folder in the source directory containing all the classes and an example (the folder is iksolver). Unfortunately the source is GPL -_- so I probably the only real way to port the code legally would be to just rewrite it using it as a simple guide....