[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25216] trunk/blender/release/scripts/ modules: - modify for Cessens updated spine

Campbell Barton ideasman42 at gmail.com
Tue Dec 8 18:00:53 CET 2009


Revision: 25216
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25216
Author:   campbellbarton
Date:     2009-12-08 18:00:53 +0100 (Tue, 08 Dec 2009)

Log Message:
-----------
- modify for Cessens updated spine
- Neck example didnt account for some possible problems when linking to the body
- foot IK were referencing the wrong bones
- updated some example rigs
- graph constraint arrow direction was incorrect

Modified Paths:
--------------
    trunk/blender/release/scripts/modules/graphviz_export.py
    trunk/blender/release/scripts/modules/rigify/arm.py
    trunk/blender/release/scripts/modules/rigify/neck.py
    trunk/blender/release/scripts/modules/rigify/spine.py

Modified: trunk/blender/release/scripts/modules/graphviz_export.py
===================================================================
--- trunk/blender/release/scripts/modules/graphviz_export.py	2009-12-08 16:39:00 UTC (rev 25215)
+++ trunk/blender/release/scripts/modules/graphviz_export.py	2009-12-08 17:00:53 UTC (rev 25216)
@@ -51,7 +51,7 @@
     return "* " + text
 
 
-def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True, XTRA_INFO=False):
+def graph_armature(obj, path, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=True, XTRA_INFO=True):
     CONSTRAINTS = DRIVERS = True
 
     fileobject = open(path, "w")
@@ -131,7 +131,7 @@
                     if XTRA_INFO:
                         label = "%s\n%s" % (constraint.type, constraint.name)
                         opts.append('label="%s"' % compat_str(label))
-                    fw('"%s" -> "%s" [%s] ;\n' % (subtarget, pbone.name, ','.join(opts)))
+                    fw('"%s" -> "%s" [%s] ;\n' % (pbone.name, subtarget, ','.join(opts)))
 
     # Drivers
     if DRIVERS:

Modified: trunk/blender/release/scripts/modules/rigify/arm.py
===================================================================
--- trunk/blender/release/scripts/modules/rigify/arm.py	2009-12-08 16:39:00 UTC (rev 25215)
+++ trunk/blender/release/scripts/modules/rigify/arm.py	2009-12-08 17:00:53 UTC (rev 25216)
@@ -77,8 +77,8 @@
         if index == 2:
             hands.append(pbone)
 
-    if len(hands) > 1:
-        raise Exception("more then 1 hand found on:", orig_bone_name)
+    if len(hands) != 1:
+        raise Exception("Expected more then 1 hand found on:", orig_bone_name)
 
     # first add the 2 new bones
     mt.hand_p = hands[0]

Modified: trunk/blender/release/scripts/modules/rigify/neck.py
===================================================================
--- trunk/blender/release/scripts/modules/rigify/neck.py	2009-12-08 16:39:00 UTC (rev 25215)
+++ trunk/blender/release/scripts/modules/rigify/neck.py	2009-12-08 17:00:53 UTC (rev 25216)
@@ -27,19 +27,20 @@
 
 
 def metarig_template():
+    # generated by rigify.write_meta_rig
     bpy.ops.object.mode_set(mode='EDIT')
     obj = bpy.context.object
     arm = obj.data
     bone = arm.edit_bones.new('body')
     bone.head[:] = -0.0000, -0.2771, -1.3345
-    bone.tail[:] = -0.0000, -0.1708, -0.3984
+    bone.tail[:] = -0.0000, -0.1708, -0.1984
     bone.roll = 0.0000
     bone.connected = False
     bone = arm.edit_bones.new('head')
     bone.head[:] = -0.0000, -0.1708, -0.1984
-    bone.tail[:] = 0.0000, -0.1708, 1.6016
-    bone.roll = -0.0000
-    bone.connected = False
+    bone.tail[:] = 0.0000, 0.7292, 1.3604
+    bone.roll = 0.0000
+    bone.connected = True
     bone.parent = arm.edit_bones['body']
     bone = arm.edit_bones.new('neck.01')
     bone.head[:] = 0.0000, -0.1708, -0.1984
@@ -116,7 +117,7 @@
         setattr(mt_chain, attr, neck_chain[i])
     mt_chain.update()
 
-    neck_chain_basename = mt_chain.neck_01_e.basename
+    neck_chain_basename = base_names[mt_chain.neck_01_e.name].split(".")[0]
     neck_chain_segment_length = mt_chain.neck_01_e.length
 
     ex = bone_class_instance(obj, ["body", "head", "head_hinge", "neck_socket"]) # hinge & extras
@@ -125,7 +126,8 @@
 
 
     # Copy the head bone and offset
