[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