[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25287] trunk/blender/release/scripts/ modules/rigify: missed editing the sample rigs, Cessen likes palm_curl. py better

Campbell Barton ideasman42 at gmail.com
Thu Dec 10 14:45:16 CET 2009


Revision: 25287
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25287
Author:   campbellbarton
Date:     2009-12-10 14:45:16 +0100 (Thu, 10 Dec 2009)

Log Message:
-----------
missed editing the sample rigs, Cessen likes palm_curl.py better

Modified Paths:
--------------
    trunk/blender/release/scripts/modules/rigify/arm_biped_generic.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/neck_flex.py
    trunk/blender/release/scripts/modules/rigify/spine_pivot_flex.py

Added Paths:
-----------
    trunk/blender/release/scripts/modules/rigify/palm_curl.py

Removed Paths:
-------------
    trunk/blender/release/scripts/modules/rigify/palm_spread.py

Modified: trunk/blender/release/scripts/modules/rigify/arm_biped_generic.py
===================================================================
--- trunk/blender/release/scripts/modules/rigify/arm_biped_generic.py	2009-12-10 13:34:21 UTC (rev 25286)
+++ trunk/blender/release/scripts/modules/rigify/arm_biped_generic.py	2009-12-10 13:45:16 UTC (rev 25287)
@@ -57,7 +57,7 @@
 
     bpy.ops.object.mode_set(mode='OBJECT')
     pbone = obj.pose.bones['upper_arm']
-    pbone['type'] = 'arm'
+    pbone['type'] = 'arm_biped_generic'
 
 
 def metarig_definition(obj, orig_bone_name):

Modified: trunk/blender/release/scripts/modules/rigify/finger_curl.py
===================================================================
--- trunk/blender/release/scripts/modules/rigify/finger_curl.py	2009-12-10 13:34:21 UTC (rev 25286)
+++ trunk/blender/release/scripts/modules/rigify/finger_curl.py	2009-12-10 13:45:16 UTC (rev 25287)
@@ -51,7 +51,7 @@
 
     bpy.ops.object.mode_set(mode='OBJECT')
     pbone = obj.pose.bones['finger.01']
-    pbone['type'] = 'finger'
+    pbone['type'] = 'finger_curl'
 
 
 def metarig_definition(obj, orig_bone_name):

Modified: trunk/blender/release/scripts/modules/rigify/leg_biped_generic.py
===================================================================
--- trunk/blender/release/scripts/modules/rigify/leg_biped_generic.py	2009-12-10 13:34:21 UTC (rev 25286)
+++ trunk/blender/release/scripts/modules/rigify/leg_biped_generic.py	2009-12-10 13:45:16 UTC (rev 25287)
@@ -68,7 +68,7 @@
 
     bpy.ops.object.mode_set(mode='OBJECT')
     pbone = obj.pose.bones['thigh']
-    pbone['type'] = 'leg'
+    pbone['type'] = 'leg_biped_generic'
 
 
 def metarig_definition(obj, orig_bone_name):

Modified: trunk/blender/release/scripts/modules/rigify/neck_flex.py
===================================================================
--- trunk/blender/release/scripts/modules/rigify/neck_flex.py	2009-12-10 13:34:21 UTC (rev 25286)
+++ trunk/blender/release/scripts/modules/rigify/neck_flex.py	2009-12-10 13:45:16 UTC (rev 25287)
@@ -75,7 +75,7 @@
 
     bpy.ops.object.mode_set(mode='OBJECT')
     pbone = obj.pose.bones['head']
-    pbone['type'] = 'neck'
+    pbone['type'] = 'neck_flex'
 
 
 def metarig_definition(obj, orig_bone_name):

