1
1
import bpy
2
+ import re
2
3
from ...utils import copy_bone , flip_bone
3
4
from ...utils import strip_org , make_deformer_name , connected_children_names , make_mechanism_name
4
5
from ...utils import create_circle_widget , create_widget , create_sphere_widget
@@ -110,12 +111,12 @@ def generate(self):
110
111
org_name = self .org_bones [0 ]
111
112
temp_name = strip_org (self .org_bones [0 ])
112
113
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 )
119
120
ctrl_bone_master = eb [master_name ]
120
121
121
122
# Parenting bug fix ??
@@ -158,7 +159,7 @@ def generate(self):
158
159
mch_drv_chain += [mch_bone_drv ]
159
160
160
161
# 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 )
162
163
ctrl_bone_tip = eb [tip_name ]
163
164
flip_bone (self .obj , tip_name )
164
165
ctrl_bone_tip .length /= 2
@@ -167,7 +168,7 @@ def generate(self):
167
168
168
169
# Create IK control bone and follow socket
169
170
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 )
171
172
ik_ctrl_bone = eb [ik_ctrl_name ]
172
173
ik_ctrl_bone .tail = ik_ctrl_bone .head + Vector ((0 , ik_ctrl_bone .length * 1.5 , 0 ))
173
174
ik_ctrl_bone .roll = 0
0 commit comments