[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