Added panel for accessing the "delta transforms" for Objects (this is closed by default to not clutter that much).

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.
This commit is contained in:
Joshua Leung 2010-10-16 11:52:30 +00:00
parent 98d6c533a6
commit 7cc5aaf18a
2 changed files with 26 additions and 2 deletions

@ -68,6 +68,31 @@ class OBJECT_PT_transform(ObjectButtonsPanel, bpy.types.Panel):
row.column().prop(ob, "scale") row.column().prop(ob, "scale")
layout.prop(ob, "rotation_mode") 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): class OBJECT_PT_transform_locks(ObjectButtonsPanel, bpy.types.Panel):

@ -1646,7 +1646,7 @@ void object_scale_to_mat3(Object *ob, float mat[][3])
size_to_mat3( mat,vec); size_to_mat3( mat,vec);
} }
// TODO: this should take rotation orders into account later...
void object_rot_to_mat3(Object *ob, float mat[][3]) void object_rot_to_mat3(Object *ob, float mat[][3])
{ {
float rmat[3][3], dmat[3][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 */ /* combine these rotations */
// XXX is this correct? if errors, change the order of multiplication...
mul_m3_m3m3(mat, dmat, rmat); mul_m3_m3m3(mat, dmat, rmat);
} }