Copied: trunk/blender/release/scripts/modules/rigify/palm_curl.py (from rev 25286, trunk/blender/release/scripts/modules/rigify/palm_spread.py)
===================================================================
--- trunk/blender/release/scripts/modules/rigify/palm_curl.py	                        (rev 0)
+++ trunk/blender/release/scripts/modules/rigify/palm_curl.py	2009-12-10 13:45:16 UTC (rev 25287)
@@ -0,0 +1,213 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+#  This program is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License
+#  as published by the Free Software Foundation; either version 2
+#  of the License, or (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software Foundation,
+#  Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+# <pep8 compliant>
+
+import bpy
+from rigify_utils import copy_bone_simple, get_side_name
+from rna_prop_ui import rna_idprop_ui_prop_get
+
+# not used, defined for completeness
+METARIG_NAMES = tuple()
+
+def metarig_template():
+    # generated by rigify.write_meta_rig
+    bpy.ops.object.mode_set(mode='EDIT')
+    obj = bpy.context.active_object
+    arm = obj.data
+    bone = arm.edit_bones.new('hand')
+    bone.head[:] = 0.0082, -1.2492, 0.0000
+    bone.tail[:] = 0.0423, -0.4150, 0.0000
+    bone.roll = 0.0000
+    bone.connected = False
+    bone = arm.edit_bones.new('palm.03')
+    bone.head[:] = 0.0000, 0.0000, -0.0000
+    bone.tail[:] = 0.0506, 1.2781, -0.1299
+    bone.roll = -3.1396
+    bone.connected = False
+    bone.parent = arm.edit_bones['hand']
+    bone = arm.edit_bones.new('palm.02')
+    bone.head[:] = 0.5000, -0.0000, 0.0000
+    bone.tail[:] = 0.6433, 1.2444, -0.1299
+    bone.roll = -3.1357
+    bone.connected = False
+    bone.parent = arm.edit_bones['hand']
+    bone = arm.edit_bones.new('palm.01')
+    bone.head[:] = 1.0000, 0.0000, 0.0000
+    bone.tail[:] = 1.3961, 1.0084, -0.1299
+    bone.roll = -3.1190
+    bone.connected = False
+    bone.parent = arm.edit_bones['hand']
+    bone = arm.edit_bones.new('palm.04')
+    bone.head[:] = -0.5000, 0.0000, -0.0000
+    bone.tail[:] = -0.5674, 1.2022, -0.1299
+    bone.roll = 3.1386
+    bone.connected = False
+    bone.parent = arm.edit_bones['hand']
+    bone = arm.edit_bones.new('palm.05')
+    bone.head[:] = -1.0000, 0.0000, -0.0000
+    bone.tail[:] = -1.3286, 1.0590, -0.1299
+    bone.roll = 3.1239
+    bone.connected = False
+    bone.parent = arm.edit_bones['hand']
+    bone = arm.edit_bones.new('thumb')
+    bone.head[:] = 1.3536, -0.2941, 0.0000
+    bone.tail[:] = 2.1109, 0.4807, -0.1299
+    bone.roll = -3.0929
+    bone.connected = False
+    bone.parent = arm.edit_bones['hand']
+
+    bpy.ops.object.mode_set(mode='OBJECT')
+    pbone = obj.pose.bones['palm.01']
+    pbone['type'] = 'palm_curl'
+
+
+def metarig_definition(obj, orig_bone_name):
+    '''
+    The bone given is the first in an array of siblings with a matching basename
+    sorted with pointer first, little finger last.
+    eg.
+        [pointer, middle, ring, pinky... ] # any number of fingers
+    '''
+    arm = obj.data
+
+    palm_bone = arm.bones[orig_bone_name]
+    palm_parent = palm_bone.parent
+    palm_base = palm_bone.basename
+    bone_definition = [bone.name for bone in palm_parent.children if bone.basename == palm_base]
+    bone_definition.sort()
+    bone_definition.reverse()
+
+    return [palm_parent.name] + bone_definition
+
+
+def main(obj, bone_definition, base_names):
+    arm = obj.data
+
+    children = bone_definition[1:]
+
+    # Make a copy of the pinky
+    # simply assume the pinky has the lowest name
+    pinky_ebone = arm.edit_bones[children[0]]
+    ring_ebone = arm.edit_bones[children[1]]
+
+    # FIXME, why split the second one?
+    base_name = base_names[pinky_ebone.name].rsplit('.', 2)[0]
+
+    control_ebone = copy_bone_simple(arm, pinky_ebone.name, base_name + get_side_name(base_names[pinky_ebone.name]), parent=True)
+    control_name = control_ebone.name
+
+    offset = (pinky_ebone.head - ring_ebone.head)
+
+    control_ebone.translate(offset)
+
+    bpy.ops.object.mode_set(mode='OBJECT')
+
+
+    arm, control_pbone, control_ebone = get_bone_data(obj, control_name)
+    arm, pinky_pbone, pinky_ebone = get_bone_data(obj, children[0])
+
+    control_pbone.rotation_mode = 'YZX'
+    control_pbone.lock_rotation = False, True, True
+
+    driver_fcurves = pinky_pbone.driver_add("rotation_euler")
+
+
+    controller_path = control_pbone.path_to_id()
+
+    # add custom prop
+    control_pbone["spread"] = 0.0
+    prop = rna_idprop_ui_prop_get(control_pbone, "spread", create=True)
+    prop["soft_min"] = -1.0
+    prop["soft_max"] = 1.0
+
+
+    # *****
+    driver = driver_fcurves[0].driver
+    driver.type = 'AVERAGE'
+
+    tar = driver.targets.new()
+    tar.name = "x"
+    tar.id_type = 'OBJECT'
+    tar.id = obj
+    tar.rna_path = controller_path + ".rotation_euler[0]"
+
+
+    # *****
+    driver = driver_fcurves[1].driver
+    driver.expression = "-x/4.0"
+
+    tar = driver.targets.new()
+    tar.name = "x"
+    tar.id_type = 'OBJECT'
+    tar.id = obj
+    tar.rna_path = controller_path + ".rotation_euler[0]"
+
+
+    # *****
+    driver = driver_fcurves[2].driver
+    driver.expression = "(1.0-cos(x))-s"
+    tar = driver.targets.new()
+    tar.name = "x"
+    tar.id_type = 'OBJECT'
+    tar.id = obj
+    tar.rna_path = controller_path + ".rotation_euler[0]"
+
+    tar = driver.targets.new()
+    tar.name = "s"
+    tar.id_type = 'OBJECT'
+    tar.id = obj
+    tar.rna_path = controller_path + '["spread"]'
+
+
+    for i, child_name in enumerate(children):
+        child_pbone = obj.pose.bones[child_name]
+        child_pbone.rotation_mode = 'YZX'
+
+        if child_name != children[-1] and child_name != children[0]:
+
+            # this is somewhat arbitrary but seems to look good
+            inf = i / (len(children) + 1)
+            inf = 1.0 - inf
+            inf = ((inf * inf) + inf) / 2.0
+
+            # used for X/Y constraint
+            inf_minor = inf * inf
+
+            con = child_pbone.constraints.new('COPY_ROTATION')
+            con.name = "Copy Z Rot"
+            con.target = obj
+            con.subtarget = children[0] # also pinky_pbone
+            con.owner_space = con.target_space = 'LOCAL'
+            con.use_x, con.use_y, con.use_z = False, False, True
+            con.influence = inf
+
+            con = child_pbone.constraints.new('COPY_ROTATION')
+            con.name = "Copy XY Rot"
+            con.target = obj
+            con.subtarget = children[0] # also pinky_pbone
+            con.owner_space = con.target_space = 'LOCAL'
+            con.use_x, con.use_y, con.use_z = True, True, False
+            con.influence = inf_minor
+
+
+    child_pbone = obj.pose.bones[children[-1]]
+    child_pbone.rotation_mode = 'QUATERNION'
+
+    # no blending the result of this
+    return None

Deleted: trunk/blender/release/scripts/modules/rigify/palm_spread.py
===================================================================
--- trunk/blender/release/scripts/modules/rigify/palm_spread.py	2009-12-10 13:34:21 UTC (rev 25286)
+++ trunk/blender/release/scripts/modules/rigify/palm_spread.py	2009-12-10 13:45:16 UTC (rev 25287)
@@ -1,213 +0,0 @@
-# ##### BEGIN GPL LICENSE BLOCK #####
-#
-#  This program is free software; you can redistribute it and/or
-#  modify it under the terms of the GNU General Public License
-#  as published by the Free Software Foundation; either version 2
-#  of the License, or (at your option) any later version.
-#
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list