Added panel for accessing the "delta transforms" for Objects (this is closed by defau...
authorJoshua Leung <aligorith@gmail.com>
Sat, 16 Oct 2010 11:52:30 +0000 (11:52 +0000)
committerJoshua Leung <aligorith@gmail.com>
Sat, 16 Oct 2010 11:52:30 +0000 (11:52 +0000)
This should help silence complaints from some about "dloc",etc. not being easily keyable.

It's also a nice way to have instances of animated objects located in different places, by animating either the standard transforms or the deltas, and then modifying by not animating the other version to keep the instances from going to a single point. This was a common newbie problem in 2.4x.

release/scripts/ui/properties_object.py
source/blender/blenkernel/intern/object.c

index 65f1cc2d929ad544cbe20daf4e8fdea00889956e..2532a99b402a954ce49dd58f125d5175e9dfbf94 100644 (file)
@@ -68,6 +68,31 @@ class OBJECT_PT_transform(ObjectButtonsPanel, bpy.types.Panel):
         row.column().prop(ob, "scale")
 
         layout.prop(ob, "rotation_mode")
+               
+class OBJECT_PT_delta_transform(ObjectButtonsPanel, bpy.types.Panel):
+    bl_label = "Delta Transform"
+    bl_options = {'DEFAULT_CLOSED'}
+
+    def draw(self, context):
+        layout = self.layout
+
+        ob = context.object
+
+        row = layout.row()
+
+        row.column().prop(ob, "delta_location")
+        if ob.rotation_mode == 'QUATERNION':
+            row.column().prop(ob, "delta_rotation_quaternion", text="Rotation")
+        elif ob.rotation_mode == 'AXIS_ANGLE':
+            #row.column().label(text="Rotation")
+            #row.column().prop(pchan, "delta_rotation_angle", text="Angle")
+            #row.column().prop(pchan, "delta_rotation_axis", text="Axis")
+            #row.column().prop(ob, "delta_rotation_axis_angle", text="Rotation")
+            row.column().label(ob, text="Not for Axis-Angle")
+        else:
+            row.column().prop(ob, "delta_rotation_euler", text="Rotation")
+
+        row.column().prop(ob, "delta_scale")
 
 
 class OBJECT_PT_transform_locks(ObjectButtonsPanel, bpy.types.Panel):
index 861904335d7abc113916bbf6c464c698a66db974..3df9bd6ed05e4e1758182126b78e32010fc1979b 100644 (file)
@@ -1646,7 +1646,7 @@ void object_scale_to_mat3(Object *ob, float mat[][3])
        size_to_mat3( mat,vec);
 }
 
-// TODO: this should take rotation orders into account later...
+
 void object_rot_to_mat3(Object *ob, float mat[][3])
 {
        float rmat[3][3], dmat[3][3];
@@ -1675,7 +1675,6 @@ void object_rot_to_mat3(Object *ob, float mat[][3])
        }
        
        /* combine these rotations */
-       // XXX is this correct? if errors, change the order of multiplication...
        mul_m3_m3m3(mat, dmat, rmat);
 }