[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