[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [17450] trunk/blender/source/blender/src/ transform_generics.c: Transform Roll Fixes for editbone.
Martin Poirier
theeth at yahoo.com
Fri Nov 14 04:13:41 CET 2008
Revision: 17450
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17450
Author: theeth
Date: 2008-11-14 04:13:40 +0100 (Fri, 14 Nov 2008)
Log Message:
-----------
Transform Roll Fixes for editbone. Special case for rotation, we don't need to guess in those case and the result is better if we use the real rotation.
Modified Paths:
--------------
trunk/blender/source/blender/src/transform_generics.c
Modified: trunk/blender/source/blender/src/transform_generics.c
===================================================================
--- trunk/blender/source/blender/src/transform_generics.c 2008-11-14 03:01:39 UTC (rev 17449)
+++ trunk/blender/source/blender/src/transform_generics.c 2008-11-14 03:13:40 UTC (rev 17450)
@@ -509,24 +509,34 @@
}
}
- /* fix roll */
- for(i = 0; i < t->total; i++, td++)
+
+ if (t->mode != TFM_BONE_ROLL)
{
- if (td->extra)
+ /* fix roll */
+ for(i = 0; i < t->total; i++, td++)
{
- float vec[3], up_axis[3];
- float qrot[4];
-
- ebo = td->extra;
-
- VecSubf(vec, ebo->tail, ebo->head);
- Normalize(vec);
- RotationBetweenVectorsToQuat(qrot, td->axismtx[1], vec);
-
- VECCOPY(up_axis, td->axismtx[2]);
- QuatMulVecf(qrot, up_axis);
-
- ebo->roll = rollBoneToVector(ebo, up_axis);
+ if (td->extra)
+ {
+ float vec[3], up_axis[3];
+ float qrot[4];
+
+ ebo = td->extra;
+ VECCOPY(up_axis, td->axismtx[2]);
+
+ if (t->mode != TFM_ROTATION)
+ {
+ VecSubf(vec, ebo->tail, ebo->head);
+ Normalize(vec);
+ RotationBetweenVectorsToQuat(qrot, td->axismtx[1], vec);
+ QuatMulVecf(qrot, up_axis);
+ }
+ else
+ {
+ Mat3MulVecfl(t->mat, up_axis);
+ }
+
+ ebo->roll = rollBoneToVector(ebo, up_axis);
+ }
}
}
@@ -844,7 +854,10 @@
((VObjectData*)vnode->data)->flag |= SCALE_SEND_READY;
}
#endif
- }
+ }
+
+ Mat3One(t->mat);
+
recalcData(t);
}
More information about the Bf-blender-cvs
mailing list