Page 1 of 1

BF-Blender : SoC IK inside / windows (2005/08/27)

Posted: Sat Aug 27, 2005 12:02 pm
by lguillaume
Hello, like the title says, SoC Ik branch now in BF-Blender.
Compilation with Bullet, quicktime, ...

Log Blendix:
What changed in IK lib:

Fully restructured, with components now as follows:
- IK_Solver: C <=> C++ interface
- IK_QSegment: base class for bone/segment with 0
to 3 DOF
- IK_QTask: base class for a task (currently there's
a position and a rotation task)
- IK_QJacobian: the Jacobian matrix, with SVD
decomposition, damping, etc
- IK_QJacobianSolver: the iterative solver

The exponential map parametrization is no longer used,
instead we have now:
- 3DOF and 2DOF XZ segments: directly update matrix
with Rodrigues' formula
- Other: Euler angles (no worries about singularities

Computation of the Jacobian inverse has also changed:
- The SVD algorithm is now based on LAPACK code,
instead of NR, to avoid some problems with rounding
- When the problem is underconstrained (as is the case
most of the time), the SVD is computed for the transpose
of the Jacobian (faster).
- A new damping algorithm called the Selectively Damped
Least Squares is used, result in faster and more
stable convergence.
- Stiffness is implemented as if a weighted psuedo-inverse
was used.

Tree structure support.

Rotation limits:
- 3DOF and 2DOF XZ segments limits are based on a swing
(direct axis-angle over XZ) and twist/roll (rotation
over Y) decomposition. The swing region is an ellipse
on a sphere.
- Rotation limits are implemented using an inner clamping
loop: as long as there is a violation, a violating DOF
is clamped and removed from the Jacobian, and the solution
is recomputed.

Convergence checking is based now on the max norm of angle
change, or the maximum number of iterations.
zip file (2317KB)
7zip file(1771KB)

Posted: Sat Aug 27, 2005 3:15 pm
by leander
Thanks you!!!

Can you re-compile with the envelopes for next time?

Sorry my english

Posted: Sat Aug 27, 2005 4:53 pm
by blendix
As of now the new IK code is in bf-blender (with envelopes, obviously). So you will just have to wait for the next bf-blender compile.