[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