[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