partial bugfix [#24002] Constraint "Limit rotation" doesn't work properly
authorCampbell Barton <ideasman42@gmail.com>
Tue, 26 Oct 2010 16:55:38 +0000 (16:55 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Tue, 26 Oct 2010 16:55:38 +0000 (16:55 +0000)
this fixes the obvious problems but there are still some rotation jumping when clamping in some cases.

source/blender/blenkernel/intern/constraint.c

index c3f05e497f1e282fefd968339242e7890090987a..4d6ef612c83e31b2b7559f49ad592bd62d84daf6 100644 (file)
@@ -1381,6 +1381,7 @@ static bConstraintTypeInfo CTI_LOCLIMIT = {
 static void rotlimit_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *UNUSED(targets))
 {
        bRotLimitConstraint *data = con->data;
+       float eul_zero[3]= {0.0f, 0.0f, 0.0f};
        float loc[3];
        float eul[3];
        float size[3];
@@ -1388,8 +1389,9 @@ static void rotlimit_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *U
        copy_v3_v3(loc, cob->matrix[3]);
        mat4_to_size(size, cob->matrix);
        
-       mat4_to_eulO(eul, cob->rotOrder, cob->matrix);
-       
+       /* use compat function because it uses the rotation without axis flipping [#24002] */
+       mat4_to_compatible_eulO(eul, eul_zero, cob->rotOrder, cob->matrix);
+
        /* constraint data uses radians internally */
        
        /* limiting of euler values... */