[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [3172] trunk/py/scripts/addons/ io_import_scene_mhx.py: MHX importer: Added new convenient FK/IK buttons, which both change the IK property and layer visibility.

Thomas Larsson thomas_larsson_01 at hotmail.com
Sat Mar 24 13:51:19 CET 2012


Revision: 3172
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=3172
Author:   thomasl
Date:     2012-03-24 12:51:03 +0000 (Sat, 24 Mar 2012)
Log Message:
-----------
MHX importer: Added new convenient FK/IK buttons, which both change the IK property and layer visibility.

Modified Paths:
--------------
    trunk/py/scripts/addons/io_import_scene_mhx.py

Modified: trunk/py/scripts/addons/io_import_scene_mhx.py
===================================================================
--- trunk/py/scripts/addons/io_import_scene_mhx.py	2012-03-24 10:22:34 UTC (rev 3171)
+++ trunk/py/scripts/addons/io_import_scene_mhx.py	2012-03-24 12:51:03 UTC (rev 3172)
@@ -3810,8 +3810,29 @@
             ik2fkLeg(context, self.bone[-2:])
         return{'FINISHED'}    
 
-class MhxSnappingPanel(bpy.types.Panel):
-    bl_label = "MHX Snapping"
+class VIEW3D_OT_MhxToggleFkIkButton(bpy.types.Operator):
+    bl_idname = "mhx.toggle_fk_ik"
+    bl_label = "FK - IK"
+    toggle = StringProperty()    
+
+    def execute(self, context):
+        scn = context.scene
+        words = self.toggle.split()
+        rig = context.object
+        prop = words[0]
+        value = float(words[1]) 
+        onLayer = int(words[2])
+        offLayer = int(words[3])
+        rig.data.layers[onLayer] = True
+        rig.data.layers[offLayer] = False
+        rig[prop] = value
+        if context.tool_settings.use_keyframe_insert_auto:
+            rig.keyframe_insert('["%s"]' % prop, frame=scn.frame_current)        
+        updatePose(scn)
+        return{'FINISHED'}    
+
+class MhxFKIKPanel(bpy.types.Panel):
+    bl_label = "MHX FK/IK switch"
     bl_space_type = "VIEW_3D"
     bl_region_type = "UI"
     bl_options = {'DEFAULT_CLOSED'}
@@ -3821,10 +3842,27 @@
         return pollMhxRig(context.object)
 
     def draw(self, context):
-        ob = context.object
-        layout = self.layout
+        rig = context.object
+        layout = self.layout        
 
         row = layout.row()
+        row.label("")
+        row.label("Left")
+        row.label("Right")
+
+        row = layout.row()
+        row.label("Arm")
+        self.toggleButton(row, rig, "&ArmIk_L", " 3", " 2")
+        self.toggleButton(row, rig, "&ArmIk_R", " 19", " 18")
+
+        row = layout.row()
+        row.label("Leg")
+        self.toggleButton(row, rig, "&LegIk_L", " 5", " 4")
+        self.toggleButton(row, rig, "&LegIk_R", " 21", " 20")
+        
+        layout.separator()
+        layout.label("Snapping")
+        row = layout.row()
         row.label("Left arm")
         row.operator("mhx.snap_fk_ik").bone = "Arm_L"
         row.operator("mhx.snap_ik_fk").bone = "Arm_L"
@@ -3840,10 +3878,17 @@
         row.operator("mhx.snap_ik_fk").bone = "Leg_L"
 
         row = layout.row()
-        row.label("Right arm")
+        row.label("Right leg")
         row.operator("mhx.snap_fk_ik").bone = "Leg_R"
         row.operator("mhx.snap_ik_fk").bone = "Leg_R"
 
+    def toggleButton(self, row, rig, prop, fk, ik):
+        if rig[prop] > 0.5:
+            row.operator("mhx.toggle_fk_ik", text="IK").toggle = prop + " 0" + fk + ik
+        else:
+            row.operator("mhx.toggle_fk_ik", text="FK").toggle = prop + " 1" + ik + fk
+            
+
 ###################################################################################    
 #
 #    Posing panel



More information about the Bf-extensions-cvs mailing list