[Soc-2005-dev] Inverse Kinematics

Ton Roosendaal ton at blender.org
Tue Jul 26 13:49:04 CEST 2005


Hi Brecht,

Thanks for the cool doc!
http://wiki.blender.org/bin/view.pl/Blenderdev/SoCInverseKinematics

I might not have time for the IK data redesign in PoseChannel 'bones'  
until I am back from Siggraph (august 6). But some rough ideas on it I  
can share already;

- IK trees

Within the UI it should be simple to select and visualize... with  
overlapping IK's being the main concern still. It's also unknown yet  
how easy it is get a full automated tree (like an arm including the  
fingers) in good control. What if you pull one finger, does the rest  
move? Using weights?

My current idea is to stick to indicating single Chains in the UI, with  
selecting the 'Root' and the 'Effector' bones. This Chain information  
then is stored in the Root bPoseChannel. For each Chain, we then  
introduce a Priority number, which will define the order of execution.  
When the Pose is being "solved", I then can make sure that all Chains  
in a Root Bone with same Priority are delivered together (without  
duplicates) to the IK Solver, thus allowing to solve an entire Tree as  
well.

By setting different Priority values, an artist then can still use  
multiple levels of IK on a single 'chain', this for the much used trick  
to first 'IK' the upper arm (for orientation) and then do the full arm.

- The weird "IK to Parent" flag

My proposal would be to rename it to "Snap to Parent", as builtin  
option to ensure Bones can not be dislocated by IK or Constraint or  
Actions. With the new IK Chain format defining the root and effector  
bones, the IK module then can also solve Bones with offsets to their  
parent bones. Right?

- DOF joints

We need to define the format how to express a "DOF". End-users would  
prefer Euler here I guess. BTW; by definition Bones are pointing in the  
Y-axis always. The DOF should be defined within this local 'rest  
position' as well.
It's also worth checking on some kind of elasticity here. Where the  
"DOF" per rotation axis can get 3 values:
   - Minumum rotation freedom
   - Maximum rotation freedom
   - Strength
Where "Strength" here defines some weighting factor during IK solving,  
to define which joints can be easiest become bent.

I can make a nice drawing option in 3D for the DOF, and check on how  
these values can become interactive editable (using transform).

Since all these values should be animatable, the bPoseChannel struct is  
where the joint information will reside, denoting the freedom of a bone  
with respect to its Parent bone. I can make sure the Action Channels  
for it will be added.

- "Translational Joints"

I am still not sure what this means... how is this defined, as one part  
of the DOF? Would that mean three values (X Y Z) too?

- "Orientation control"

You mention this... what's it?

Thanks!

-Ton-

------------------------------------------------------------------------ 
--
Ton Roosendaal  Blender Foundation ton at blender.org  
http://www.blender.org



More information about the Soc-2005-dev mailing list