-    ex.head_e = copy_bone_simple(arm, mt.head, "MCH_%s" % mt.head, parent=True)
+    ex.head_e = copy_bone_simple(arm, mt.head, "MCH_%s" % base_names[mt.head], parent=True)
+    ex.head_e.connected = False
     ex.head = ex.head_e.name
     # offset
     head_length = ex.head_e.length
@@ -133,17 +135,20 @@
     ex.head_e.tail.y += head_length / 2.0
 
     # Yes, use the body bone but call it a head hinge
-    ex.head_hinge_e = copy_bone_simple(arm, mt.body, "MCH_%s_hinge" % mt.head, parent=True)
+    ex.head_hinge_e = copy_bone_simple(arm, mt.body, "MCH_%s_hinge" % base_names[mt.head], parent=True)
+    ex.head_hinge_e.connected = False
     ex.head_hinge = ex.head_hinge_e.name
     ex.head_hinge_e.head.y += head_length / 4.0
     ex.head_hinge_e.tail.y += head_length / 4.0
 
     # reparent the head, assume its not connected
+    mt.head_e.connected = False
     mt.head_e.parent = ex.head_hinge_e
 
     # Insert the neck socket, the head copys this loation
     ex.neck_socket_e = arm.edit_bones.new("MCH-%s_socked" % neck_chain_basename)
     ex.neck_socket = ex.neck_socket_e.name
+    ex.neck_socket_e.connected = False
     ex.neck_socket_e.parent = mt.body_e
     ex.neck_socket_e.head = mt.head_e.head
     ex.neck_socket_e.tail = mt.head_e.head - Vector(0.0, neck_chain_segment_length / 2.0, 0.0)
@@ -157,12 +162,12 @@
         neck_e = getattr(mt_chain, attr + "_e")
 
         # dont store parent names, re-reference as each chain bones parent.
-        neck_e_parent = arm.edit_bones.new("MCH-rot_%s" % neck_e.name)
+        neck_e_parent = arm.edit_bones.new("MCH-rot_%s" % base_names[neck_e.name])
         neck_e_parent.head = neck_e.head
         neck_e_parent.tail = neck_e.head + ((mt.head_e.tail - mt.head_e.head).normalize() * neck_chain_segment_length / 2.0)
         neck_e_parent.roll = mt.head_e.roll
+        
 
-
         orig_parent = neck_e.parent
         neck_e.connected = False
         neck_e.parent = neck_e_parent
@@ -221,7 +226,7 @@
     head_driver_path = mt.head_p.path_to_id()
 
     target_names = [("b%.2d" % (i + 1)) for i in range(len(neck_chain))]
-
+    
     mt.head_p["bend_tot"] = 0.0
     fcurve = mt.head_p.driver_add('["bend_tot"]', 0)
     driver = fcurve.driver
@@ -234,8 +239,8 @@
         tar.id_type = 'OBJECT'
         tar.id = obj
         tar.rna_path = head_driver_path + ('["bend_%.2d"]' % (i + 1))
+    
 
-
     for i, attr in enumerate(mt_chain.attr_names):
         neck_p = getattr(mt_chain, attr + "_p")
         neck_p.lock_location = True, True, True
@@ -264,17 +269,17 @@
         driver = fcurve.driver
         driver.type = 'SCRIPTED'
         driver.expression = "bend/bend_tot"
-
+        
         fcurve.modifiers.remove(0) # grr dont need a modifier
+        
 
-
         # add target
         tar = driver.targets.new()
         tar.name = "bend_tot"
         tar.id_type = 'OBJECT'
         tar.id = obj
         tar.rna_path = head_driver_path + ('["bend_tot"]')
-
+        
         tar = driver.targets.new()
         tar.name = "bend"
         tar.id_type = 'OBJECT'

Modified: trunk/blender/release/scripts/modules/rigify/spine.py
===================================================================
--- trunk/blender/release/scripts/modules/rigify/spine.py	2009-12-08 16:39:00 UTC (rev 25215)
+++ trunk/blender/release/scripts/modules/rigify/spine.py	2009-12-08 17:00:53 UTC (rev 25216)
@@ -27,6 +27,7 @@
 
 
 def metarig_template():
+    # generated by rigify.write_meta_rig
     bpy.ops.object.mode_set(mode='EDIT')
     obj = bpy.context.object
     arm = obj.data
@@ -86,7 +87,7 @@
 
     bpy.ops.object.mode_set(mode='OBJECT')
     pbone = obj.pose.bones['rib_cage']
-    pbone['type'] = 'spine'
+    pbone['type'] = 'spine.fk'
 
 
 def metarig_definition(obj, orig_bone_name):
@@ -139,47 +140,55 @@
 
     child = spine_chain[0]
     spine_chain_segment_length = child.length
