Skip to content

Commit 7ca4624

Browse files
committed
fix: bendy tail ctrls not showing on chosen layers
+ control_layers_generator tweak_layers builder
1 parent c5c5142 commit 7ca4624

File tree

3 files changed

+93
-5
lines changed

3 files changed

+93
-5
lines changed

rigs/experimental/bendy_eye.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ def assign_layers(self):
477477
if 'common' in self.bones['eye_ctrl']:
478478
primary_ctrls.append(self.bones['eye_ctrl']['common'])
479479

480-
all_ctrls = self.control_snapper.flatten(self.bones['ctrl'])
480+
all_ctrls = self.get_all_ctrls()
481481
self.layer_generator.assign_layer(primary_ctrls, all_ctrls)
482482

483483
def make_constraints(self):

rigs/experimental/bendy_tail.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,17 @@ def parent_bones(self):
112112

113113
edit_bones[self.bones['tail_mch']['rot_tail_mch']].parent = edit_bones[tweak_chain[-1]]
114114

115+
def assign_layers(self):
116+
117+
primary_ctrls = []
118+
primary_ctrls.append(self.bones['tail_ctrl']['tail_master'])
119+
120+
all_ctrls = self.get_all_ctrls()
121+
self.layer_generator.assign_layer(primary_ctrls, all_ctrls)
122+
123+
tweaks = self.flatten(self.bones['tweaks'])
124+
self.layer_generator.assign_tweak_layers(tweaks)
125+
115126
def make_constraints(self):
116127

117128
bpy.ops.object.mode_set(mode='OBJECT')
@@ -289,9 +300,11 @@ def add_parameters(params):
289300
"""
290301

291302
ControlLayersGenerator.add_layer_parameters(params)
303+
ControlLayersGenerator.add_tweak_layer_parameters(params)
292304

293305

294306
def parameters_ui(layout, params):
295307
""" Create the ui for the rig parameters."""
296308

297309
ControlLayersGenerator.add_layers_ui(layout, params)
310+
ControlLayersGenerator.add_tweak_layers_ui(layout, params)

rigs/experimental/control_layers_generator.py

Lines changed: 79 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,14 @@ def __init__(self, rig):
1919
else:
2020
self.rig.secondary_layers = None
2121

22+
if self.rig.params.tweak_layers_extra:
23+
self.rig.tweak_layers = list(self.rig.params.tweak_layers)
24+
else:
25+
self.rig.tweak_layers = None
26+
2227
def assign_layer(self, primary_ctrls, all_ctrls):
2328
"""
24-
Assign bones to layer
29+
Assign ctrl bones to layer
2530
:param primary_ctrls:
2631
:type primary_ctrls: list(str)
2732
:param all_ctrls:
@@ -39,17 +44,33 @@ def assign_layer(self, primary_ctrls, all_ctrls):
3944
if self.rig.secondary_layers and bone not in primary_ctrls:
4045
edit_bones[bone].layers = self.rig.params.secondary_layers
4146

47+
def assign_tweak_layers(self, tweaks):
48+
"""
49+
Assign tweak bones to layer
50+
:param tweaks:
51+
:type tweaks: list(str)
52+
:return:
53+
"""
54+
55+
bpy.ops.object.mode_set(mode='EDIT')
56+
edit_bones = self.obj.data.edit_bones
57+
58+
for bone in tweaks:
59+
if self.rig.tweak_layers:
60+
edit_bones[bone].layers = self.rig.params.tweak_layers
61+
62+
4263
@staticmethod
4364
def add_layer_parameters(params):
44-
# Setting up extra layers for the tweak bones
65+
# Setting up extra layers for the primary & secondary controls
4566
params.primary_layers_extra = bpy.props.BoolProperty(
4667
name="primary_layers_extra",
4768
default=True,
4869
description=""
4970
)
5071
params.primary_layers = bpy.props.BoolVectorProperty(
5172
size=32,
52-
description="Layers for the 1st tweak controls to be on",
73+
description="Layers for the primary controls to be on",
5374
default=tuple([i == 1 for i in range(0, 32)])
5475
)
5576
params.secondary_layers_extra = bpy.props.BoolProperty(
@@ -59,7 +80,20 @@ def add_layer_parameters(params):
5980
)
6081
params.secondary_layers = bpy.props.BoolVectorProperty(
6182
size=32,
62-
description="Layers for the 2nd tweak controls to be on",
83+
description="Layers for the secondary controls to be on",
84+
default=tuple([i == 1 for i in range(0, 32)])
85+
)
86+
87+
@staticmethod
88+
def add_tweak_layer_parameters(params):
89+
params.tweak_layers_extra = bpy.props.BoolProperty(
90+
name="tweak_layers_extra",
91+
default=True,
92+
description=""
93+
)
94+
params.tweak_layers = bpy.props.BoolVectorProperty(
95+
size=32,
96+
description="Layers for the tweak controls to be on",
6397
default=tuple([i == 1 for i in range(0, 32)])
6498
)
6599

@@ -104,3 +138,44 @@ def add_layers_ui(layout, params):
104138
if bone_layers[i]:
105139
icon = "LAYER_ACTIVE"
106140
row.prop(params, layer, index=i, toggle=True, text="", icon=icon)
141+
142+
@staticmethod
143+
def add_tweak_layers_ui(layout, params):
144+
145+
layer = "tweak_layers"
146+
bone_layers = bpy.context.active_pose_bone.bone.layers[:]
147+
148+
r = layout.row()
149+
r.prop(params, layer + "_extra")
150+
r.active = getattr(params, layer + "_extra")
151+
152+
col = r.column(align=True)
153+
row = col.row(align=True)
154+
for i in range(8):
155+
icon = "NONE"
156+
if bone_layers[i]:
157+
icon = "LAYER_ACTIVE"
158+
row.prop(params, layer, index=i, toggle=True, text="", icon=icon)
159+
160+
row = col.row(align=True)
161+
for i in range(16, 24):
162+
icon = "NONE"
163+
if bone_layers[i]:
164+
icon = "LAYER_ACTIVE"
165+
row.prop(params, layer, index=i, toggle=True, text="", icon=icon)
166+
167+
col = r.column(align=True)
168+
row = col.row(align=True)
169+
170+
for i in range(8, 16):
171+
icon = "NONE"
172+
if bone_layers[i]:
173+
icon = "LAYER_ACTIVE"
174+
row.prop(params, layer, index=i, toggle=True, text="", icon=icon)
175+
176+
row = col.row(align=True)
177+
for i in range(24, 32):
178+
icon = "NONE"
179+
if bone_layers[i]:
180+
icon = "LAYER_ACTIVE"
181+
row.prop(params, layer, index=i, toggle=True, text="", icon=icon)

0 commit comments

Comments
 (0)