<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<TITLE>Message</TITLE>
<META content="MSHTML 6.00.2900.5726" name=GENERATOR></HEAD>
<BODY>
<DIV><FONT face=Arial size=2><SPAN
class=312142315-12012009>Hi,</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=312142315-12012009></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=312142315-12012009>As some of you might
know already, </SPAN></FONT><FONT face=Arial size=2><SPAN
class=312142315-12012009>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.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=312142315-12012009></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=312142315-12012009>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, t</SPAN></FONT><FONT face=Arial size=2><SPAN
class=312142315-12012009>his work should also be useful to animators because the
new algorithms will be available to animate custom
armatures.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=312142315-12012009></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=312142315-12012009>Unlike the current
IK algorithm in Blender, the new algorithms are stateful and time
dependent: you cannot get</SPAN></FONT><FONT face=Arial size=2><SPAN
class=312142315-12012009> 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.
</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=312142315-12012009>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. </SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=312142315-12012009>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. </SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=312142315-12012009></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=312142315-12012009>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. </SPAN></FONT><FONT face=Arial size=2><SPAN
class=312142315-12012009>I'm interested to hear your opinion on
that.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=312142315-12012009></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN
class=312142315-12012009>/Benoit</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=312142315-12012009></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=312142315-12012009></SPAN></FONT><FONT
face=Arial size=2><SPAN
class=312142315-12012009></SPAN></FONT> </DIV></BODY></HTML>