Skip to content

Commit 433c382

Browse files
committed
Choose better names for finger control bones in limbs.super_finger.
Using names like 'f_ring.01_master.L' is somewhat silly, and 'f_ring.01.L.001' for the tip control is outright bad. This changes those to 'f_ring.master.L' etc.
1 parent 5fceb4a commit 433c382

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

rigs/limbs/super_finger.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import bpy
2+
import re
23
from ...utils import copy_bone, flip_bone
34
from ...utils import strip_org, make_deformer_name, connected_children_names, make_mechanism_name
45
from ...utils import create_circle_widget, create_widget, create_sphere_widget
@@ -110,12 +111,12 @@ def generate(self):
110111
org_name = self.org_bones[0]
111112
temp_name = strip_org(self.org_bones[0])
112113

113-
if temp_name[-2:] == '.L' or temp_name[-2:] == '.R':
114-
suffix = temp_name[-2:]
115-
master_name = temp_name[:-2] + "_master" + suffix
116-
else:
117-
master_name = temp_name + "_master"
118-
master_name = copy_bone(self.obj, org_name, master_name)
114+
# Compute master bone name: inherit .LR suffix, but strip trailing digits
115+
name_parts = re.match(r'^(.*?)(?:([._-])?\d+)?((?:[._-][LlRr])?)(?:\.\d+)?$', temp_name)
116+
name_base, name_sep, name_suffix = name_parts.groups()
117+
name_base += name_sep if name_sep else '_'
118+
119+
master_name = copy_bone(self.obj, org_name, name_base + 'master' + name_suffix)
119120
ctrl_bone_master = eb[master_name]
120121

121122
# Parenting bug fix ??
@@ -158,7 +159,7 @@ def generate(self):
158159
mch_drv_chain += [mch_bone_drv]
159160

160161
# Creating tip control bone
161-
tip_name = copy_bone(self.obj, org_bones[-1], temp_name)
162+
tip_name = copy_bone(self.obj, org_bones[-1], name_base + 'tip' + name_suffix)
162163
ctrl_bone_tip = eb[tip_name]
163164
flip_bone(self.obj, tip_name)
164165
ctrl_bone_tip.length /= 2
@@ -167,7 +168,7 @@ def generate(self):
167168

168169
# Create IK control bone and follow socket
169170
if self.params.generate_ik:
170-
ik_ctrl_name = copy_bone(self.obj, tip_name, get_bone_name(org_name, 'ctrl', 'ik'))
171+
ik_ctrl_name = copy_bone(self.obj, tip_name, name_base + 'ik' + name_suffix)
171172
ik_ctrl_bone = eb[ik_ctrl_name]
172173
ik_ctrl_bone.tail = ik_ctrl_bone.head + Vector((0, ik_ctrl_bone.length * 1.5, 0))
173174
ik_ctrl_bone.roll = 0

0 commit comments

Comments
 (0)