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>2012-05-01 20:19:13 +0400
committerJoshua Leung <aligorith@gmail.com>2012-05-01 20:19:13 +0400
commitffc9fcb1a1d58bb03b5cb60dc40f0fd91c3e8f3c (patch)
treea306e8589a8bb4718f1830d24b6fef6889e24c5e /release
parentfcb84663cd42dfdbb15204a6d65cec82d5ef110d (diff)
Motion Paths GUI Cleanup
This commit refactors the way that the Motion Paths GUI works. The key problems this tries to address are: 1) Mode error - Confusion about whether we're dealing with the Object or Pose level Motion Paths panel 2) Display settings vs Baking Settings In line with the original design intentions for the 2.5/6 Properties Editor, I've now split out the actual baking-related settings away from the Properties Editor: * Now, when clicking "Calculate Paths" from the toolbar, you'll be prompted with a dialog to select the start/end frames (and for bones, whether to bake from heads or tails). This is less confusing than relying on firstly setting the range via the display range settings (and baking using that), since many people apparently only used the "around current" mode, and were confused why things weren't working * Added a display of the frame ranges of the current baked Motion Path on the active Object/Bone. This makes it clearer/easier to debug if the path suddenly starts disappearing after a certain frame. * Replaced Calculate/Clear Paths in the panels with a single "Update" button if there's already a baked Motion Path. Hopefully these changes (in combination with some of the other bugfixes) will make it more obvious how everything works.
Diffstat (limited to 'release')
-rw-r--r--release/scripts/startup/bl_ui/properties_animviz.py46
-rw-r--r--release/scripts/startup/bl_ui/properties_data_armature.py14
-rw-r--r--release/scripts/startup/bl_ui/properties_object.py12
3 files changed, 48 insertions, 24 deletions
diff --git a/release/scripts/startup/bl_ui/properties_animviz.py b/release/scripts/startup/bl_ui/properties_animviz.py
index 93feb8adc7a..3f25006766e 100644
--- a/release/scripts/startup/bl_ui/properties_animviz.py
+++ b/release/scripts/startup/bl_ui/properties_animviz.py
@@ -31,16 +31,18 @@ class MotionPathButtonsPanel():
bl_label = "Motion Paths"
bl_options = {'DEFAULT_CLOSED'}
- def draw_settings(self, context, avs, bones=False):
+ def draw_settings(self, context, avs, mpath, bones=False):
layout = self.layout
mps = avs.motion_path
-
+
+ # Display Range
layout.prop(mps, "type", expand=True)
split = layout.split()
col = split.column()
+ col.label(text="Display Range:")
sub = col.column(align=True)
if (mps.type == 'CURRENT_FRAME'):
sub.prop(mps, "frame_before", text="Before")
@@ -48,18 +50,46 @@ class MotionPathButtonsPanel():
elif (mps.type == 'RANGE'):
sub.prop(mps, "frame_start", text="Start")
sub.prop(mps, "frame_end", text="End")
-
+
sub.prop(mps, "frame_step", text="Step")
+
+ col = split.column()
if bones:
- col.row().prop(mps, "bake_location", expand=True)
-
+ col.label(text="Cache for Bone:")
+ else:
+ col.label(text="Cache:")
+
+ if mpath:
+ sub = col.column(align=True)
+ sub.enabled = False
+ sub.prop(mpath, "frame_start", text="From")
+ sub.prop(mpath, "frame_end", text="To")
+
+ sub = col.column() # align=True
+ sub.operator_context = 'EXEC_DEFAULT'
+ if bones:
+ col.operator("pose.paths_calculate", text="Update", icon='BONE_DATA')
+ else:
+ col.operator("object.paths_calculate", text="Update", icon='OBJECT_DATA')
+ else:
+ col.label(text="Not available yet...", icon='ERROR')
+ col.label(text="Calculate Paths first", icon='INFO')
+
+
+ # Display Settings
+ split = layout.split()
+
col = split.column()
- col.label(text="Display:")
+ col.label(text="Show:")
col.prop(mps, "show_frame_numbers", text="Frame Numbers")
+
+ col = split.column()
col.prop(mps, "show_keyframe_highlight", text="Keyframes")
+ sub = col.column()
+ sub.enabled = mps.show_keyframe_highlight
if bones:
- col.prop(mps, "show_keyframe_action_all", text="+ Non-Grouped Keyframes")
- col.prop(mps, "show_keyframe_numbers", text="Keyframe Numbers")
+ sub.prop(mps, "show_keyframe_action_all", text="+ Non-Grouped Keyframes")
+ sub.prop(mps, "show_keyframe_numbers", text="Keyframe Numbers")
# FIXME: this panel still needs to be ported so that it will work correctly with animviz
diff --git a/release/scripts/startup/bl_ui/properties_data_armature.py b/release/scripts/startup/bl_ui/properties_data_armature.py
index 08529a0423d..63dc64190bb 100644
--- a/release/scripts/startup/bl_ui/properties_data_armature.py
+++ b/release/scripts/startup/bl_ui/properties_data_armature.py
@@ -308,14 +308,12 @@ class DATA_PT_motion_paths(MotionPathButtonsPanel, Panel):
layout = self.layout
ob = context.object
-
- self.draw_settings(context, ob.pose.animation_visualisation, bones=True)
-
- layout.separator()
-
- split = layout.split()
- split.operator("pose.paths_calculate", text="Calculate Paths")
- split.operator("pose.paths_clear", text="Clear Paths")
+ avs = ob.pose.animation_visualisation
+
+ pchan = context.active_pose_bone
+ mpath = pchan.motion_path if pchan else None
+
+ self.draw_settings(context, avs, mpath, bones=True)
class DATA_PT_onion_skinning(OnionSkinButtonsPanel): # , Panel): # inherit from panel when ready
diff --git a/release/scripts/startup/bl_ui/properties_object.py b/release/scripts/startup/bl_ui/properties_object.py
index d7b4b1a2b44..cdef7e703e5 100644
--- a/release/scripts/startup/bl_ui/properties_object.py
+++ b/release/scripts/startup/bl_ui/properties_object.py
@@ -299,14 +299,10 @@ class OBJECT_PT_motion_paths(MotionPathButtonsPanel, Panel):
layout = self.layout
ob = context.object
-
- self.draw_settings(context, ob.animation_visualisation)
-
- layout.separator()
-
- row = layout.row()
- row.operator("object.paths_calculate", text="Calculate Paths")
- row.operator("object.paths_clear", text="Clear Paths")
+ avs = ob.animation_visualisation
+ mpath = ob.motion_path
+
+ self.draw_settings(context, avs, mpath)
class OBJECT_PT_onion_skinning(OnionSkinButtonsPanel): # , Panel): # inherit from panel when ready