[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13694] trunk/blender/source/blender/ blenkernel/intern/constraint.c: Bugfix #8255: Negative Rotation Values with Transform Constraint go Crazy

Joshua Leung aligorith at gmail.com
Fri Feb 15 05:42:51 CET 2008


Revision: 13694
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13694
Author:   aligorith
Date:     2008-02-15 05:42:48 +0100 (Fri, 15 Feb 2008)

Log Message:
-----------
Bugfix #8255: Negative Rotation Values with Transform Constraint go Crazy

This bug-report brought to light some problems with the transform constraint's handling of degrees+radians. Now, the input-range scaling is done in degrees (as the clamping factors ranges are in degrees) instead of having that done after this stage. The problems should now be fixed (and gears now seem to work ok), but I hope no other rigs have been broken. 

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/constraint.c

Modified: trunk/blender/source/blender/blenkernel/intern/constraint.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/constraint.c	2008-02-14 21:34:27 UTC (rev 13693)
+++ trunk/blender/source/blender/blenkernel/intern/constraint.c	2008-02-15 04:42:48 UTC (rev 13694)
@@ -3062,8 +3062,10 @@
 			case 2: /* scale */
 				Mat4ToSize(ct->matrix, dvec);
 				break;
-			case 1: /* rotation */
+			case 1: /* rotation (convert to degrees first) */
 				Mat4ToEul(ct->matrix, dvec);
+				for (i=0; i<3; i++)
+					dvec[i] = dvec[i] / M_PI * 180;
 				break;
 			default: /* location */
 				VecCopyf(dvec, ct->matrix[3]);
@@ -3095,15 +3097,10 @@
 			}
 		}
 		
-		/* convert radian<->degree */
-		if (data->from==1 && data->to==0) {
-			/* from radians to degrees */
+		/* convert radians<->degrees */
+		if (data->to == 1) {
+			/* if output is rotation, convert to radians from degrees */
 			for (i=0; i<3; i++) 
-				sval[i] = sval[i] / M_PI * 180;
-		}
-		else if (data->from==0 && data->to==1) {
-			/* from degrees to radians */
-			for (i=0; i<3; i++) 
 				sval[i] = sval[i] / 180 * M_PI;
 		}
 		





More information about the Bf-blender-cvs mailing list