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

Reply via email to