[Bf-blender-cvs] CVS commit: blender/intern/iksolver SConscript blender/intern/iksolver/intern IK_QJacobian.cpp IK_QJacobian.h IK_QJacobianSolver.cpp IK_QJacobianSolver.h IK_QSegment.cpp IK_QTask.cpp IK_Solver.cpp blender/intern/iksolver/intern/TNT svd.h tntmath.h ...

Brecht Van Lommel brechtvanlommel at pandora.be
Sat Aug 27 15:45:19 CEST 2005


blendix (Brecht Van Lommel) 2005/08/27 15:45:19 CEST

  Modified files:
    blender/intern/iksolver SConscript 
    blender/intern/iksolver/intern IK_QJacobian.cpp IK_QJacobian.h 
                                   IK_QJacobianSolver.cpp 
                                   IK_QJacobianSolver.h 
                                   IK_QSegment.cpp IK_QTask.cpp 
                                   IK_Solver.cpp 
    blender/intern/iksolver/intern/TNT svd.h tntmath.h 
    blender/intern/moto/include MT_Point3.h MT_Point3.inl 
  
  Log:
  Update SConscript.
  Fix some warnings.
  Merge with latest soc code.
  
  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
      here)
  
  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
      errors.
    - 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.
  
  Revision  Changes    Path
  1.5       +3 -3      blender/intern/iksolver/SConscript
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/intern/iksolver/SConscript.diff?r1=1.4&r2=1.5&cvsroot=bf-blender>
  1.2       +13 -89    blender/intern/iksolver/intern/IK_QJacobian.cpp
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/intern/iksolver/intern/IK_QJacobian.cpp.diff?r1=1.1&r2=1.2&cvsroot=bf-blender>
  1.2       +5 -10     blender/intern/iksolver/intern/IK_QJacobian.h
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/intern/iksolver/intern/IK_QJacobian.h.diff?r1=1.1&r2=1.2&cvsroot=bf-blender>
  1.7       +7 -15     blender/intern/iksolver/intern/IK_QJacobianSolver.cpp
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/intern/iksolver/intern/IK_QJacobianSolver.cpp.diff?r1=1.6&r2=1.7&cvsroot=bf-blender>
  1.5       +5 -12     blender/intern/iksolver/intern/IK_QJacobianSolver.h
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/intern/iksolver/intern/IK_QJacobianSolver.h.diff?r1=1.4&r2=1.5&cvsroot=bf-blender>
  1.7       +1 -4      blender/intern/iksolver/intern/IK_QSegment.cpp
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/intern/iksolver/intern/IK_QSegment.cpp.diff?r1=1.6&r2=1.7&cvsroot=bf-blender>
  1.2       +2 -4      blender/intern/iksolver/intern/IK_QTask.cpp
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/intern/iksolver/intern/IK_QTask.cpp.diff?r1=1.1&r2=1.2&cvsroot=bf-blender>
  1.8       +2 -3      blender/intern/iksolver/intern/IK_Solver.cpp
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/intern/iksolver/intern/IK_Solver.cpp.diff?r1=1.7&r2=1.8&cvsroot=bf-blender>
  1.7       +352 -368  blender/intern/iksolver/intern/TNT/svd.h
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/intern/iksolver/intern/TNT/svd.h.diff?r1=1.6&r2=1.7&cvsroot=bf-blender>
  1.6       +7 -2      blender/intern/iksolver/intern/TNT/tntmath.h
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/intern/iksolver/intern/TNT/tntmath.h.diff?r1=1.5&r2=1.6&cvsroot=bf-blender>
  1.7       +2 -1      blender/intern/moto/include/MT_Point3.h
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/intern/moto/include/MT_Point3.h.diff?r1=1.6&r2=1.7&cvsroot=bf-blender>
  1.2       +5 -0      blender/intern/moto/include/MT_Point3.inl
    <http://projects.blender.org/viewcvs/viewcvs.cgi/blender/intern/moto/include/MT_Point3.inl.diff?r1=1.1&r2=1.2&cvsroot=bf-blender>



More information about the Bf-blender-cvs mailing list