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);
}
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs
