Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Leung <aligorith@gmail.com>2011-03-24 06:02:34 +0300
committerJoshua Leung <aligorith@gmail.com>2011-03-24 06:02:34 +0300
commiteef811a0954ad67a4667592c85cd95822d15e17c (patch)
tree43c252be6af9cd5c01595de87b2e148c3124de56 /release/scripts
parentc210b3991a074f27af80178c85d0658c4041480b (diff)
Animation Tool: Propagate Pose
This tool automates the process of copying a pose to successive keyframes, making it easier for animators to go back and change the pose for some controls which remain "static" for periods of time. Previously, animators would need to do a "{Ctrl-Pageup Ctrl-V} * number_of_static_keyframes" dance for each set of controls that this happened on, which is not too good ergonomically speaking. There are two modes exposed via the menu (Pose->Propagate): - "Pose Propagate" - also known as the 'WHILE_HELD' mode, which propagates to all keyframes that are holding the same value - "To Next Keyframe" - which only propagates the pose to the closest keyframe in the occurring after (but not including) the current frame Additionally, there are a few other modes that can be used, though they are less useful for direct use from the UI, though they can be used via the PyAPI as need be. --- Also, I did some cleanups in the "Pose" menu to bring it more into line with the Object mode one. There are some more tweaks that could still be done here, such as bringing the keyframing operator entries under a submenu too (as in the Object mode version) to get the length of this under control.
Diffstat (limited to 'release/scripts')
-rw-r--r--release/scripts/startup/bl_ui/space_view3d.py60
1 files changed, 40 insertions, 20 deletions
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index 31704173258..bbeb76d2cb1 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -177,10 +177,6 @@ class VIEW3D_MT_transform(bpy.types.Menu):
layout.operator("object.origin_set", text="Origin to Geometry").type = 'ORIGIN_GEOMETRY'
layout.operator("object.origin_set", text="Origin to 3D Cursor").type = 'ORIGIN_CURSOR'
- if context.mode == 'OBJECT':
- layout.operator("object.align")
- layout.operator("object.randomize_transform")
-
class VIEW3D_MT_mirror(bpy.types.Menu):
bl_label = "Mirror"
@@ -254,14 +250,6 @@ class VIEW3D_MT_uv_map(bpy.types.Menu):
layout.operator("uv.reset")
- layout.separator()
-
- # python scripts
- layout.operator_context = 'INVOKE_REGION_WIN'
- layout.operator("uv.smart_project")
- layout.operator("uv.lightmap_pack")
- layout.operator("uv.follow_active_quads")
-
# ********** View menus **********
@@ -1172,23 +1160,23 @@ class VIEW3D_MT_pose(bpy.types.Menu):
layout.separator()
layout.menu("VIEW3D_MT_transform")
- layout.menu("VIEW3D_MT_snap")
layout.menu("VIEW3D_MT_pose_transform")
+ layout.menu("VIEW3D_MT_pose_apply")
+
+ layout.menu("VIEW3D_MT_snap")
layout.separator()
+ # TODO: make this an "Animation" menu like we have for object?
layout.operator("anim.keyframe_insert_menu", text="Insert Keyframe...")
layout.operator("anim.keyframe_delete_v3d", text="Delete Keyframe...")
layout.operator("anim.keying_set_active_set", text="Change Keying Set...")
layout.separator()
- layout.operator("pose.relax")
-
- layout.separator()
-
- layout.menu("VIEW3D_MT_pose_apply")
+ layout.menu("VIEW3D_MT_pose_slide")
+ layout.menu("VIEW3D_MT_pose_propagate")
layout.separator()
@@ -1198,7 +1186,7 @@ class VIEW3D_MT_pose(bpy.types.Menu):
layout.separator()
- layout.menu("VIEW3D_MT_pose_pose")
+ layout.menu("VIEW3D_MT_pose_library")
layout.menu("VIEW3D_MT_pose_motion")
layout.menu("VIEW3D_MT_pose_group")
@@ -1246,7 +1234,28 @@ class VIEW3D_MT_pose_transform(bpy.types.Menu):
layout.label(text="Origin")
-class VIEW3D_MT_pose_pose(bpy.types.Menu):
+class VIEW3D_MT_pose_slide(bpy.types.Menu):
+ bl_label = "In-Betweens"
+
+ def draw(self, context):
+ layout = self.layout
+
+ layout.operator("pose.push")
+ layout.operator("pose.relax")
+ layout.operator("pose.breakdown")
+
+
+class VIEW3D_MT_pose_propagate(bpy.types.Menu):
+ bl_label = "Propagate"
+
+ def draw(self, context):
+ layout = self.layout
+
+ layout.operator("pose.propagate")
+ layout.operator("pose.propagate", text="To Next Keyframe").mode = 'NEXT_KEY'
+
+
+class VIEW3D_MT_pose_library(bpy.types.Menu):
bl_label = "Pose Library"
def draw(self, context):
@@ -2313,3 +2322,14 @@ class VIEW3D_PT_context_properties(bpy.types.Panel):
if member:
# Draw with no edit button
rna_prop_ui.draw(self.layout, context, member, object, False)
+
+
+def register():
+ bpy.utils.register_module(__name__)
+
+
+def unregister():
+ bpy.utils.unregister_module(__name__)
+
+if __name__ == "__main__":
+ register()