[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39359] branches/soc-2011-pepper/release/ scripts/startup/ui_mocap.py: Added a small operator to ease mapping.

Benjy Cook benjycook at hotmail.com
Sat Aug 13 13:09:42 CEST 2011


Revision: 39359
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39359
Author:   benjycook
Date:     2011-08-13 11:09:42 +0000 (Sat, 13 Aug 2011)
Log Message:
-----------
Added a small operator to ease mapping. When used, the hierarchy mapping field is filled with the currently selected (pose) bone.

Modified Paths:
--------------
    branches/soc-2011-pepper/release/scripts/startup/ui_mocap.py

Modified: branches/soc-2011-pepper/release/scripts/startup/ui_mocap.py
===================================================================
--- branches/soc-2011-pepper/release/scripts/startup/ui_mocap.py	2011-08-13 09:22:14 UTC (rev 39358)
+++ branches/soc-2011-pepper/release/scripts/startup/ui_mocap.py	2011-08-13 11:09:42 UTC (rev 39359)
@@ -283,6 +283,7 @@
                         row.prop(data=bone, property='foot', text='', icon='POSE_DATA')
                         row.label(bone.name)
                         row.prop_search(bone, "map", enduser_arm, "bones")
+                        row.operator("mocap.selectmap", text='', icon='CURSOR').perf_bone = bone.name
                         label_mod = "FK"
                         if bone.map:
                             pose_bone = perf_pose_bones[bone.map]
@@ -493,8 +494,39 @@
             return activeIsArmature and isinstance(performer_obj[0].data, bpy.types.Armature)
         else:
             return False
+            
 
+class OBJECT_OT_SelectMapBoneButton(bpy.types.Operator):
+    '''Select a bone for faster mapping'''
+    bl_idname = "mocap.selectmap"
+    bl_label = "Select a bone for faster mapping"
+    perf_bone = bpy.props.StringProperty()
 
+    def execute(self, context):
+        enduser_obj = bpy.context.active_object
+        performer_obj = [obj for obj in bpy.context.selected_objects if obj != enduser_obj][0]
+        selectedBone = ""
+        for bone in enduser_obj.data.bones:
+            boneVis = bone.layers
+            for i in range(32):
+                if boneVis[i] and enduser_obj.data.layers[i]:
+                    if bone.select:
+                        selectedBone = bone.name
+                        break
+        performer_obj.data.bones[self.perf_bone].map = selectedBone
+        return {"FINISHED"}
+
+    @classmethod
+    def poll(cls, context):
+        if context.active_object:
+            activeIsArmature = isinstance(context.active_object.data, bpy.types.Armature)
+        performer_obj = [obj for obj in context.selected_objects if obj != context.active_object]
+        if performer_obj:
+            return activeIsArmature and isinstance(performer_obj[0].data, bpy.types.Armature)
+        else:
+            return False
+
+
 class OBJECT_OT_ConvertSamplesButton(bpy.types.Operator):
     '''Convert active armature's sampled keyframed to beziers'''
     bl_idname = "mocap.samples"




More information about the Bf-blender-cvs mailing list