[Bf-committers] new IK algorithms in Blender

Benoit Bolsee benoit.bolsee at online.be
Mon Jan 12 17:54:40 CET 2009

As some of you might know already, I have started a  project with the
KUL (University of Leuven) to implement new IK algorithms for Blender
and the BGE. I know everybody is busy with 2.5 atm but I'd like to have
your opinion on a couple of things. I'll first explain in a few words
the scope of the project.
It is a robotic project and the primary goal is to make Blender a
flexible platform to test, simulate, control and monitor industrial
robotic arms. The intention is to build a "task" layer where the user
can easily define complex tasks and have the (simulated or real) robotic
setup execute the task intellligently. The IK algorithms have been
developped over the years by the KUL and are now mature enough to be
ported to Blender. The core principle of the algorithms is the
integration of all the constraints and internal dynamics in a single
global equation system to solve the joints velocities (or accelaration)
over time. In the end, this work should also be useful to animators
because the new algorithms will be available to animate custom
Unlike the current IK algorithm in Blender, the new algorithms are
stateful and time dependent: you cannot get the pose for a given frame
number if you don't know the pose and the internal state at the previous
frame (and recursively at the begining of the simulation). The BGE is a
natural place to implement the algorithm because it is naturally time
dependent but we also want to have the animation available in Blender
for frame by frame inspection of the actions. 
One possible approach is baking via the BGE: you prepare the setup,
define the task by constraints and run the simulation in the BGE. The
joints positions are stored in Ipo curves and retrieved in Blender. 
Another approach is to have baking or caching in Blender like cloth (I
didn't look at cloth code yet). Baking the IK solution should be fairly
quick, potentially much quicker than the current IK algorithm that
always starts from the rest position at each frame. 
My idea is to implement a flexible caching system that will be available
in Blender for animation and in the BGE for recording the simulation or
the actual physics parameters when the BGE is used to control a real
robotic setup. I'm interested to hear your opinion on that.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.blender.org/pipermail/bf-committers/attachments/20090112/df0e4fe2/attachment.htm 

More information about the Bf-committers mailing list