[tuhopuu-cvs] CVS commit: tuhopuu3/intern/iksolver/intern IK_QChain.cpp IK_QChain.h IK_QJacobianSolver.cpp IK_QJacobianSolver.h

Brecht Van Lommel blendix at pandora.be
Wed Feb 9 17:10:48 CET 2005

blendix (Brecht Van Lommel) 2005/02/09 17:10:48 CET

  Modified files:
    tuhopuu3/intern/iksolver/intern IK_QChain.cpp IK_QChain.h 
  Some performance tweaking for the IK solver module:
  Suppose we have n joints and m constraints (m is always 1 currently) in a
  chain. This gives us a Jacobian matrix of m*3 rows and n*3 columns.
  SVD decomposition requires rows >= columns, so the Jacobian used to be
  filled up with zero's to make it a (n*3)x(n*3) matrix.
  The trick now is to decompose the *transposed* Jacobian. This leads to a
  smaller Jacobian used for SVD decomposition, and also smaller matrices later
  on in the Jacobian inversion code.
  For those who like complexite theory, this means we turned a O(n^2 * m) algo
  into O(n * m^2).
  In my test files this takes away about 30% IK computation time. This only
  affects the IK solver performance of course, which is a small part of the
  whole armature code, so don't expect any noticable performance increase.
  I might have broken something, so if it gives different results in your
  files I'd like to know, but in my 2 test files the results seem identical.
  Revision  Changes    Path
  1.2       +8 -4      tuhopuu3/intern/iksolver/intern/IK_QChain.cpp
  1.2       +6 -2      tuhopuu3/intern/iksolver/intern/IK_QChain.h
  1.2       +43 -20    tuhopuu3/intern/iksolver/intern/IK_QJacobianSolver.cpp
  1.2       +5 -2      tuhopuu3/intern/iksolver/intern/IK_QJacobianSolver.h

More information about the tuhopuu-cvs mailing list