-    child.parent = mt.pelvis_e # was mt.ribcage
+    #child.parent = mt.pelvis_e # was mt.ribcage
 
     # The first bone in the chain happens to be the basis of others, create them now
-    ex = bone_class_instance(obj, ["pelvis", "ribcage", "ribcage_hinge", "spine_rotate"])
+    ex = bone_class_instance(obj, ["pelvis", "pelvis_copy", "ribcage", "ribcage_hinge", "ribcage_copy", "spine_rotate"])
     df = bone_class_instance(obj, ["pelvis", "ribcage"]) # DEF-wgt_pelvis, DEF-wgt_rib_cage
 
+    ex.pelvis_copy_e = copy_bone_simple(arm, mt.pelvis, base_names[mt.pelvis]) # no parent
+    ex.pelvis_copy = ex.pelvis_copy_e.name
 
     # copy the pelvis, offset to make MCH-spine_rotate and MCH-ribcage_hinge
-    ex.ribcage_hinge_e = copy_bone_simple(arm, mt.pelvis, "MCH-%s_hinge" % mt.ribcage)
+    ex.ribcage_hinge_e = copy_bone_simple(arm, mt.pelvis, "MCH-%s_hinge" % base_names[mt.ribcage])
     ex.ribcage_hinge = ex.ribcage_hinge_e.name
     ex.ribcage_hinge_e.translate(Vector(0.0, spine_chain_segment_length / 4.0, 0.0))
-    mt.ribcage_e.parent = ex.ribcage_hinge_e
 
     ex.spine_rotate_e = copy_bone_simple(arm, mt.pelvis, "MCH-%s_rotate" % spine_chain_basename)
     ex.spine_rotate = ex.spine_rotate_e.name
     ex.spine_rotate_e.translate(Vector(0.0, spine_chain_segment_length / 2.0, 0.0))
     # swap head/tail
     ex.spine_rotate_e.head, ex.spine_rotate_e.tail = ex.spine_rotate_e.tail.copy(), ex.spine_rotate_e.head.copy()
-    ex.spine_rotate_e.parent = mt.pelvis_e
+    ex.spine_rotate_e.connected = False
+    ex.spine_rotate_e.parent = ex.pelvis_copy_e
 
-    df.pelvis_e = copy_bone_simple(arm, child.name, "DEF-wgt_%s" % mt.pelvis)
+    df.pelvis_e = copy_bone_simple(arm, child.name, "DEF-wgt_%s" % base_names[mt.pelvis])
     df.pelvis = df.pelvis_e.name
     df.pelvis_e.translate(Vector(spine_chain_segment_length * 2.0, - spine_chain_segment_length, 0.0))
 
-    ex.pelvis_e = copy_bone_simple(arm, child.name, "MCH-wgt_%s" % mt.pelvis)
+    ex.pelvis_e = copy_bone_simple(arm, child.name, "MCH-wgt_%s" % base_names[mt.pelvis])
     ex.pelvis = ex.pelvis_e.name
     ex.pelvis_e.translate(Vector(0.0, - spine_chain_segment_length, 0.0))
-    ex.pelvis_e.parent = mt.pelvis_e
+    ex.pelvis_e.connected = False
+    ex.pelvis_e.parent = ex.pelvis_copy_e
 
     # Copy the last bone now
     child = spine_chain[-1]
 
-    df.ribcage_e = copy_bone_simple(arm, child.name, "DEF-wgt_%s" % mt.ribcage)
+    df.ribcage_e = copy_bone_simple(arm, child.name, "DEF-wgt_%s" % base_names[mt.ribcage])
     df.ribcage = df.ribcage_e.name
     df.ribcage_e.translate(Vector(spine_chain_segment_length * 2.0, - df.ribcage_e.length / 2.0, 0.0))
 
-    ex.ribcage_e = copy_bone_simple(arm, child.name, "MCH-wgt_%s" % mt.ribcage)
+    ex.ribcage_e = copy_bone_simple(arm, child.name, "MCH-wgt_%s" % base_names[mt.ribcage])
     ex.ribcage = ex.ribcage_e.name
     ex.ribcage_e.translate(Vector(0.0, - ex.ribcage_e.length / 2.0, 0.0))
     ex.ribcage_e.parent = mt.ribcage_e
 
+    ex.ribcage_copy_e = copy_bone_simple(arm, child.name, base_names[mt.ribcage])
+    ex.ribcage_copy = ex.ribcage_copy_e.name
+    ex.ribcage_copy_e.connected = False
+    ex.ribcage_copy_e.parent = ex.ribcage_hinge_e
+
     spine_chain = [child.name for child in spine_chain]
 
     # We have 3 spine chains

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list