Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Vegdahl <cessen@cessen.com>2013-02-16 22:22:20 +0400
committerNathan Vegdahl <cessen@cessen.com>2013-02-16 22:22:20 +0400
commit21e99d0bd6b6a71cbf871cc4aaf6f2b744cd3d14 (patch)
treea9e1ee9327533ef7018dd08272dd54cd231e6534
parent3d5172cf6bc017f929818725ccb890084617c519 (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.py188
-rw-r--r--rigify/rigs/biped/arm/__init__.py4
-rw-r--r--rigify/rigs/biped/arm/fk.py8
-rw-r--r--rigify/rigs/biped/arm/ik.py13
-rw-r--r--rigify/rigs/biped/leg/__init__.py5
-rw-r--r--rigify/rigs/biped/leg/fk.py8
-rw-r--r--rigify/rigs/biped/leg/ik.py15
-rw-r--r--rigify/rigs/spine.py48
-rw-r--r--rigify/ui.py4
-rw-r--r--rigify/utils.py13
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.
"""