[Soc-2005-cvs] CVS commit: soc-blender/intern/iksolver/intern
IK_QChain.cpp IK_QChain.h
IK_QJacobian.cpp IK_QJacobian.h IK_QJacobianSolver.cpp
IK_QJacobianSolver.h IK_QSegment.cpp IK_QSegment.h IK_Solver.cpp
soc-blender/intern/moto/include MT_Matrix3x3.h
soc-blender/source/blender/blenkernel ...
Brecht Van Lommel
brechtvanlommel at pandora.be
Tue Jul 5 22:20:48 CEST 2005
blendix (Brecht Van Lommel) 2005/07/05 22:20:48 CEST
Modified files: (Branch: blendix)
soc-blender/intern/iksolver/intern IK_QChain.cpp IK_QChain.h
IK_QJacobian.cpp
IK_QJacobian.h
IK_QJacobianSolver.cpp
IK_QJacobianSolver.h
IK_QSegment.cpp
IK_QSegment.h IK_Solver.cpp
soc-blender/intern/moto/include MT_Matrix3x3.h
soc-blender/source/blender/blenkernel BKE_armature.h
soc-blender/source/blender/blenkernel/intern armature.c
constraint.c
soc-blender/source/blender/blenkernel/bad_level_call_stubs
stubs.c
soc-blender/intern/iksolver/extern IK_solver.h
Log:
Throwing out the exponential map (aka axis-angle) parametrization:
The reason it was used is that the typical euler angles suffer from
singularities (gimbal lock), and quaternions can drift away from
valid rotations.
The problem however is that the 3 paramaters of the exponential map
have no useful meaning (much like quaternions). Computing the
derivatives of and/or reparametrizing the exponential map is
cumbersome (and slow).
The simpler solution used now is to avoid using a parametrization
altogether, and directly update the rotation matrix. The derivatives
are the same as for euler angles, but the rotation matrix is
updated using Rodrigues' formula, reference:
"Dynamics Computation of Structure-Varying Kinematics Chains and its
application to human figures", by Nakamura et al.
This change might break backwards compatibility, but the results from
my test cases at least look identical. The exponential map could be
enabled again for older files if needed..
Except for the change in angle parametrization much of the code have
also been simplified.
Revision Changes Path
1.1.1.1.2.3 +27 -95 soc-blender/intern/iksolver/intern/IK_QChain.cpp
<http://projects.blender.org/viewcvs/viewcvs.cgi/soc-blender/intern/iksolver/intern/IK_QChain.cpp.diff?r1=1.1.1.1.2.2&r2=1.1.1.1.2.3&cvsroot=soc-2005>
1.1.1.1.2.2 +8 -8 soc-blender/intern/iksolver/intern/IK_QChain.h
<http://projects.blender.org/viewcvs/viewcvs.cgi/soc-blender/intern/iksolver/intern/IK_QChain.h.diff?r1=1.1.1.1.2.1&r2=1.1.1.1.2.2&cvsroot=soc-2005>
1.1.2.2 +97 -34 soc-blender/intern/iksolver/intern/Attic/IK_QJacobian.cpp
<http://projects.blender.org/viewcvs/viewcvs.cgi/soc-blender/intern/iksolver/intern/Attic/IK_QJacobian.cpp.diff?r1=1.1.2.1&r2=1.1.2.2&cvsroot=soc-2005>
1.1.2.2 +11 -15 soc-blender/intern/iksolver/intern/Attic/IK_QJacobian.h
<http://projects.blender.org/viewcvs/viewcvs.cgi/soc-blender/intern/iksolver/intern/Attic/IK_QJacobian.h.diff?r1=1.1.2.1&r2=1.1.2.2&cvsroot=soc-2005>
1.1.1.1.2.5 +13 -22 soc-blender/intern/iksolver/intern/IK_QJacobianSolver.cpp
<http://projects.blender.org/viewcvs/viewcvs.cgi/soc-blender/intern/iksolver/intern/IK_QJacobianSolver.cpp.diff?r1=1.1.1.1.2.4&r2=1.1.1.1.2.5&cvsroot=soc-2005>
1.1.1.1.2.2 +2 -2 soc-blender/intern/iksolver/intern/IK_QJacobianSolver.h
<http://projects.blender.org/viewcvs/viewcvs.cgi/soc-blender/intern/iksolver/intern/IK_QJacobianSolver.h.diff?r1=1.1.1.1.2.1&r2=1.1.1.1.2.2&cvsroot=soc-2005>
1.1.1.1.2.2 +117 -252 soc-blender/intern/iksolver/intern/IK_QSegment.cpp
<http://projects.blender.org/viewcvs/viewcvs.cgi/soc-blender/intern/iksolver/intern/IK_QSegment.cpp.diff?r1=1.1.1.1.2.1&r2=1.1.1.1.2.2&cvsroot=soc-2005>
1.1.1.1.2.2 +121 -183 soc-blender/intern/iksolver/intern/IK_QSegment.h
<http://projects.blender.org/viewcvs/viewcvs.cgi/soc-blender/intern/iksolver/intern/IK_QSegment.h.diff?r1=1.1.1.1.2.1&r2=1.1.1.1.2.2&cvsroot=soc-2005>
1.1.1.1.2.3 +34 -21 soc-blender/intern/iksolver/intern/IK_Solver.cpp
<http://projects.blender.org/viewcvs/viewcvs.cgi/soc-blender/intern/iksolver/intern/IK_Solver.cpp.diff?r1=1.1.1.1.2.2&r2=1.1.1.1.2.3&cvsroot=soc-2005>
1.1.1.1.2.1 +10 -1 soc-blender/intern/moto/include/MT_Matrix3x3.h
<http://projects.blender.org/viewcvs/viewcvs.cgi/soc-blender/intern/moto/include/MT_Matrix3x3.h.diff?r1=1.1.1.1.2.0&r2=1.1.1.1.2.1&cvsroot=soc-2005>
1.1.1.1.2.1 +2 -2 soc-blender/source/blender/blenkernel/BKE_armature.h
<http://projects.blender.org/viewcvs/viewcvs.cgi/soc-blender/source/blender/blenkernel/BKE_armature.h.diff?r1=1.1.1.1.2.0&r2=1.1.1.1.2.1&cvsroot=soc-2005>
1.1.1.1.2.1 +8 -5 soc-blender/source/blender/blenkernel/intern/armature.c
<http://projects.blender.org/viewcvs/viewcvs.cgi/soc-blender/source/blender/blenkernel/intern/armature.c.diff?r1=1.1.1.1.2.0&r2=1.1.1.1.2.1&cvsroot=soc-2005>
1.1.1.1.2.1 +2 -2 soc-blender/source/blender/blenkernel/intern/constraint.c
<http://projects.blender.org/viewcvs/viewcvs.cgi/soc-blender/source/blender/blenkernel/intern/constraint.c.diff?r1=1.1.1.1.2.0&r2=1.1.1.1.2.1&cvsroot=soc-2005>
1.1.1.1.2.1 +3 -2 soc-blender/source/blender/blenkernel/bad_level_call_stubs/stubs.c
<http://projects.blender.org/viewcvs/viewcvs.cgi/soc-blender/source/blender/blenkernel/bad_level_call_stubs/stubs.c.diff?r1=1.1.1.1.2.0&r2=1.1.1.1.2.1&cvsroot=soc-2005>
1.1.1.1.2.1 +6 -4 soc-blender/intern/iksolver/extern/IK_solver.h
<http://projects.blender.org/viewcvs/viewcvs.cgi/soc-blender/intern/iksolver/extern/IK_solver.h.diff?r1=1.1.1.1.2.0&r2=1.1.1.1.2.1&cvsroot=soc-2005>
More information about the Soc-2005-cvs
mailing list