[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