[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25673] trunk/blender/release/scripts/ modules/rigify: patch from Cessen

Campbell Barton ideasman42 at gmail.com
Sun Jan 3 00:43:46 CET 2010


Revision: 25673
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25673
Author:   campbellbarton
Date:     2010-01-03 00:43:46 +0100 (Sun, 03 Jan 2010)

Log Message:
-----------
patch from Cessen
Adds a new set of bones to rig types which are to be used for weight paint vgroups, in some these have some more segments to account for twist. also use Aligoriths new copy transform constraint.

Modified Paths:
--------------
    trunk/blender/release/scripts/modules/rigify/__init__.py
    trunk/blender/release/scripts/modules/rigify/arm_biped_generic.py
    trunk/blender/release/scripts/modules/rigify/copy.py
    trunk/blender/release/scripts/modules/rigify/finger_curl.py
    trunk/blender/release/scripts/modules/rigify/leg_biped_generic.py
    trunk/blender/release/scripts/modules/rigify/leg_quadruped_generic.py
    trunk/blender/release/scripts/modules/rigify/neck_flex.py
    trunk/blender/release/scripts/modules/rigify/palm_curl.py
    trunk/blender/release/scripts/modules/rigify/spine_pivot_flex.py

Modified: trunk/blender/release/scripts/modules/rigify/__init__.py
===================================================================
--- trunk/blender/release/scripts/modules/rigify/__init__.py	2010-01-02 23:14:01 UTC (rev 25672)
+++ trunk/blender/release/scripts/modules/rigify/__init__.py	2010-01-02 23:43:46 UTC (rev 25673)
@@ -26,7 +26,13 @@
 SPECIAL_TYPES = "root",
 LAYER_TYPES = "main", "extra", "ik", "fk"
 
+ORG_LAYERS = [n==31 for n in range(0,32)]
+MCH_LAYERS = [n==30 for n in range(0,32)]
+DEF_LAYERS = [n==29 for n in range(0,32)] 
 
+
+
+
 class RigifyError(Exception):
     """Exception raised for errors in the metarig.
     """
@@ -341,10 +347,14 @@
     layer_second_last[30] = True
 
     for bone_name, bone in arm.bones.items():
+        bone.deform = False  # Non DEF bones shouldn't deform
         if bone_name.startswith(prefix):
-            bone.layer = layer_last
-        elif bone_name.startswith("MCH"): # XXX fixme
-            bone.layer = layer_second_last
+            bone.layer = ORG_LAYERS
+        elif bone_name.startswith("MCH-"): # XXX fixme
+            bone.layer = MCH_LAYERS
+        elif bone_name.startswith("DEF-"): # XXX fixme
+            bone.layer = DEF_LAYERS
+            bone.deform = True
 
         layer_tot[:] = [max(lay) for lay in zip(layer_tot, bone.layer)]
 

Modified: trunk/blender/release/scripts/modules/rigify/arm_biped_generic.py
===================================================================
--- trunk/blender/release/scripts/modules/rigify/arm_biped_generic.py	2010-01-02 23:14:01 UTC (rev 25672)
+++ trunk/blender/release/scripts/modules/rigify/arm_biped_generic.py	2010-01-02 23:43:46 UTC (rev 25673)
@@ -306,6 +306,12 @@
     farm1.tail = center
     farm2.head = center
     
+    # Create twist bone
+    twist = copy_bone_simple(obj.data, definitions[2], "MCH-arm_twist")
+    twist.connected = False
+    twist.parent = obj.data.edit_bones[definitions[3]]
+    twist.length /= 2
+    
     # Create hand bone
     hand = copy_bone_simple(obj.data, definitions[3], "DEF-%s" % base_names[definitions[3]], parent=True)
     
@@ -314,6 +320,7 @@
     uarm2_name = uarm2.name
     farm1_name = farm1.name
     farm2_name = farm2.name
+    twist_name = twist.name
     hand_name = hand.name
     
     # Leave edit mode
@@ -324,6 +331,7 @@
     uarm2 = obj.pose.bones[uarm2_name]
     farm1 = obj.pose.bones[farm1_name]
     farm2 = obj.pose.bones[farm2_name]
+    twist = obj.pose.bones[twist_name]
     hand = obj.pose.bones[hand_name]
     
     # Upper arm constraints
@@ -346,7 +354,7 @@
     con = farm2.constraints.new('COPY_ROTATION')
     con.name = "copy_rot"
     con.target = obj
-    con.subtarget = definitions[3]
+    con.subtarget = twist.name
     
     con = farm2.constraints.new('DAMPED_TRACK')
     con.name = "trackto"

