[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23602] trunk/blender: Move Inverse Kinematics panel to Constraint context.
Benoit Bolsee
benoit.bolsee at online.be
Fri Oct 2 09:20:07 CEST 2009
Revision: 23602
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23602
Author: ben2610
Date: 2009-10-02 09:20:07 +0200 (Fri, 02 Oct 2009)
Log Message:
-----------
Move Inverse Kinematics panel to Constraint context. Make iTaSC parameter panel more readable.
Modified Paths:
--------------
trunk/blender/release/scripts/ui/buttons_data_bone.py
trunk/blender/release/scripts/ui/buttons_object_constraint.py
trunk/blender/source/blender/blenkernel/intern/action.c
trunk/blender/source/blender/makesrna/intern/rna_pose.c
Modified: trunk/blender/release/scripts/ui/buttons_data_bone.py
===================================================================
--- trunk/blender/release/scripts/ui/buttons_data_bone.py 2009-10-02 07:03:58 UTC (rev 23601)
+++ trunk/blender/release/scripts/ui/buttons_data_bone.py 2009-10-02 07:20:07 UTC (rev 23602)
@@ -149,94 +149,6 @@
col.itemL(text="Custom Shape:")
col.itemR(pchan, "custom_shape", text="")
-class BONE_PT_inverse_kinematics(BoneButtonsPanel):
- __label__ = "Inverse Kinematics"
- __default_closed__ = True
-
- def poll(self, context):
- ob = context.object
- bone = context.bone
-
- if ob and context.bone:
- pchan = ob.pose.pose_channels[context.bone.name]
- return pchan.has_ik
-
- return False
-
- def draw(self, context):
- layout = self.layout
-
- ob = context.object
- bone = context.bone
- pchan = ob.pose.pose_channels[context.bone.name]
-
- row = layout.row()
- row.itemR(ob.pose, "ik_solver")
-
- split = layout.split(percentage=0.25)
- split.itemR(pchan, "ik_dof_x", text="X")
- row = split.row()
- row.itemR(pchan, "ik_stiffness_x", text="Stiffness", slider=True)
- row.active = pchan.ik_dof_x
-
- split = layout.split(percentage=0.25)
- row = split.row()
- row.itemR(pchan, "ik_limit_x", text="Limit")
- row.active = pchan.ik_dof_x
- row = split.row(align=True)
- row.itemR(pchan, "ik_min_x", text="")
- row.itemR(pchan, "ik_max_x", text="")
- row.active = pchan.ik_dof_x and pchan.ik_limit_x
-
- split = layout.split(percentage=0.25)
- split.itemR(pchan, "ik_dof_y", text="Y")
- row = split.row()
- row.itemR(pchan, "ik_stiffness_y", text="Stiffness", slider=True)
- row.active = pchan.ik_dof_y
-
- split = layout.split(percentage=0.25)
- row = split.row()
- row.itemR(pchan, "ik_limit_y", text="Limit")
- row.active = pchan.ik_dof_y
- row = split.row(align=True)
- row.itemR(pchan, "ik_min_y", text="")
- row.itemR(pchan, "ik_max_y", text="")
- row.active = pchan.ik_dof_y and pchan.ik_limit_y
-
- split = layout.split(percentage=0.25)
- split.itemR(pchan, "ik_dof_z", text="Z")
- row = split.row()
- row.itemR(pchan, "ik_stiffness_z", text="Stiffness", slider=True)
- row.active = pchan.ik_dof_z
-
- split = layout.split(percentage=0.25)
- row = split.row()
- row.itemR(pchan, "ik_limit_z", text="Limit")
- row.active = pchan.ik_dof_z
- row = split.row(align=True)
- row.itemR(pchan, "ik_min_z", text="")
- row.itemR(pchan, "ik_max_z", text="")
- row.active = pchan.ik_dof_z and pchan.ik_limit_z
- split = layout.split()
- split.itemR(pchan, "ik_stretch", text="Stretch", slider=True)
- split.itemL()
-
- if ob.pose.ik_solver == "ITASC":
- layout.itemL(text="Joint constraint:")
- split = layout.split(percentage=0.3)
- row = split.row()
- row.itemR(pchan, "ik_rot_control", text="Rotation")
- row = split.row()
- row.itemR(pchan, "ik_rot_weight", text="Weight", slider=True)
- row.active = pchan.ik_rot_control
- # not supported yet
- #split = layout.split(percentage=0.3)
- #row = split.row()
- #row.itemR(pchan, "ik_lin_control", text="Size")
- #row = split.row()
- #row.itemR(pchan, "ik_lin_weight", text="Weight", slider=True)
- #row.active = pchan.ik_lin_control
-
class BONE_PT_deform(BoneButtonsPanel):
__label__ = "Deform"
__default_closed__ = True
@@ -285,65 +197,9 @@
col.itemL(text="Offset:")
col.itemR(bone, "cyclic_offset")
-class BONE_PT_iksolver_itasc(BoneButtonsPanel):
- __idname__ = "BONE_PT_iksolver_itasc"
- __label__ = "iTaSC parameters"
- __default_closed__ = True
-
- def poll(self, context):
- ob = context.object
- bone = context.bone
- if ob and context.bone:
- pchan = ob.pose.pose_channels[context.bone.name]
- return pchan.has_ik and ob.pose.ik_solver == "ITASC" and ob.pose.ik_param
-
- return False
-
- def draw(self, context):
- layout = self.layout
-
- ob = context.object
- itasc = ob.pose.ik_param
-
- layout.row().itemR(itasc, "simulation")
- if itasc.simulation:
- split = layout.split()
- row = split.row()
- row.itemR(itasc, "reiteration")
- row = split.row()
- if itasc.reiteration:
- itasc.initial_reiteration = True
- row.itemR(itasc, "initial_reiteration")
- row.active = not itasc.reiteration
-
- flow = layout.column_flow()
- flow.itemR(itasc, "precision")
- flow.itemR(itasc, "num_iter")
- flow.active = not itasc.simulation or itasc.initial_reiteration or itasc.reiteration
-
- if itasc.simulation:
- layout.itemR(itasc, "auto_step")
- row = layout.row()
- if itasc.auto_step:
- row.itemR(itasc, "min_step")
- row.itemR(itasc, "max_step")
- else:
- row.itemR(itasc, "num_step")
-
- layout.itemR(itasc, "solver")
- if itasc.simulation:
- layout.itemR(itasc, "feedback")
- layout.itemR(itasc, "max_velocity")
- if itasc.solver == "DLS":
- row = layout.row()
- row.itemR(itasc, "dampmax")
- row.itemR(itasc, "dampeps")
-
bpy.types.register(BONE_PT_context_bone)
bpy.types.register(BONE_PT_transform)
bpy.types.register(BONE_PT_transform_locks)
bpy.types.register(BONE_PT_bone)
bpy.types.register(BONE_PT_deform)
-bpy.types.register(BONE_PT_inverse_kinematics)
-bpy.types.register(BONE_PT_iksolver_itasc)
Modified: trunk/blender/release/scripts/ui/buttons_object_constraint.py
===================================================================
--- trunk/blender/release/scripts/ui/buttons_object_constraint.py 2009-10-02 07:03:58 UTC (rev 23601)
+++ trunk/blender/release/scripts/ui/buttons_object_constraint.py 2009-10-02 07:20:07 UTC (rev 23602)
@@ -536,6 +536,145 @@
for con in ob.constraints:
self.draw_constraint(context, con)
+class BONE_PT_inverse_kinematics(ConstraintButtonsPanel):
+ __label__ = "Inverse Kinematics"
+ __default_closed__ = True
+ __context__ = "bone_constraint"
+
+ def poll(self, context):
+ ob = context.object
+ bone = context.bone
+
+ if ob and bone:
+ pchan = ob.pose.pose_channels[bone.name]
+ return pchan.has_ik
+
+ return False
+
+ def draw(self, context):
+ layout = self.layout
+
+ ob = context.object
+ bone = context.bone
+ pchan = ob.pose.pose_channels[bone.name]
+
+ row = layout.row()
+ row.itemR(ob.pose, "ik_solver")
+
+ split = layout.split(percentage=0.25)
+ split.itemR(pchan, "ik_dof_x", text="X")
+ row = split.row()
+ row.itemR(pchan, "ik_stiffness_x", text="Stiffness", slider=True)
+ row.active = pchan.ik_dof_x
+
+ split = layout.split(percentage=0.25)
+ row = split.row()
+ row.itemR(pchan, "ik_limit_x", text="Limit")
+ row.active = pchan.ik_dof_x
+ row = split.row(align=True)
+ row.itemR(pchan, "ik_min_x", text="")
+ row.itemR(pchan, "ik_max_x", text="")
+ row.active = pchan.ik_dof_x and pchan.ik_limit_x
+
+ split = layout.split(percentage=0.25)
+ split.itemR(pchan, "ik_dof_y", text="Y")
+ row = split.row()
+ row.itemR(pchan, "ik_stiffness_y", text="Stiffness", slider=True)
+ row.active = pchan.ik_dof_y
+
+ split = layout.split(percentage=0.25)
+ row = split.row()
+ row.itemR(pchan, "ik_limit_y", text="Limit")
+ row.active = pchan.ik_dof_y
+ row = split.row(align=True)
+ row.itemR(pchan, "ik_min_y", text="")
+ row.itemR(pchan, "ik_max_y", text="")
+ row.active = pchan.ik_dof_y and pchan.ik_limit_y
+
+ split = layout.split(percentage=0.25)
+ split.itemR(pchan, "ik_dof_z", text="Z")
+ row = split.row()
+ row.itemR(pchan, "ik_stiffness_z", text="Stiffness", slider=True)
+ row.active = pchan.ik_dof_z
+
+ split = layout.split(percentage=0.25)
+ row = split.row()
+ row.itemR(pchan, "ik_limit_z", text="Limit")
+ row.active = pchan.ik_dof_z
+ row = split.row(align=True)
+ row.itemR(pchan, "ik_min_z", text="")
+ row.itemR(pchan, "ik_max_z", text="")
+ row.active = pchan.ik_dof_z and pchan.ik_limit_z
+ split = layout.split()
+ split.itemR(pchan, "ik_stretch", text="Stretch", slider=True)
+ split.itemL()
+
+ if ob.pose.ik_solver == "ITASC":
+ layout.itemL(text="Joint constraint:")
+ split = layout.split(percentage=0.3)
+ row = split.row()
+ row.itemR(pchan, "ik_rot_control", text="Rotation")
+ row = split.row()
+ row.itemR(pchan, "ik_rot_weight", text="Weight", slider=True)
+ row.active = pchan.ik_rot_control
+ # not supported yet
+ #split = layout.split(percentage=0.3)
+ #row = split.row()
+ #row.itemR(pchan, "ik_lin_control", text="Size")
+ #row = split.row()
+ #row.itemR(pchan, "ik_lin_weight", text="Weight", slider=True)
+ #row.active = pchan.ik_lin_control
+
+class BONE_PT_iksolver_itasc(ConstraintButtonsPanel):
+ __label__ = "iTaSC parameters"
+ __default_closed__ = True
+ __context__ = "bone_constraint"
+
+ def poll(self, context):
+ ob = context.object
+ bone = context.bone
+
+ if ob and bone:
+ pchan = ob.pose.pose_channels[bone.name]
+ return pchan.has_ik and ob.pose.ik_solver == "ITASC" and ob.pose.ik_param
+
+ return False
+
+ def draw(self, context):
+ layout = self.layout
+
+ ob = context.object
+ itasc = ob.pose.ik_param
+
+ layout.itemR(itasc, "mode", expand=True)
+ simulation = itasc.mode == "SIMULATION"
+ if simulation:
+ layout.itemL(text="Reiteration:")
+ layout.itemR(itasc, "reiteration", expand=True)
+
+ flow = layout.column_flow()
+ flow.itemR(itasc, "precision", text="Prec")
+ flow.itemR(itasc, "num_iter", text="Iter")
+ flow.active = not simulation or itasc.reiteration != "NEVER"
+
+ if simulation:
+ layout.itemR(itasc, "auto_step")
+ row = layout.row()
+ if itasc.auto_step:
+ row.itemR(itasc, "min_step", text="Min")
+ row.itemR(itasc, "max_step", text="Max")
+ else:
+ row.itemR(itasc, "num_step")
+
+ layout.itemR(itasc, "solver")
+ if simulation:
+ layout.itemR(itasc, "feedback")
+ layout.itemR(itasc, "max_velocity")
+ if itasc.solver == "DLS":
+ row = layout.row()
+ row.itemR(itasc, "dampmax", text="Damp", slider=True)
+ row.itemR(itasc, "dampeps", text="Eps", slider=True)
+
class BONE_PT_constraints(ConstraintButtonsPanel):
__label__ = "Constraints"
__context__ = "bone_constraint"
@@ -558,4 +697,6 @@
self.draw_constraint(context, con)
bpy.types.register(OBJECT_PT_constraints)
+bpy.types.register(BONE_PT_iksolver_itasc)
+bpy.types.register(BONE_PT_inverse_kinematics)
bpy.types.register(BONE_PT_constraints)
Modified: trunk/blender/source/blender/blenkernel/intern/action.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/action.c 2009-10-02 07:03:58 UTC (rev 23601)
+++ trunk/blender/source/blender/blenkernel/intern/action.c 2009-10-02 07:20:07 UTC (rev 23602)
@@ -535,7 +535,7 @@
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list