[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [17285] branches/animsys2/source/blender/ src: AnimSys2: Eulers for Bones Bugfixes
Joshua Leung
aligorith at gmail.com
Sun Nov 2 12:01:47 CET 2008
Revision: 17285
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17285
Author: aligorith
Date: 2008-11-02 12:01:45 +0100 (Sun, 02 Nov 2008)
Log Message:
-----------
AnimSys2: Eulers for Bones Bugfixes
* AutoIK did not work with euler rotations yet. The conversions were still only being done for quats.
* Fixed spelling errors in tooltips
Modified Paths:
--------------
branches/animsys2/source/blender/src/drawview.c
branches/animsys2/source/blender/src/transform_conversions.c
Modified: branches/animsys2/source/blender/src/drawview.c
===================================================================
--- branches/animsys2/source/blender/src/drawview.c 2008-11-02 10:04:57 UTC (rev 17284)
+++ branches/animsys2/source/blender/src/drawview.c 2008-11-02 11:01:45 UTC (rev 17285)
@@ -2061,8 +2061,8 @@
/* rotation mode */
uiBlockBeginAlign(block);
- uiDefButS(block, ROW, B_ARMATUREPANEL3, "Quaternion",160,110,70,19, &pchan->rotmode, 70, PCHAN_ROT_QUAT, 0, 0, "Rotations calculated using Quaternions (4 components, no Gimble Lock, hard to edit)");
- uiDefButS(block, ROW, B_ARMATUREPANEL3, "Euler",230,110,70,19, &pchan->rotmode, 70, PCHAN_ROT_EUL, 0, 0, "Rotations calculated using Eulers (3 components, suffers from Gimble Lock, 'easy' to edit)");
+ uiDefButS(block, ROW, B_ARMATUREPANEL3, "Quaternion",160,110,70,19, &pchan->rotmode, 70, PCHAN_ROT_QUAT, 0, 0, "Rotations calculated using Quaternions (4 components, no Gimbal Lock, hard to edit)");
+ uiDefButS(block, ROW, B_ARMATUREPANEL3, "Euler",230,110,70,19, &pchan->rotmode, 70, PCHAN_ROT_EUL, 0, 0, "Rotations calculated using Eulers (3 components, suffers from Gimbal Lock, 'easy' to edit)");
uiBlockEndAlign(block);
if (pchan->rotmode) {
Modified: branches/animsys2/source/blender/src/transform_conversions.c
===================================================================
--- branches/animsys2/source/blender/src/transform_conversions.c 2008-11-02 10:04:57 UTC (rev 17284)
+++ branches/animsys2/source/blender/src/transform_conversions.c 2008-11-02 11:01:45 UTC (rev 17285)
@@ -488,7 +488,7 @@
}
else {
Mat4CpyMat3(tmat, bone->bone_mat);
-
+
VECCOPY(tmat[3], bone->head);
Mat4Invert(imat, tmat);
}
@@ -497,18 +497,25 @@
/* apply and decompose, doesn't work for constraints or non-uniform scale well */
{
- float rmat3[3][3], qmat[3][3], imat[3][3], smat[3][3];
+ float rmat3[3][3], qrmat[3][3], imat[3][3], smat[3][3];
Mat3CpyMat4(rmat3, rmat);
- /* quaternion */
- Mat3ToQuat(rmat3, parchan->quat);
+ /* rotation */
+ if (parchan->rotmode)
+ Mat3ToEul(rmat3, parchan->eul);
+ else
+ Mat3ToQuat(rmat3, parchan->quat);
/* for size, remove rotation */
/* causes problems with some constraints (so apply only if needed) */
if (data->flag & CONSTRAINT_IK_STRETCH) {
- QuatToMat3(parchan->quat, qmat);
- Mat3Inv(imat, qmat);
+ if (parchan->rotmode)
+ EulToMat3(parchan->eul, qrmat);
+ else
+ QuatToMat3(parchan->quat, qrmat);
+
+ Mat3Inv(imat, qrmat);
Mat3MulMat3(smat, rmat3, imat);
Mat3ToSize(smat, parchan->size);
}
More information about the Bf-blender-cvs
mailing list