Modified: trunk/blender/release/scripts/modules/rigify/copy.py
===================================================================
--- trunk/blender/release/scripts/modules/rigify/copy.py	2010-01-02 23:14:01 UTC (rev 25672)
+++ trunk/blender/release/scripts/modules/rigify/copy.py	2010-01-02 23:43:46 UTC (rev 25673)
@@ -61,22 +61,11 @@
     bone = obj.pose.bones[bone_name]
     
     # Constrain to the original bone
-    # XXX. Todo, is this needed if the bone is connected to its parent?
-    con = bone.constraints.new('COPY_LOCATION')
+    con = bone.constraints.new('COPY_TRANSFORMS')
     con.name = "copy_loc"
     con.target = obj
     con.subtarget = definitions[0]
     
-    con = bone.constraints.new('COPY_ROTATION')
-    con.name = "copy_rot"
-    con.target = obj
-    con.subtarget = definitions[0]
-    
-    con = bone.constraints.new('COPY_SCALE')
-    con.name = "copy_scale"
-    con.target = obj
-    con.subtarget = definitions[0]
-    
     return (bone_name,)
 
 
@@ -94,18 +83,10 @@
     cp.update()
     mt.update()
 
-    if not cp.cpy_b.connected:
-        con = mt.cpy_p.constraints.new('COPY_LOCATION')
-        con.target = obj
-        con.subtarget = cp.cpy
-
-    con = mt.cpy_p.constraints.new('COPY_ROTATION')
+    con = mt.cpy_p.constraints.new('COPY_TRANSFORMS')
     con.target = obj
     con.subtarget = cp.cpy
 
-    con = mt.cpy_p.constraints.new('COPY_SCALE')
-    con.target = obj
-    con.subtarget = cp.cpy
 
     # Rotation mode and axis locks
     cp.cpy_p.rotation_mode = mt.cpy_p.rotation_mode

Modified: trunk/blender/release/scripts/modules/rigify/finger_curl.py
===================================================================
--- trunk/blender/release/scripts/modules/rigify/finger_curl.py	2010-01-02 23:14:01 UTC (rev 25672)
+++ trunk/blender/release/scripts/modules/rigify/finger_curl.py	2010-01-02 23:43:46 UTC (rev 25673)
@@ -86,6 +86,68 @@
     return bone_definition
 
 
+def deform(obj, definitions, base_names, options):
+    """ Creates the deform rig.
+    """
+    bpy.ops.object.mode_set(mode='EDIT')
+
+    # Create base digit bones: two bones, each half of the base digit.
+    f1a = copy_bone_simple(obj.data, definitions[0], "DEF-%s.01" % base_names[definitions[0]], parent=True)
+    f1b = copy_bone_simple(obj.data, definitions[0], "DEF-%s.02" % base_names[definitions[0]], parent=True)
+    f1a.connected = False
+    f1b.connected = False
+    f1b.parent = f1a
+    center = f1a.center
+    f1a.tail = center
+    f1b.head = center
+    
+    # Create the other deform bones.
+    f2 = copy_bone_simple(obj.data, definitions[1], "DEF-%s" % base_names[definitions[1]], parent=True)
+    f3 = copy_bone_simple(obj.data, definitions[2], "DEF-%s" % base_names[definitions[2]], parent=True)
+    
+    # Store names before leaving edit mode
+    f1a_name = f1a.name
+    f1b_name = f1b.name
+    f2_name = f2.name
+    f3_name = f3.name
+    
+    # Leave edit mode
+    bpy.ops.object.mode_set(mode='OBJECT')
+    
+    # Get the pose bones
+    f1a = obj.pose.bones[f1a_name]
+    f1b = obj.pose.bones[f1b_name]
+    f2 = obj.pose.bones[f2_name]
+    f3 = obj.pose.bones[f3_name]
+    
+    # Constrain the base digit's bones
+    con = f1a.constraints.new('DAMPED_TRACK')
+    con.name = "trackto"
+    con.target = obj
+    con.subtarget = definitions[1]
+    
+    con = f1a.constraints.new('COPY_SCALE')
+    con.name = "copy_scale"
+    con.target = obj
+    con.subtarget = definitions[0]
+    
+    con = f1b.constraints.new('COPY_ROTATION')
+    con.name = "copy_rot"
+    con.target = obj
+    con.subtarget = definitions[0]
+    
+    # Constrain the other digit's bones
+    con = f2.constraints.new('COPY_TRANSFORMS')
+    con.name = "copy_transforms"
+    con.target = obj
+    con.subtarget = definitions[1]
+    
+    con = f3.constraints.new('COPY_TRANSFORMS')
+    con.name = "copy_transforms"
+    con.target = obj
+    con.subtarget = definitions[2]
+
+
 def main(obj, bone_definition, base_names, options):
     # *** EDITMODE
 
