diff options
author | Nathan Vegdahl <cessen@cessen.com> | 2013-02-16 22:22:20 +0400 |
---|---|---|
committer | Nathan Vegdahl <cessen@cessen.com> | 2013-02-16 22:22:20 +0400 |
commit | 21e99d0bd6b6a71cbf871cc4aaf6f2b744cd3d14 (patch) | |
tree | a9e1ee9327533ef7018dd08272dd54cd231e6534 | |
parent | 3d5172cf6bc017f929818725ccb890084617c519 (diff) |
Rigify: updated naming schemes for control bones.
This required changes to both the default human metarig and some of
the rig types. This updates the naming scheme to match new
best-practices, as per the CGCookie Flexrig.
-rw-r--r-- | rigify/metarigs/human.py | 188 | ||||
-rw-r--r-- | rigify/rigs/biped/arm/__init__.py | 4 | ||||
-rw-r--r-- | rigify/rigs/biped/arm/fk.py | 8 | ||||
-rw-r--r-- | rigify/rigs/biped/arm/ik.py | 13 | ||||
-rw-r--r-- | rigify/rigs/biped/leg/__init__.py | 5 | ||||
-rw-r--r-- | rigify/rigs/biped/leg/fk.py | 8 | ||||
-rw-r--r-- | rigify/rigs/biped/leg/ik.py | 15 | ||||
-rw-r--r-- | rigify/rigs/spine.py | 48 | ||||
-rw-r--r-- | rigify/ui.py | 4 | ||||
-rw-r--r-- | rigify/utils.py | 13 |
10 files changed, 145 insertions, 161 deletions
diff --git a/rigify/metarigs/human.py b/rigify/metarigs/human.py index 6cc92f3b..3eafc988 100644 --- a/rigify/metarigs/human.py +++ b/rigify/metarigs/human.py @@ -83,13 +83,13 @@ def create(obj): bone.use_connect = False bone.parent = arm.edit_bones[bones['hips']] bones['thigh.R'] = bone.name - bone = arm.edit_bones.new('ribs') + bone = arm.edit_bones.new('chest') bone.head[:] = 0.0000, 0.0004, 1.3418 bone.tail[:] = 0.0000, 0.0114, 1.6582 bone.roll = 0.0000 bone.use_connect = True bone.parent = arm.edit_bones[bones['spine']] - bones['ribs'] = bone.name + bones['chest'] = bone.name bone = arm.edit_bones.new('shin.L') bone.head[:] = 0.0980, -0.0286, 0.5372 bone.tail[:] = 0.0980, 0.0162, 0.0852 @@ -109,21 +109,21 @@ def create(obj): bone.tail[:] = 0.0000, -0.0247, 1.7813 bone.roll = 0.0000 bone.use_connect = False - bone.parent = arm.edit_bones[bones['ribs']] + bone.parent = arm.edit_bones[bones['chest']] bones['neck'] = bone.name bone = arm.edit_bones.new('shoulder.L') bone.head[:] = 0.0183, -0.0684, 1.6051 bone.tail[:] = 0.1694, 0.0205, 1.6050 bone.roll = 0.0004 bone.use_connect = False - bone.parent = arm.edit_bones[bones['ribs']] + bone.parent = arm.edit_bones[bones['chest']] bones['shoulder.L'] = bone.name bone = arm.edit_bones.new('shoulder.R') bone.head[:] = -0.0183, -0.0684, 1.6051 bone.tail[:] = -0.1694, 0.0205, 1.6050 bone.roll = -0.0004 bone.use_connect = False - bone.parent = arm.edit_bones[bones['ribs']] + bone.parent = arm.edit_bones[bones['chest']] bones['shoulder.R'] = bone.name bone = arm.edit_bones.new('foot.L') bone.head[:] = 0.0980, 0.0162, 0.0852 @@ -286,13 +286,13 @@ def create(obj): bone.use_connect = False bone.parent = arm.edit_bones[bones['hand.R']] bones['palm.04.R'] = bone.name - bone = arm.edit_bones.new('finger_index.01.L') + bone = arm.edit_bones.new('f_index.01.L') bone.head[:] = 0.7464, 0.0051, 1.2482 bone.tail[:] = 0.7718, 0.0013, 1.2112 bone.roll = -2.0315 bone.use_connect = True bone.parent = arm.edit_bones[bones['palm.01.L']] - bones['finger_index.01.L'] = bone.name + bones['f_index.01.L'] = bone.name bone = arm.edit_bones.new('thumb.01.L') bone.head[:] = 0.6705, 0.0214, 1.2738 bone.tail[:] = 0.6857, 0.0015, 1.2404 @@ -300,34 +300,34 @@ def create(obj): bone.use_connect = False bone.parent = arm.edit_bones[bones['palm.01.L']] bones['thumb.01.L'] = bone.name - bone = arm.edit_bones.new('finger_middle.01.L') + bone = arm.edit_bones.new('f_middle.01.L') bone.head[:] = 0.7518, 0.0277, 1.2487 bone.tail[:] = 0.7762, 0.0234, 1.2058 bone.roll = -2.0067 bone.use_connect = True bone.parent = arm.edit_bones[bones['palm.02.L']] - bones['finger_middle.01.L'] = bone.name - bone = arm.edit_bones.new('finger_ring.01.L') + bones['f_middle.01.L'] = bone.name + bone = arm.edit_bones.new('f_ring.01.L') bone.head[:] = 0.7540, 0.0521, 1.2482 bone.tail[:] = 0.7715, 0.0499, 1.2070 bone.roll = -2.0082 bone.use_connect = True bone.parent = arm.edit_bones[bones['palm.03.L']] - bones['finger_ring.01.L'] = bone.name - bone = arm.edit_bones.new('finger_pinky.01.L') + bones['f_ring.01.L'] = bone.name + bone = arm.edit_bones.new('f_pinky.01.L') bone.head[:] = 0.7528, 0.0763, 1.2428 bone.tail[:] = 0.7589, 0.0765, 1.2156 bone.roll = -1.9749 bone.use_connect = True bone.parent = arm.edit_bones[bones['palm.04.L']] - bones['finger_pinky.01.L'] = bone.name - bone = arm.edit_bones.new('finger_index.01.R') + bones['f_pinky.01.L'] = bone.name + bone = arm.edit_bones.new('f_index.01.R') bone.head[:] = -0.7464, 0.0051, 1.2482 bone.tail[:] = -0.7718, 0.0012, 1.2112 bone.roll = 2.0315 bone.use_connect = True bone.parent = arm.edit_bones[bones['palm.01.R']] - bones['finger_index.01.R'] = bone.name + bones['f_index.01.R'] = bone.name bone = arm.edit_bones.new('thumb.01.R') bone.head[:] = -0.6705, 0.0214, 1.2738 bone.tail[:] = -0.6857, 0.0015, 1.2404 @@ -335,34 +335,34 @@ def create(obj): bone.use_connect = False bone.parent = arm.edit_bones[bones['palm.01.R']] bones['thumb.01.R'] = bone.name - bone = arm.edit_bones.new('finger_middle.01.R') + bone = arm.edit_bones.new('f_middle.01.R') bone.head[:] = -0.7518, 0.0277, 1.2487 bone.tail[:] = -0.7762, 0.0233, 1.2058 bone.roll = 2.0067 bone.use_connect = True bone.parent = arm.edit_bones[bones['palm.02.R']] - bones['finger_middle.01.R'] = bone.name - bone = arm.edit_bones.new('finger_ring.01.R') + bones['f_middle.01.R'] = bone.name + bone = arm.edit_bones.new('f_ring.01.R') bone.head[:] = -0.7540, 0.0521, 1.2482 bone.tail[:] = -0.7715, 0.0499, 1.2070 bone.roll = 2.0082 bone.use_connect = True bone.parent = arm.edit_bones[bones['palm.03.R']] - bones['finger_ring.01.R'] = bone.name - bone = arm.edit_bones.new('finger_pinky.01.R') + bones['f_ring.01.R'] = bone.name + bone = arm.edit_bones.new('f_pinky.01.R') bone.head[:] = -0.7528, 0.0763, 1.2428 bone.tail[:] = -0.7589, 0.0765, 1.2156 bone.roll = 1.9749 bone.use_connect = True bone.parent = arm.edit_bones[bones['palm.04.R']] - bones['finger_pinky.01.R'] = bone.name - bone = arm.edit_bones.new('finger_index.02.L') + bones['f_pinky.01.R'] = bone.name + bone = arm.edit_bones.new('f_index.02.L') bone.head[:] = 0.7718, 0.0013, 1.2112 bone.tail[:] = 0.7840, -0.0003, 1.1858 bone.roll = -1.8799 bone.use_connect = True - bone.parent = arm.edit_bones[bones['finger_index.01.L']] - bones['finger_index.02.L'] = bone.name + bone.parent = arm.edit_bones[bones['f_index.01.L']] + bones['f_index.02.L'] = bone.name bone = arm.edit_bones.new('thumb.02.L') bone.head[:] = 0.6857, 0.0015, 1.2404 bone.tail[:] = 0.7056, -0.0057, 1.2145 @@ -370,34 +370,34 @@ def create(obj): bone.use_connect = True bone.parent = arm.edit_bones[bones['thumb.01.L']] bones['thumb.02.L'] = bone.name - bone = arm.edit_bones.new('finger_middle.02.L') + bone = arm.edit_bones.new('f_middle.02.L') bone.head[:] = 0.7762, 0.0234, 1.2058 bone.tail[:] = 0.7851, 0.0218, 1.1749 bone.roll = -1.8283 bone.use_connect = True - bone.parent = arm.edit_bones[bones['finger_middle.01.L']] - bones['finger_middle.02.L'] = bone.name - bone = arm.edit_bones.new('finger_ring.02.L') + bone.parent = arm.edit_bones[bones['f_middle.01.L']] + bones['f_middle.02.L'] = bone.name + bone = arm.edit_bones.new('f_ring.02.L') bone.head[:] = 0.7715, 0.0499, 1.2070 bone.tail[:] = 0.7794, 0.0494, 1.1762 bone.roll = -1.8946 bone.use_connect = True - bone.parent = arm.edit_bones[bones['finger_ring.01.L']] - bones['finger_ring.02.L'] = bone.name - bone = arm.edit_bones.new('finger_pinky.02.L') + bone.parent = arm.edit_bones[bones['f_ring.01.L']] + bones['f_ring.02.L'] = bone.name + bone = arm.edit_bones.new('f_pinky.02.L') bone.head[:] = 0.7589, 0.0765, 1.2156 bone.tail[:] = 0.7618, 0.0770, 1.1932 bone.roll = -1.9059 bone.use_connect = True - bone.parent = arm.edit_bones[bones['finger_pinky.01.L']] - bones['finger_pinky.02.L'] = bone.name - bone = arm.edit_bones.new('finger_index.02.R') + bone.parent = arm.edit_bones[bones['f_pinky.01.L']] + bones['f_pinky.02.L'] = bone.name + bone = arm.edit_bones.new('f_index.02.R') bone.head[:] = -0.7718, 0.0012, 1.2112 bone.tail[:] = -0.7840, -0.0003, 1.1858 bone.roll = 1.8799 bone.use_connect = True - bone.parent = arm.edit_bones[bones['finger_index.01.R']] - bones['finger_index.02.R'] = bone.name + bone.parent = arm.edit_bones[bones['f_index.01.R']] + bones['f_index.02.R'] = bone.name bone = arm.edit_bones.new('thumb.02.R') bone.head[:] = -0.6857, 0.0015, 1.2404 bone.tail[:] = -0.7056, -0.0057, 1.2145 @@ -405,34 +405,34 @@ def create(obj): bone.use_connect = True bone.parent = arm.edit_bones[bones['thumb.01.R']] bones['thumb.02.R'] = bone.name - bone = arm.edit_bones.new('finger_middle.02.R') + bone = arm.edit_bones.new('f_middle.02.R') bone.head[:] = -0.7762, 0.0233, 1.2058 bone.tail[:] = -0.7851, 0.0218, 1.1749 bone.roll = 1.8283 bone.use_connect = True - bone.parent = arm.edit_bones[bones['finger_middle.01.R']] - bones['finger_middle.02.R'] = bone.name - bone = arm.edit_bones.new('finger_ring.02.R') + bone.parent = arm.edit_bones[bones['f_middle.01.R']] + bones['f_middle.02.R'] = bone.name + bone = arm.edit_bones.new('f_ring.02.R') bone.head[:] = -0.7715, 0.0499, 1.2070 bone.tail[:] = -0.7794, 0.0494, 1.1762 bone.roll = 1.8946 bone.use_connect = True - bone.parent = arm.edit_bones[bones['finger_ring.01.R']] - bones['finger_ring.02.R'] = bone.name - bone = arm.edit_bones.new('finger_pinky.02.R') + bone.parent = arm.edit_bones[bones['f_ring.01.R']] + bones['f_ring.02.R'] = bone.name + bone = arm.edit_bones.new('f_pinky.02.R') bone.head[:] = -0.7589, 0.0765, 1.2156 bone.tail[:] = -0.7618, 0.0770, 1.1932 bone.roll = 1.9059 bone.use_connect = True - bone.parent = arm.edit_bones[bones['finger_pinky.01.R']] - bones['finger_pinky.02.R'] = bone.name - bone = arm.edit_bones.new('finger_index.03.L') + bone.parent = arm.edit_bones[bones['f_pinky.01.R']] + bones['f_pinky.02.R'] = bone.name + bone = arm.edit_bones.new('f_index.03.L') bone.head[:] = 0.7840, -0.0003, 1.1858 bone.tail[:] = 0.7892, 0.0006, 1.1636 bone.roll = -1.6760 bone.use_connect = True - bone.parent = arm.edit_bones[bones['finger_index.02.L']] - bones['finger_index.03.L'] = bone.name + bone.parent = arm.edit_bones[bones['f_index.02.L']] + bones['f_index.03.L'] = bone.name bone = arm.edit_bones.new('thumb.03.L') bone.head[:] = 0.7056, -0.0057, 1.2145 bone.tail[:] = 0.7194, -0.0098, 1.1995 @@ -440,34 +440,34 @@ def create(obj): bone.use_connect = True bone.parent = arm.edit_bones[bones['thumb.02.L']] bones['thumb.03.L'] = bone.name - bone = arm.edit_bones.new('finger_middle.03.L') + bone = arm.edit_bones.new('f_middle.03.L') bone.head[:] = 0.7851, 0.0218, 1.1749 bone.tail[:] = 0.7888, 0.0216, 1.1525 bone.roll = -1.7483 bone.use_connect = True - bone.parent = arm.edit_bones[bones['finger_middle.02.L']] - bones['finger_middle.03.L'] = bone.name - bone = arm.edit_bones.new('finger_ring.03.L') + bone.parent = arm.edit_bones[bones['f_middle.02.L']] + bones['f_middle.03.L'] = bone.name + bone = arm.edit_bones.new('f_ring.03.L') bone.head[:] = 0.7794, 0.0494, 1.1762 bone.tail[:] = 0.7781, 0.0498, 1.1577 bone.roll = -1.6582 bone.use_connect = True - bone.parent = arm.edit_bones[bones['finger_ring.02.L']] - bones['finger_ring.03.L'] = bone.name - bone = arm.edit_bones.new('finger_pinky.03.L') + bone.parent = arm.edit_bones[bones['f_ring.02.L']] + bones['f_ring.03.L'] = bone.name + bone = arm.edit_bones.new('f_pinky.03.L') bone.head[:] = 0.7618, 0.0770, 1.1932 bone.tail[:] = 0.7611, 0.0772, 1.1782 bone.roll = -1.7639 bone.use_connect = True - bone.parent = arm.edit_bones[bones['finger_pinky.02.L']] - bones['finger_pinky.03.L'] = bone.name - bone = arm.edit_bones.new('finger_index.03.R') + bone.parent = arm.edit_bones[bones['f_pinky.02.L']] + bones['f_pinky.03.L'] = bone.name + bone = arm.edit_bones.new('f_index.03.R') bone.head[:] = -0.7840, -0.0003, 1.1858 bone.tail[:] = -0.7892, 0.0006, 1.1636 bone.roll = 1.6760 bone.use_connect = True - bone.parent = arm.edit_bones[bones['finger_index.02.R']] - bones['finger_index.03.R'] = bone.name + bone.parent = arm.edit_bones[bones['f_index.02.R']] + bones['f_index.03.R'] = bone.name bone = arm.edit_bones.new('thumb.03.R') bone.head[:] = -0.7056, -0.0057, 1.2145 bone.tail[:] = -0.7194, -0.0098, 1.1995 @@ -475,27 +475,27 @@ def create(obj): bone.use_connect = True bone.parent = arm.edit_bones[bones['thumb.02.R']] bones['thumb.03.R'] = bone.name - bone = arm.edit_bones.new('finger_middle.03.R') + bone = arm.edit_bones.new('f_middle.03.R') bone.head[:] = -0.7851, 0.0218, 1.1749 bone.tail[:] = -0.7888, 0.0216, 1.1525 bone.roll = 1.7483 bone.use_connect = True - bone.parent = arm.edit_bones[bones['finger_middle.02.R']] - bones['finger_middle.03.R'] = bone.name - bone = arm.edit_bones.new('finger_ring.03.R') + bone.parent = arm.edit_bones[bones['f_middle.02.R']] + bones['f_middle.03.R'] = bone.name + bone = arm.edit_bones.new('f_ring.03.R') bone.head[:] = -0.7794, 0.0494, 1.1762 bone.tail[:] = -0.7781, 0.0498, 1.1577 bone.roll = 1.6582 bone.use_connect = True - bone.parent = arm.edit_bones[bones['finger_ring.02.R']] - bones['finger_ring.03.R'] = bone.name - bone = arm.edit_bones.new('finger_pinky.03.R') + bone.parent = arm.edit_bones[bones['f_ring.02.R']] + bones['f_ring.03.R'] = bone.name + bone = arm.edit_bones.new('f_pinky.03.R') bone.head[:] = -0.7618, 0.0770, 1.1932 bone.tail[:] = -0.7611, 0.0772, 1.1782 bone.roll = 1.7639 bone.use_connect = True - bone.parent = arm.edit_bones[bones['finger_pinky.02.R']] - bones['finger_pinky.03.R'] = bone.name + bone.parent = arm.edit_bones[bones['f_pinky.02.R']] + bones['f_pinky.03.R'] = bone.name bpy.ops.object.mode_set(mode='OBJECT') pbone = obj.pose.bones[bones['hips']] @@ -547,7 +547,7 @@ def create(obj): pbone.rigify_parameters.ik_layers = [False, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] except AttributeError: pass - pbone = obj.pose.bones[bones['ribs']] + pbone = obj.pose.bones[bones['chest']] pbone.rigify_type = '' pbone.lock_location = (False, False, False) pbone.lock_rotation = (False, False, False) @@ -795,7 +795,7 @@ def create(obj): pbone.lock_scale = (False, False, False) pbone.rotation_mode = 'YXZ' pbone.bone.layers = [False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] - pbone = obj.pose.bones[bones['finger_index.01.L']] + pbone = obj.pose.bones[bones['f_index.01.L']] pbone.rigify_type = 'finger' pbone.lock_location = (True, True, True) pbone.lock_rotation = (False, False, False) @@ -827,7 +827,7 @@ def create(obj): pbone.rigify_parameters.separate_extra_layers = True except AttributeError: pass - pbone = obj.pose.bones[bones['finger_middle.01.L']] + pbone = obj.pose.bones[bones['f_middle.01.L']] pbone.rigify_type = 'finger' pbone.lock_location = (True, True, True) pbone.lock_rotation = (False, False, False) @@ -843,7 +843,7 @@ def create(obj): pbone.rigify_parameters.extra_layers = [False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] except AttributeError: pass - pbone = obj.pose.bones[bones['finger_ring.01.L']] + pbone = obj.pose.bones[bones['f_ring.01.L']] pbone.rigify_type = 'finger' pbone.lock_location = (True, True, True) pbone.lock_rotation = (False, False, False) @@ -860,7 +860,7 @@ def create(obj): pbone.rigify_parameters.extra_layers = [False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] except AttributeError: pass - pbone = obj.pose.bones[bones['finger_pinky.01.L']] + pbone = obj.pose.bones[bones['f_pinky.01.L']] pbone.rigify_type = 'finger' pbone.lock_location = (True, True, True) pbone.lock_rotation = (False, False, False) @@ -877,7 +877,7 @@ def create(obj): pbone.rigify_parameters.extra_layers = [False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] except AttributeError: pass - pbone = obj.pose.bones[bones['finger_index.01.R']] + pbone = obj.pose.bones[bones['f_index.01.R']] pbone.rigify_type = 'finger' pbone.lock_location = (True, True, True) pbone.lock_rotation = (False, False, False) @@ -909,7 +909,7 @@ def create(obj): pbone.rigify_parameters.extra_layers = [False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] except AttributeError: pass - pbone = obj.pose.bones[bones['finger_middle.01.R']] + pbone = obj.pose.bones[bones['f_middle.01.R']] pbone.rigify_type = 'finger' pbone.lock_location = (True, True, True) pbone.lock_rotation = (False, False, False) @@ -925,7 +925,7 @@ def create(obj): pbone.rigify_parameters.extra_layers = [False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] except AttributeError: pass - pbone = obj.pose.bones[bones['finger_ring.01.R']] + pbone = obj.pose.bones[bones['f_ring.01.R']] pbone.rigify_type = 'finger' pbone.lock_location = (True, True, True) pbone.lock_rotation = (False, False, False) @@ -941,7 +941,7 @@ def create(obj): pbone.rigify_parameters.extra_layers = [False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] except AttributeError: pass - pbone = obj.pose.bones[bones['finger_pinky.01.R']] + pbone = obj.pose.bones[bones['f_pinky.01.R']] pbone.rigify_type = 'finger' pbone.lock_location = (True, True, True) pbone.lock_rotation = (False, False, False) @@ -957,7 +957,7 @@ def create(obj): pbone.rigify_parameters.extra_layers = [False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] except AttributeError: pass - pbone = obj.pose.bones[bones['finger_index.02.L']] + pbone = obj.pose.bones[bones['f_index.02.L']] pbone.rigify_type = '' pbone.lock_location = (False, False, False) pbone.lock_rotation = (False, False, False) @@ -973,7 +973,7 @@ def create(obj): pbone.lock_scale = (False, False, False) pbone.rotation_mode = 'QUATERNION' pbone.bone.layers = [False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] - pbone = obj.pose.bones[bones['finger_middle.02.L']] + pbone = obj.pose.bones[bones['f_middle.02.L']] pbone.rigify_type = '' pbone.lock_location = (False, False, False) pbone.lock_rotation = (False, False, False) @@ -981,7 +981,7 @@ def create(obj): pbone.lock_scale = (False, False, False) pbone.rotation_mode = 'QUATERNION' pbone.bone.layers = [False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] - pbone = obj.pose.bones[bones['finger_ring.02.L']] + pbone = obj.pose.bones[bones['f_ring.02.L']] pbone.rigify_type = '' pbone.lock_location = (False, False, False) pbone.lock_rotation = (False, False, False) @@ -989,7 +989,7 @@ def create(obj): pbone.lock_scale = (False, False, False) pbone.rotation_mode = 'QUATERNION' pbone.bone.layers = [False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] - pbone = obj.pose.bones[bones['finger_pinky.02.L']] + pbone = obj.pose.bones[bones['f_pinky.02.L']] pbone.rigify_type = '' pbone.lock_location = (False, False, False) pbone.lock_rotation = (False, False, False) @@ -997,7 +997,7 @@ def create(obj): pbone.lock_scale = (False, False, False) pbone.rotation_mode = 'QUATERNION' pbone.bone.layers = [False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] - pbone = obj.pose.bones[bones['finger_index.02.R']] + pbone = obj.pose.bones[bones['f_index.02.R']] pbone.rigify_type = '' pbone.lock_location = (False, False, False) pbone.lock_rotation = (False, False, False) @@ -1013,7 +1013,7 @@ def create(obj): pbone.lock_scale = (False, False, False) pbone.rotation_mode = 'QUATERNION' pbone.bone.layers = [False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] - pbone = obj.pose.bones[bones['finger_middle.02.R']] + pbone = obj.pose.bones[bones['f_middle.02.R']] pbone.rigify_type = '' pbone.lock_location = (False, False, False) pbone.lock_rotation = (False, False, False) @@ -1021,7 +1021,7 @@ def create(obj): pbone.lock_scale = (False, False, False) pbone.rotation_mode = 'QUATERNION' pbone.bone.layers = [False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] - pbone = obj.pose.bones[bones['finger_ring.02.R']] + pbone = obj.pose.bones[bones['f_ring.02.R']] pbone.rigify_type = '' pbone.lock_location = (False, False, False) pbone.lock_rotation = (False, False, False) @@ -1029,7 +1029,7 @@ def create(obj): pbone.lock_scale = (False, False, False) pbone.rotation_mode = 'QUATERNION' pbone.bone.layers = [False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] - pbone = obj.pose.bones[bones['finger_pinky.02.R']] + pbone = obj.pose.bones[bones['f_pinky.02.R']] pbone.rigify_type = '' pbone.lock_location = (False, False, False) pbone.lock_rotation = (False, False, False) @@ -1037,7 +1037,7 @@ def create(obj): pbone.lock_scale = (False, False, False) pbone.rotation_mode = 'QUATERNION' pbone.bone.layers = [False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] - pbone = obj.pose.bones[bones['finger_index.03.L']] + pbone = obj.pose.bones[bones['f_index.03.L']] pbone.rigify_type = '' pbone.lock_location = (False, False, False) pbone.lock_rotation = (False, False, False) @@ -1053,7 +1053,7 @@ def create(obj): pbone.lock_scale = (False, False, False) pbone.rotation_mode = 'QUATERNION' pbone.bone.layers = [False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] - pbone = obj.pose.bones[bones['finger_middle.03.L']] + pbone = obj.pose.bones[bones['f_middle.03.L']] pbone.rigify_type = '' pbone.lock_location = (False, False, False) pbone.lock_rotation = (False, False, False) @@ -1061,7 +1061,7 @@ def create(obj): pbone.lock_scale = (False, False, False) pbone.rotation_mode = 'QUATERNION' pbone.bone.layers = [False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] - pbone = obj.pose.bones[bones['finger_ring.03.L']] + pbone = obj.pose.bones[bones['f_ring.03.L']] pbone.rigify_type = '' pbone.lock_location = (False, False, False) pbone.lock_rotation = (False, False, False) @@ -1069,7 +1069,7 @@ def create(obj): pbone.lock_scale = (False, False, False) pbone.rotation_mode = 'QUATERNION' pbone.bone.layers = [False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] - pbone = obj.pose.bones[bones['finger_pinky.03.L']] + pbone = obj.pose.bones[bones['f_pinky.03.L']] pbone.rigify_type = '' pbone.lock_location = (False, False, False) pbone.lock_rotation = (False, False, False) @@ -1077,7 +1077,7 @@ def create(obj): pbone.lock_scale = (False, False, False) pbone.rotation_mode = 'QUATERNION' pbone.bone.layers = [False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] - pbone = obj.pose.bones[bones['finger_index.03.R']] + pbone = obj.pose.bones[bones['f_index.03.R']] pbone.rigify_type = '' pbone.lock_location = (False, False, False) pbone.lock_rotation = (False, False, False) @@ -1093,7 +1093,7 @@ def create(obj): pbone.lock_scale = (False, False, False) pbone.rotation_mode = 'QUATERNION' pbone.bone.layers = [False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] - pbone = obj.pose.bones[bones['finger_middle.03.R']] + pbone = obj.pose.bones[bones['f_middle.03.R']] pbone.rigify_type = '' pbone.lock_location = (False, False, False) pbone.lock_rotation = (False, False, False) @@ -1101,7 +1101,7 @@ def create(obj): pbone.lock_scale = (False, False, False) pbone.rotation_mode = 'QUATERNION' pbone.bone.layers = [False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] - pbone = obj.pose.bones[bones['finger_ring.03.R']] + pbone = obj.pose.bones[bones['f_ring.03.R']] pbone.rigify_type = '' pbone.lock_location = (False, False, False) pbone.lock_rotation = (False, False, False) @@ -1109,7 +1109,7 @@ def create(obj): pbone.lock_scale = (False, False, False) pbone.rotation_mode = 'QUATERNION' pbone.bone.layers = [False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] - pbone = obj.pose.bones[bones['finger_pinky.03.R']] + pbone = obj.pose.bones[bones['f_pinky.03.R']] pbone.rigify_type = '' pbone.lock_location = (False, False, False) pbone.lock_rotation = (False, False, False) diff --git a/rigify/rigs/biped/arm/__init__.py b/rigify/rigs/biped/arm/__init__.py index 41fe1f71..9cdf31ab 100644 --- a/rigify/rigs/biped/arm/__init__.py +++ b/rigify/rigs/biped/arm/__init__.py @@ -98,6 +98,7 @@ class Rig: params.primary_rotation_axis = bpy.props.EnumProperty(items=items, name="Primary Rotation Axis", default='X') params.bend_hint = bpy.props.BoolProperty(name="Bend Hint", default=True, description="Give IK chain a hint about which way to bend. Useful for perfectly straight chains") + params.elbow_target_base_name = bpy.props.StringProperty(name="Elbow Target Name", default="elbow_target", description="Base name for the generated elbow target.") params.separate_ik_layers = bpy.props.BoolProperty(name="Separate IK Control Layers:", default=False, description="Enable putting the ik controls on a separate layer from the fk controls") params.ik_layers = bpy.props.BoolVectorProperty(size=32, description="Layers for the ik controls to be on") @@ -113,6 +114,9 @@ class Rig: params = obj.pose.bones[bone].rigify_parameters r = layout.row() + r.prop(params, "elbow_target_base_name") + + r = layout.row() r.prop(params, "separate_ik_layers") r = layout.row() diff --git a/rigify/rigs/biped/arm/fk.py b/rigify/rigs/biped/arm/fk.py index e27e8541..54b1a459 100644 --- a/rigify/rigs/biped/arm/fk.py +++ b/rigify/rigs/biped/arm/fk.py @@ -24,7 +24,7 @@ from rna_prop_ui import rna_idprop_ui_prop_get from ....utils import MetarigError from ....utils import copy_bone from ....utils import connected_children_names -from ....utils import strip_org, make_mechanism_name +from ....utils import strip_org, make_mechanism_name, insert_before_lr from ....utils import get_layers from ....utils import create_widget, create_limb_widget @@ -73,9 +73,9 @@ class Rig: bpy.ops.object.mode_set(mode='EDIT') # Create the control bones - uarm = copy_bone(self.obj, self.org_bones[0], strip_org(self.org_bones[0])) - farm = copy_bone(self.obj, self.org_bones[1], strip_org(self.org_bones[1])) - hand = copy_bone(self.obj, self.org_bones[2], strip_org(self.org_bones[2])) + uarm = copy_bone(self.obj, self.org_bones[0], strip_org(insert_before_lr(self.org_bones[0], ".fk"))) + farm = copy_bone(self.obj, self.org_bones[1], strip_org(insert_before_lr(self.org_bones[1], ".fk"))) + hand = copy_bone(self.obj, self.org_bones[2], strip_org(insert_before_lr(self.org_bones[2], ".fk"))) # Create the hinge bones if self.org_parent != None: diff --git a/rigify/rigs/biped/arm/ik.py b/rigify/rigs/biped/arm/ik.py index 50ae72a9..8f288601 100644 --- a/rigify/rigs/biped/arm/ik.py +++ b/rigify/rigs/biped/arm/ik.py @@ -100,14 +100,15 @@ class Rig: bpy.ops.object.mode_set(mode='EDIT') # Create the bones - uarm = copy_bone(self.obj, self.org_bones[0], make_mechanism_name(strip_org(insert_before_lr(self.org_bones[0], "_ik")))) - farm = copy_bone(self.obj, self.org_bones[1], make_mechanism_name(strip_org(insert_before_lr(self.org_bones[1], "_ik")))) + uarm = copy_bone(self.obj, self.org_bones[0], make_mechanism_name(strip_org(insert_before_lr(self.org_bones[0], ".ik")))) + farm = copy_bone(self.obj, self.org_bones[1], make_mechanism_name(strip_org(insert_before_lr(self.org_bones[1], ".ik")))) - hand = copy_bone(self.obj, self.org_bones[2], strip_org(insert_before_lr(self.org_bones[2], "_ik"))) - pole = copy_bone(self.obj, self.org_bones[0], strip_org(insert_before_lr(self.org_bones[0], "_pole"))) + hand = copy_bone(self.obj, self.org_bones[2], strip_org(insert_before_lr(self.org_bones[2], ".ik"))) + pole_target_name = self.params.elbow_target_base_name + "." + insert_before_lr(self.org_bones[0], ".ik").split(".", 1)[1] + pole = copy_bone(self.obj, self.org_bones[0], pole_target_name) - vishand = copy_bone(self.obj, self.org_bones[2], "VIS-" + strip_org(insert_before_lr(self.org_bones[2], "_ik"))) - vispole = copy_bone(self.obj, self.org_bones[1], "VIS-" + strip_org(insert_before_lr(self.org_bones[0], "_pole"))) + vishand = copy_bone(self.obj, self.org_bones[2], "VIS-" + strip_org(insert_before_lr(self.org_bones[2], ".ik"))) + vispole = copy_bone(self.obj, self.org_bones[1], "VIS-" + strip_org(insert_before_lr(self.org_bones[0], "_pole.ik"))) # Get edit bones eb = self.obj.data.edit_bones diff --git a/rigify/rigs/biped/leg/__init__.py b/rigify/rigs/biped/leg/__init__.py index dbeeb0ef..a3c71627 100644 --- a/rigify/rigs/biped/leg/__init__.py +++ b/rigify/rigs/biped/leg/__init__.py @@ -100,6 +100,8 @@ class Rig: params.primary_rotation_axis = bpy.props.EnumProperty(items=items, name="Primary Rotation Axis", default='X') params.bend_hint = bpy.props.BoolProperty(name="Bend Hint", default=True, description="Give IK chain a hint about which way to bend (useful for perfectly straight chains)") + params.knee_target_base_name = bpy.props.StringProperty(name="Knee Target Name", default="knee_target", description="Base name for the generated knee target.") + params.separate_ik_layers = bpy.props.BoolProperty(name="Separate IK Control Layers:", default=False, description="Enable putting the ik controls on a separate layer from the fk controls") params.ik_layers = bpy.props.BoolVectorProperty(size=32, description="Layers for the ik controls to be on") @@ -115,6 +117,9 @@ class Rig: params = obj.pose.bones[bone].rigify_parameters r = layout.row() + r.prop(params, "knee_target_base_name") + + r = layout.row() r.prop(params, "separate_ik_layers") r = layout.row() diff --git a/rigify/rigs/biped/leg/fk.py b/rigify/rigs/biped/leg/fk.py index 497c110d..4e224ceb 100644 --- a/rigify/rigs/biped/leg/fk.py +++ b/rigify/rigs/biped/leg/fk.py @@ -25,7 +25,7 @@ from mathutils import Vector from ....utils import MetarigError from ....utils import copy_bone from ....utils import connected_children_names, has_connected_children -from ....utils import strip_org, make_mechanism_name +from ....utils import strip_org, make_mechanism_name, insert_before_lr from ....utils import get_layers from ....utils import create_widget, create_limb_widget @@ -99,9 +99,9 @@ class Rig: bpy.ops.object.mode_set(mode='EDIT') # Create the control bones - thigh = copy_bone(self.obj, self.org_bones[0], strip_org(self.org_bones[0])) - shin = copy_bone(self.obj, self.org_bones[1], strip_org(self.org_bones[1])) - foot = copy_bone(self.obj, self.org_bones[2], strip_org(self.org_bones[2])) + thigh = copy_bone(self.obj, self.org_bones[0], strip_org(insert_before_lr(self.org_bones[0], ".fk"))) + shin = copy_bone(self.obj, self.org_bones[1], strip_org(insert_before_lr(self.org_bones[1], ".fk"))) + foot = copy_bone(self.obj, self.org_bones[2], strip_org(insert_before_lr(self.org_bones[2], ".fk"))) # Create the foot mechanism bone foot_mch = copy_bone(self.obj, self.org_bones[2], make_mechanism_name(strip_org(self.org_bones[2]))) diff --git a/rigify/rigs/biped/leg/ik.py b/rigify/rigs/biped/leg/ik.py index 98f4a3eb..52eae332 100644 --- a/rigify/rigs/biped/leg/ik.py +++ b/rigify/rigs/biped/leg/ik.py @@ -154,19 +154,20 @@ class Rig: make_rocker = True # Create the bones - thigh = copy_bone(self.obj, self.org_bones[0], make_mechanism_name(strip_org(insert_before_lr(self.org_bones[0], "_ik")))) - shin = copy_bone(self.obj, self.org_bones[1], make_mechanism_name(strip_org(insert_before_lr(self.org_bones[1], "_ik")))) + thigh = copy_bone(self.obj, self.org_bones[0], make_mechanism_name(strip_org(insert_before_lr(self.org_bones[0], ".ik")))) + shin = copy_bone(self.obj, self.org_bones[1], make_mechanism_name(strip_org(insert_before_lr(self.org_bones[1], ".ik")))) - foot = copy_bone(self.obj, self.org_bones[2], strip_org(insert_before_lr(self.org_bones[2], "_ik"))) + foot = copy_bone(self.obj, self.org_bones[2], strip_org(insert_before_lr(self.org_bones[2], ".ik"))) foot_ik_target = copy_bone(self.obj, self.org_bones[2], make_mechanism_name(strip_org(insert_before_lr(self.org_bones[2], "_ik_target")))) - pole = copy_bone(self.obj, self.org_bones[0], strip_org(insert_before_lr(self.org_bones[0], "_pole"))) + pole_target_name = self.params.knee_target_base_name + "." + insert_before_lr(self.org_bones[0], ".ik").split(".", 1)[1] + pole = copy_bone(self.obj, self.org_bones[0], pole_target_name) toe = copy_bone(self.obj, self.org_bones[3], strip_org(self.org_bones[3])) toe_parent = copy_bone(self.obj, self.org_bones[2], make_mechanism_name(strip_org(self.org_bones[3] + ".parent"))) toe_parent_socket1 = copy_bone(self.obj, self.org_bones[2], make_mechanism_name(strip_org(self.org_bones[3] + ".socket1"))) toe_parent_socket2 = copy_bone(self.obj, self.org_bones[2], make_mechanism_name(strip_org(self.org_bones[3] + ".socket2"))) - foot_roll = copy_bone(self.obj, self.org_bones[4], strip_org(insert_before_lr(self.org_bones[2], "_roll"))) + foot_roll = copy_bone(self.obj, self.org_bones[4], strip_org(insert_before_lr(self.org_bones[2], "_roll.ik"))) roll1 = copy_bone(self.obj, self.org_bones[4], make_mechanism_name(strip_org(self.org_bones[2] + ".roll.01"))) roll2 = copy_bone(self.obj, self.org_bones[4], make_mechanism_name(strip_org(self.org_bones[2] + ".roll.02"))) @@ -174,8 +175,8 @@ class Rig: rocker1 = copy_bone(self.obj, self.org_bones[5], make_mechanism_name(strip_org(self.org_bones[2] + ".rocker.01"))) rocker2 = copy_bone(self.obj, self.org_bones[5], make_mechanism_name(strip_org(self.org_bones[2] + ".rocker.02"))) - visfoot = copy_bone(self.obj, self.org_bones[2], "VIS-" + strip_org(insert_before_lr(self.org_bones[2], "_ik"))) - vispole = copy_bone(self.obj, self.org_bones[1], "VIS-" + strip_org(insert_before_lr(self.org_bones[0], "_pole"))) + visfoot = copy_bone(self.obj, self.org_bones[2], "VIS-" + strip_org(insert_before_lr(self.org_bones[2], ".ik"))) + vispole = copy_bone(self.obj, self.org_bones[1], "VIS-" + strip_org(insert_before_lr(self.org_bones[0], "_pole.ik"))) # Get edit bones eb = self.obj.data.edit_bones diff --git a/rigify/rigs/spine.py b/rigify/rigs/spine.py index 332c6f43..29ad1729 100644 --- a/rigify/rigs/spine.py +++ b/rigify/rigs/spine.py @@ -20,6 +20,7 @@ """ TODO: - Add parameters for bone transform alphas. + - Add IK spine controls """ from math import floor @@ -32,7 +33,7 @@ from ..utils import MetarigError from ..utils import copy_bone, new_bone, flip_bone, put_bone from ..utils import connected_children_names from ..utils import strip_org, make_mechanism_name, make_deformer_name -from ..utils import obj_to_bone, create_circle_widget, create_compass_widget +from ..utils import obj_to_bone, create_circle_widget, create_cube_widget script = """ main = "%s" @@ -73,6 +74,7 @@ class Rig: self.control_indices.sort() self.pivot_rest = self.params.rest_pivot_slide + # Clamp pivot_rest to within the middle bones of the spine self.pivot_rest = max(self.pivot_rest, 1.0 / len(self.org_bones)) self.pivot_rest = min(self.pivot_rest, 1.0 - (1.0 / len(self.org_bones))) @@ -148,22 +150,12 @@ class Rig: # Create main control bone main_control = new_bone(self.obj, self.params.spine_main_control_name) - # Create main control WGT bones - main_wgt1 = new_bone(self.obj, make_mechanism_name(self.params.spine_main_control_name + ".01")) - main_wgt2 = new_bone(self.obj, make_mechanism_name(self.params.spine_main_control_name + ".02")) - eb = self.obj.data.edit_bones # Parent the main control eb[main_control].use_connect = False eb[main_control].parent = eb[self.org_bones[0]].parent - # Parent the main WGTs - eb[main_wgt1].use_connect = False - eb[main_wgt1].parent = eb[main_control] - eb[main_wgt2].use_connect = False - eb[main_wgt2].parent = eb[main_wgt1] - # Parent the controls and sub-controls for name, subname in zip(controls, subcontrols): eb[name].use_connect = False @@ -181,12 +173,6 @@ class Rig: put_bone(self.obj, main_control, pivot_rest_pos) eb[main_control].length = sum([eb[b].length for b in self.org_bones]) / 2 - # Position the main WGTs - eb[main_wgt1].tail = (0.0, 0.0, sum([eb[b].length for b in self.org_bones]) / 4) - eb[main_wgt2].length = sum([eb[b].length for b in self.org_bones]) / 4 - put_bone(self.obj, main_wgt1, pivot_rest_pos) - put_bone(self.obj, main_wgt2, pivot_rest_pos) - # Position the controls and sub-controls pos = eb[controls[0]].head.copy() for name, subname in zip(controls, subcontrols): @@ -379,11 +365,6 @@ class Rig: con.target = self.obj con.subtarget = rev_bones[0] - con = pb[main_wgt1].constraints.new('COPY_ROTATION') - con.name = "copy_rotation" - con.target = self.obj - con.subtarget = rev_bones[0] - # Slide constraints i = 1 tot = len(rev_bones) @@ -408,26 +389,6 @@ class Rig: mod.coefficients[0] = 1 - i mod.coefficients[1] = tot - # Main WGT - con = pb[main_wgt1].constraints.new('COPY_ROTATION') - con.name = "slide." + str(i) - con.target = self.obj - con.subtarget = rb - - # Driver - fcurve = con.driver_add("influence") - driver = fcurve.driver - var = driver.variables.new() - driver.type = 'AVERAGE' - var.name = "slide" - var.targets[0].id_type = 'OBJECT' - var.targets[0].id = self.obj - var.targets[0].data_path = main_control_p.path_from_id() + '["pivot_slide"]' - mod = fcurve.modifiers[0] - mod.poly_order = 1 - mod.coefficients[0] = 1.5 - i - mod.coefficients[1] = tot - i += 1 #---------------------------------- @@ -482,8 +443,7 @@ class Rig: # Control appearance # Main - pb[main_control].custom_shape_transform = pb[main_wgt2] - w = create_compass_widget(self.obj, main_control, bone_transform_name=main_wgt2) + w = create_cube_widget(self.obj, main_control) # Spines for name, i in zip(controls[1:-1], self.control_indices[1:-1]): diff --git a/rigify/ui.py b/rigify/ui.py index 40121cdc..f2a88a12 100644 --- a/rigify/ui.py +++ b/rigify/ui.py @@ -21,7 +21,7 @@ import bpy from bpy.props import StringProperty -from .utils import get_rig_type +from .utils import get_rig_type, MetarigError from . import rig_lists from . import generate @@ -263,7 +263,7 @@ class Generate(bpy.types.Operator): context.user_preferences.edit.use_global_undo = False try: generate.generate_rig(context, context.object) - except rigify.utils.MetarigError as rig_exception: + except MetarigError as rig_exception: rigify_report_exception(self, rig_exception) finally: context.user_preferences.edit.use_global_undo = use_global_undo diff --git a/rigify/utils.py b/rigify/utils.py index de27b37c..9a956689 100644 --- a/rigify/utils.py +++ b/rigify/utils.py @@ -331,6 +331,19 @@ def create_circle_widget(rig, bone_name, radius=1.0, head_tail=0.0, with_line=Fa return None +def create_cube_widget(rig, bone_name, radius=0.5, bone_transform_name=None): + """ Creates a basic cube widget. + """ + obj = create_widget(rig, bone_name, bone_transform_name) + if obj != None: + r = radius + verts = [(r, r, r), (r, -r, r), (-r, -r, r), (-r, r, r), (r, r, -r), (r, -r, -r), (-r, -r, -r), (-r, r, -r)] + edges = [(0, 1), (1, 2), (2, 3), (3, 0), (4, 5), (5, 6), (6, 7), (7, 4), (0, 4), (1, 5), (2, 6), (3, 7)] + mesh = obj.data + mesh.from_pydata(verts, edges, []) + mesh.update() + + def create_sphere_widget(rig, bone_name, bone_transform_name=None): """ Creates a basic sphere widget, three pependicular overlapping circles. """ |