[Bf-blender-cvs] [03870ea] temp-sybren-poselib: Added rendering of previews of single poses
Sybren A. Stüvel
noreply at git.blender.org
Thu Dec 15 12:21:08 CET 2016
Commit: 03870ea9d8c861d9fc5bfb65d1e7b65872a9ea58
Author: Sybren A. Stüvel
Date: Thu Dec 15 12:14:16 2016 +0100
Branches: temp-sybren-poselib
https://developer.blender.org/rB03870ea9d8c861d9fc5bfb65d1e7b65872a9ea58
Added rendering of previews of single poses
===================================================================
M release/scripts/startup/bl_operators/poselib.py
M release/scripts/startup/bl_ui/properties_data_armature.py
===================================================================
diff --git a/release/scripts/startup/bl_operators/poselib.py b/release/scripts/startup/bl_operators/poselib.py
index 24e8123..fca0365 100644
--- a/release/scripts/startup/bl_operators/poselib.py
+++ b/release/scripts/startup/bl_operators/poselib.py
@@ -56,6 +56,10 @@ class POSELIB_OT_render_previews(Operator):
default='OPENGL'
)
+ render_pose_index = IntProperty(name='Pose index',
+ default=-1,
+ description='Index of the pose to render, -1 renders all poses')
+
plib_index = 0
image_size = 64, 64
icon_size = 16, 16
@@ -67,7 +71,14 @@ class POSELIB_OT_render_previews(Operator):
return bool(plib and plib.pose_markers)
def execute(self, context):
- return {'PASS_THROUGH'}
+ if self.render_pose_index < 0:
+ self.report({'WARNING'}, "Rendering multiple previews is only available when INVOKE'd.")
+ return {'PASS_THROUGH'}
+
+ plib = context.object.pose_library
+ self.setup_plib(plib)
+ self.render_pose(context, plib, self.render_pose_index)
+ return {'FINISHED'}
def modal(self, context, event):
if event.type == 'ESC':
@@ -130,23 +141,28 @@ class POSELIB_OT_render_previews(Operator):
bpy.data.images.remove(im)
def invoke(self, context, event):
+ if self.render_pose_index >= 0:
+ self.execute(context)
+ return {'FINISHED'}
+
+ plib = context.object.pose_library
+
wm = context.window_manager
wm.modal_handler_add(self)
+ wm.progress_begin(0, len(plib.pose_markers))
self.wm = context.window_manager
self.timer = self.wm.event_timer_add(0.01, context.window)
self.plib_index = 0
+ self.setup_plib(plib)
- plib = context.object.pose_library
- nr_of_poses = len(plib.pose_markers)
- context.window_manager.progress_begin(0, nr_of_poses)
+ return {'RUNNING_MODAL'}
+ def setup_plib(self, plib):
plib.preview.icon_size = self.icon_size
plib.preview.image_size = self.image_size
plib.preview.frames_number = len(plib.pose_markers)
- return {'RUNNING_MODAL'}
-
def _finish(self, context):
self.wm.event_timer_remove(self.timer)
context.window_manager.progress_end()
diff --git a/release/scripts/startup/bl_ui/properties_data_armature.py b/release/scripts/startup/bl_ui/properties_data_armature.py
index f1c03f0..74ba937 100644
--- a/release/scripts/startup/bl_ui/properties_data_armature.py
+++ b/release/scripts/startup/bl_ui/properties_data_armature.py
@@ -212,13 +212,32 @@ class DATA_PT_pose_library(ArmatureButtonsPanel, Panel):
layout.prop(pose_marker_active, "camera",
text='Camera for %s' % pose_marker_active.name)
+ previews = layout.box()
+ row = previews.column_flow(4)
for marker in poselib.pose_markers:
- col.label(marker.name, icon_value=poselib.preview.icon_id, icon_frame=marker.preview_frame_index)
+ row.label(marker.name,
+ icon_value=poselib.preview.icon_id,
+ icon_frame=marker.preview_frame_index)
row = layout.row(align=True)
row.operator_context = 'INVOKE_DEFAULT'
- row.operator("poselib.render_previews", text='Render OGL').render_method='OPENGL'
- row.operator("poselib.render_previews", text='Render Full').render_method='FULL'
+ props = row.operator("poselib.render_previews", text='Render OGL all')
+ props.render_method = 'OPENGL'
+ props.render_pose_index = -1
+ props = row.operator("poselib.render_previews", text='Render Full all')
+ props.render_method = 'FULL'
+ props.render_pose_index = -1
+
+ if pose_marker_active:
+ row = layout.row(align=True)
+ props = row.operator("poselib.render_previews",
+ text='Render OGL %s' % pose_marker_active.name)
+ props.render_method = 'OPENGL'
+ props.render_pose_index = poselib.pose_markers.active_index
+ props = row.operator("poselib.render_previews",
+ text='Render Full %s' % pose_marker_active.name)
+ props.render_method = 'FULL'
+ props.render_pose_index = poselib.pose_markers.active_index
# TODO: this panel will soon be deprecated too
More information about the Bf-blender-cvs
mailing list