@@ -139,6 +201,7 @@
 
     del control_ebone
 
+    deform(obj, bone_definition, base_names, options)
 
     # *** POSEMODE
     bpy.ops.object.mode_set(mode='OBJECT')

Modified: trunk/blender/release/scripts/modules/rigify/leg_biped_generic.py
===================================================================
--- trunk/blender/release/scripts/modules/rigify/leg_biped_generic.py	2010-01-02 23:14:01 UTC (rev 25672)
+++ trunk/blender/release/scripts/modules/rigify/leg_biped_generic.py	2010-01-02 23:43:46 UTC (rev 25673)
@@ -271,8 +271,7 @@
 
     bpy.ops.object.mode_set(mode='EDIT')
 
-    #return ((None, ik_chain.thigh, ik_chain.shin, ik_chain.foot, ik_chain.toe, None), (ik.foot, ik.knee_target)) # Cessen ???
-    return (None, ik_chain.thigh, ik_chain.shin, ik_chain.foot, ik_chain.toe, None)
+    return (None, ik_chain.thigh, ik_chain.shin, ik_chain.foot, ik_chain.toe, None, ik.foot)
 
 
 def fk(obj, bone_definition, base_names, options):
@@ -364,7 +363,7 @@
     bpy.ops.object.mode_set(mode='EDIT')
 
     # dont blend the hips or heel
-    return None, fk_chain.thigh, fk_chain.shin, fk_chain.foot, fk_chain.toe, None
+    return (None, fk_chain.thigh, fk_chain.shin, fk_chain.foot, fk_chain.toe, None, None)
 
 
 def deform(obj, definitions, base_names, options):
@@ -462,7 +461,7 @@
     con.subtarget = definitions[4]
     
     bpy.ops.object.mode_set(mode='EDIT')
-    return (uleg1_name, uleg2_name, lleg1_name, lleg2_name, foot_name, toe_name)
+    return (uleg1_name, uleg2_name, lleg1_name, lleg2_name, foot_name, toe_name, None)
 
 
 def main(obj, bone_definition, base_names, options):
@@ -471,5 +470,5 @@
     deform(obj, bone_definition, base_names, options)
 
     bpy.ops.object.mode_set(mode='OBJECT')
-    #blend_bone_list(obj, bone_definition, bones_fk, bones_ik[0], target_bone=bones_ik[1][0], target_prop="ik", blend_default=0.0) # Cessen ???
-    blend_bone_list(obj, bone_definition, bones_fk, bones_ik, target_prop="ik", blend_default=0.0)
+    blend_bone_list(obj, bone_definition + [None], bones_fk, bones_ik, target_bone=bones_ik[6], target_prop="ik", blend_default=0.0)
+    

Modified: trunk/blender/release/scripts/modules/rigify/leg_quadruped_generic.py
===================================================================
--- trunk/blender/release/scripts/modules/rigify/leg_quadruped_generic.py	2010-01-02 23:14:01 UTC (rev 25672)
+++ trunk/blender/release/scripts/modules/rigify/leg_quadruped_generic.py	2010-01-02 23:43:46 UTC (rev 25673)
@@ -119,7 +119,7 @@
     ik_chain.thigh_e.parent = mt.hips_e
 
     ik_chain.foot_e.parent = None
-    ik_chain.rename("foot", ik_chain.foot + "_ik")
+    ik_chain.rename("foot", get_base_name(ik_chain.foot) + "_ik" + get_side_name(ik_chain.foot))
 
     # keep the foot_ik as the parent
     ik_chain.toe_e.connected = False
@@ -130,14 +130,14 @@
     # children of ik_foot
     ik = bone_class_instance(obj, ["foot", "foot_roll", "foot_roll_01", "foot_roll_02", "knee_target", "foot_target"])
 
-    ik.knee_target = add_pole_target_bone(obj, mt_chain.shin, "knee_target") #XXX - pick a better name
+    ik.knee_target = add_pole_target_bone(obj, mt_chain.shin, "knee_target" + get_side_name(base_names[mt_chain.foot])) #XXX - pick a better name
     ik.update()
     ik.knee_target_e.parent = mt.hips_e
 
     # foot roll is an interesting one!
     # plot a vector from the toe bones head, bactwards to the length of the foot
     # then align it with the foot but reverse direction.
-    ik.foot_roll_e = copy_bone_simple(arm, mt_chain.toe, base_names[mt_chain.foot] + "_roll")

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list