@@ -36,26 +36,35 @@ def create_dolly_bones(rig):
36
36
root = bones .new ("Root" )
37
37
root .tail = (0.0 , 1.0 , 0.0 )
38
38
root .show_wire = True
39
+ rig .data .collections .new (name = "Controls" )
40
+ rig .data .collections ['Controls' ].assign (root )
39
41
40
- ctrl_aim_child = bones .new ("Aim_shape_rotation- MCH" )
42
+ ctrl_aim_child = bones .new ("MCH-Aim_shape_rotation " )
41
43
ctrl_aim_child .head = (0.0 , 10.0 , 1.7 )
42
44
ctrl_aim_child .tail = (0.0 , 11.0 , 1.7 )
43
- ctrl_aim_child .layers = tuple (i == 1 for i in range (32 ))
45
+ # Create bone collection and assign bone
46
+ rig .data .collections .new (name = "MCH" )
47
+ rig .data .collections ['MCH' ].assign (ctrl_aim_child )
48
+ rig .data .collections ['MCH' ].is_visible = False
44
49
45
50
ctrl_aim = bones .new ("Aim" )
46
51
ctrl_aim .head = (0.0 , 10.0 , 1.7 )
47
52
ctrl_aim .tail = (0.0 , 11.0 , 1.7 )
48
53
ctrl_aim .show_wire = True
54
+ rig .data .collections ['Controls' ].assign (ctrl_aim )
49
55
50
56
ctrl = bones .new ("Camera" )
51
57
ctrl .head = (0.0 , 0.0 , 1.7 )
52
58
ctrl .tail = (0.0 , 1.0 , 1.7 )
53
59
ctrl .show_wire = True
60
+ rig .data .collections ['Controls' ].assign (ctrl )
54
61
55
- ctrl_offset = bones .new ("Camera_offset " )
62
+ ctrl_offset = bones .new ("Camera_Offset " )
56
63
ctrl_offset .head = (0.0 , 0.0 , 1.7 )
57
64
ctrl_offset .tail = (0.0 , 1.0 , 1.7 )
58
65
ctrl_offset .show_wire = True
66
+ rig .data .collections ['Controls' ].assign (ctrl_offset )
67
+
59
68
60
69
# Setup hierarchy
61
70
ctrl .parent = root
@@ -67,7 +76,7 @@ def create_dolly_bones(rig):
67
76
bpy .ops .object .mode_set (mode = 'OBJECT' )
68
77
pose_bones = rig .pose .bones
69
78
# Lock the relevant scale channels of the Camera_offset bone
70
- pose_bones ["Camera_offset " ].lock_scale = (True ,) * 3
79
+ pose_bones ["Camera_Offset " ].lock_scale = (True ,) * 3
71
80
72
81
73
82
def create_crane_bones (rig ):
@@ -78,42 +87,51 @@ def create_crane_bones(rig):
78
87
root = bones .new ("Root" )
79
88
root .tail = (0.0 , 1.0 , 0.0 )
80
89
root .show_wire = True
90
+ rig .data .collections .new (name = "Controls" )
91
+ rig .data .collections ['Controls' ].assign (root )
81
92
82
- ctrl_aim_child = bones .new ("Aim_shape_rotation- MCH" )
93
+ ctrl_aim_child = bones .new ("MCH-Aim_shape_rotation " )
83
94
ctrl_aim_child .head = (0.0 , 10.0 , 1.7 )
84
95
ctrl_aim_child .tail = (0.0 , 11.0 , 1.7 )
85
- ctrl_aim_child .layers = tuple (i == 1 for i in range (32 ))
96
+ rig .data .collections .new (name = "MCH" )
97
+ rig .data .collections ['MCH' ].assign (ctrl_aim_child )
98
+ rig .data .collections ['MCH' ].is_visible = False
86
99
87
100
ctrl_aim = bones .new ("Aim" )
88
101
ctrl_aim .head = (0.0 , 10.0 , 1.7 )
89
102
ctrl_aim .tail = (0.0 , 11.0 , 1.7 )
90
103
ctrl_aim .show_wire = True
104
+ rig .data .collections ['Controls' ].assign (ctrl_aim )
91
105
92
106
ctrl = bones .new ("Camera" )
93
107
ctrl .head = (0.0 , 1.0 , 1.7 )
94
108
ctrl .tail = (0.0 , 2.0 , 1.7 )
109
+ rig .data .collections ['Controls' ].assign (ctrl )
95
110
96
- ctrl_offset = bones .new ("Camera_offset " )
111
+ ctrl_offset = bones .new ("Camera_Offset " )
97
112
ctrl_offset .head = (0.0 , 1.0 , 1.7 )
98
113
ctrl_offset .tail = (0.0 , 2.0 , 1.7 )
114
+ rig .data .collections ['Controls' ].assign (ctrl_offset )
99
115
100
- arm = bones .new ("Crane_arm " )
116
+ arm = bones .new ("Crane_Arm " )
101
117
arm .head = (0.0 , 0.0 , 1.7 )
102
118
arm .tail = (0.0 , 1.0 , 1.7 )
119
+ rig .data .collections ['Controls' ].assign (arm )
103
120
104
- height = bones .new ("Crane_height " )
121
+ height = bones .new ("Crane_Height " )
105
122
height .head = (0.0 , 0.0 , 0.0 )
106
123
height .tail = (0.0 , 0.0 , 1.7 )
124
+ rig .data .collections ['Controls' ].assign (height )
107
125
108
126
# Setup hierarchy
109
127
ctrl .parent = arm
110
128
ctrl_offset .parent = ctrl
111
129
ctrl .use_inherit_rotation = False
112
- ctrl .use_inherit_scale = False
130
+ ctrl .inherit_scale = "NONE"
113
131
ctrl .show_wire = True
114
132
115
133
arm .parent = height
116
- arm .use_inherit_scale = False
134
+ arm .inherit_scale = "NONE"
117
135
118
136
height .parent = root
119
137
ctrl_aim .parent = root
@@ -124,12 +142,12 @@ def create_crane_bones(rig):
124
142
pose_bones = rig .pose .bones
125
143
126
144
# Lock the relevant loc, rot and scale
127
- pose_bones ["Crane_arm " ].lock_rotation = (False , True , False )
128
- pose_bones ["Crane_arm " ].lock_scale = (True , False , True )
129
- pose_bones ["Crane_height " ].lock_location = (True ,) * 3
130
- pose_bones ["Crane_height " ].lock_rotation = (True ,) * 3
131
- pose_bones ["Crane_height " ].lock_scale = (True , False , True )
132
- pose_bones ["Camera_offset " ].lock_scale = (True ,) * 3
145
+ pose_bones ["Crane_Arm " ].lock_rotation = (False , True , False )
146
+ pose_bones ["Crane_Arm " ].lock_scale = (True , False , True )
147
+ pose_bones ["Crane_Height " ].lock_location = (True ,) * 3
148
+ pose_bones ["Crane_Height " ].lock_rotation = (True ,) * 3
149
+ pose_bones ["Crane_Height " ].lock_scale = (True , False , True )
150
+ pose_bones ["Camera_Offset " ].lock_scale = (True ,) * 3
133
151
134
152
135
153
def setup_3d_rig (rig , cam ):
@@ -149,20 +167,20 @@ def setup_3d_rig(rig, cam):
149
167
# Build the widgets
150
168
root_widget = create_root_widget ("Camera_Root" )
151
169
camera_widget = create_camera_widget ("Camera" )
152
- camera_offset_widget = create_camera_offset_widget ("Camera_offset " )
170
+ camera_offset_widget = create_camera_offset_widget ("Camera_Offset " )
153
171
aim_widget = create_aim_widget ("Aim" )
154
172
155
173
# Add the custom bone shapes
156
174
pose_bones ["Root" ].custom_shape = root_widget
157
175
pose_bones ["Aim" ].custom_shape = aim_widget
158
176
pose_bones ["Camera" ].custom_shape = camera_widget
159
- pose_bones ["Camera_offset " ].custom_shape = camera_offset_widget
177
+ pose_bones ["Camera_Offset " ].custom_shape = camera_offset_widget
160
178
161
179
# Set the "Override Transform" field to the mechanism position
162
- pose_bones ["Aim" ].custom_shape_transform = pose_bones ["Aim_shape_rotation- MCH" ]
180
+ pose_bones ["Aim" ].custom_shape_transform = pose_bones ["MCH-Aim_shape_rotation " ]
163
181
164
182
# Add constraints to bones
165
- con = pose_bones ['Aim_shape_rotation- MCH' ].constraints .new ('COPY_ROTATION' )
183
+ con = pose_bones ['MCH-Aim_shape_rotation ' ].constraints .new ('COPY_ROTATION' )
166
184
con .target = rig
167
185
con .subtarget = "Camera"
168
186
@@ -189,29 +207,38 @@ def create_2d_bones(context, rig, cam):
189
207
root = bones .new ("Root" )
190
208
root .tail = Vector ((0.0 , 0.0 , 1.0 ))
191
209
root .show_wire = True
210
+ rig .data .collections .new (name = "Controls" )
211
+ rig .data .collections ['Controls' ].assign (root )
192
212
193
213
ctrl = bones .new ('Camera' )
194
214
ctrl .tail = Vector ((0.0 , 0.0 , 1.0 ))
195
215
ctrl .show_wire = True
216
+ rig .data .collections ['Controls' ].assign (ctrl )
196
217
197
- left_corner = bones .new ("Left_corner " )
218
+ left_corner = bones .new ("Left_Corner " )
198
219
left_corner .head = (- 3 , 10 , - 2 )
199
220
left_corner .tail = left_corner .head + Vector ((0.0 , 0.0 , 1.0 ))
200
221
left_corner .show_wire = True
222
+ rig .data .collections ['Controls' ].assign (left_corner )
201
223
202
- right_corner = bones .new ("Right_corner " )
224
+ right_corner = bones .new ("Right_Corner " )
203
225
right_corner .head = (3 , 10 , - 2 )
204
226
right_corner .tail = right_corner .head + Vector ((0.0 , 0.0 , 1.0 ))
205
227
right_corner .show_wire = True
228
+ rig .data .collections ['Controls' ].assign (right_corner )
206
229
207
230
corner_distance_x = (left_corner .head - right_corner .head ).length
208
231
corner_distance_y = - left_corner .head .z
209
232
corner_distance_z = left_corner .head .y
233
+ rig .data .collections ['Controls' ].assign (root )
210
234
211
- center = bones .new ("Center- MCH" )
235
+ center = bones .new ("MCH-Center " )
212
236
center .head = ((right_corner .head + left_corner .head ) / 2.0 )
213
237
center .tail = center .head + Vector ((0.0 , 0.0 , 1.0 ))
214
- center .layers = tuple (i == 1 for i in range (32 ))
238
+ center .show_wire = True
239
+ rig .data .collections .new (name = "MCH" )
240
+ rig .data .collections ['MCH' ].assign (center )
241
+ rig .data .collections ['MCH' ].is_visible = False
215
242
center .show_wire = True
216
243
217
244
# Setup hierarchy
@@ -227,7 +254,7 @@ def create_2d_bones(context, rig, cam):
227
254
bone .rotation_mode = 'XYZ'
228
255
229
256
# Bone drivers
230
- center_drivers = pose_bones ["Center- MCH" ].driver_add ("location" )
257
+ center_drivers = pose_bones ["MCH-Center " ].driver_add ("location" )
231
258
232
259
# Center X driver
233
260
driver = center_drivers [0 ].driver
@@ -238,7 +265,7 @@ def create_2d_bones(context, rig, cam):
238
265
var .name = corner
239
266
var .type = 'TRANSFORMS'
240
267
var .targets [0 ].id = rig
241
- var .targets [0 ].bone_target = corner .capitalize () + '_corner '
268
+ var .targets [0 ].bone_target = corner .capitalize () + '_Corner '
242
269
var .targets [0 ].transform_type = 'LOC_X'
243
270
var .targets [0 ].transform_space = 'TRANSFORM_SPACE'
244
271
@@ -255,7 +282,7 @@ def create_2d_bones(context, rig, cam):
255
282
var .name = '%s_%s' % (corner , direction )
256
283
var .type = 'TRANSFORMS'
257
284
var .targets [0 ].id = rig
258
- var .targets [0 ].bone_target = corner .capitalize () + '_corner '
285
+ var .targets [0 ].bone_target = corner .capitalize () + '_Corner '
259
286
var .targets [0 ].transform_type = 'LOC_' + direction .upper ()
260
287
var .targets [0 ].transform_space = 'TRANSFORM_SPACE'
261
288
@@ -275,31 +302,31 @@ def create_2d_bones(context, rig, cam):
275
302
var .name = corner
276
303
var .type = 'TRANSFORMS'
277
304
var .targets [0 ].id = rig
278
- var .targets [0 ].bone_target = corner .capitalize () + '_corner '
305
+ var .targets [0 ].bone_target = corner .capitalize () + '_Corner '
279
306
var .targets [0 ].transform_type = 'LOC_Z'
280
307
var .targets [0 ].transform_space = 'TRANSFORM_SPACE'
281
308
282
309
# Bone constraints
283
310
con = pose_bones ["Camera" ].constraints .new ('DAMPED_TRACK' )
284
311
con .target = rig
285
- con .subtarget = "Center- MCH"
312
+ con .subtarget = "MCH-Center "
286
313
con .track_axis = 'TRACK_NEGATIVE_Z'
287
314
288
315
# Build the widgets
289
- left_widget = create_corner_widget ("Left_corner " , reverse = True )
290
- right_widget = create_corner_widget ("Right_corner " )
316
+ left_widget = create_corner_widget ("Left_Corner " , reverse = True )
317
+ right_widget = create_corner_widget ("Right_Corner " )
291
318
parent_widget = create_circle_widget ("Root" , radius = 0.5 )
292
319
camera_widget = create_circle_widget ("Camera_2D" , radius = 0.3 )
293
320
294
321
# Add the custom bone shapes
295
- pose_bones ["Left_corner " ].custom_shape = left_widget
296
- pose_bones ["Right_corner " ].custom_shape = right_widget
322
+ pose_bones ["Left_Corner " ].custom_shape = left_widget
323
+ pose_bones ["Right_Corner " ].custom_shape = right_widget
297
324
pose_bones ["Root" ].custom_shape = parent_widget
298
325
pose_bones ["Camera" ].custom_shape = camera_widget
299
326
300
327
# Lock the relevant loc, rot and scale
301
- pose_bones ["Left_corner " ].lock_rotation = (True ,) * 3
302
- pose_bones ["Right_corner " ].lock_rotation = (True ,) * 3
328
+ pose_bones ["Left_Corner " ].lock_rotation = (True ,) * 3
329
+ pose_bones ["Right_Corner " ].lock_rotation = (True ,) * 3
303
330
pose_bones ["Camera" ].lock_rotation = (True ,) * 3
304
331
pose_bones ["Camera" ].lock_scale = (True ,) * 3
305
332
@@ -331,18 +358,18 @@ def create_2d_bones(context, rig, cam):
331
358
var .name = 'frame_width'
332
359
var .type = 'LOC_DIFF'
333
360
var .targets [0 ].id = rig
334
- var .targets [0 ].bone_target = "Left_corner "
361
+ var .targets [0 ].bone_target = "Left_Corner "
335
362
var .targets [0 ].transform_space = 'WORLD_SPACE'
336
363
var .targets [1 ].id = rig
337
- var .targets [1 ].bone_target = "Right_corner "
364
+ var .targets [1 ].bone_target = "Right_Corner "
338
365
var .targets [1 ].transform_space = 'WORLD_SPACE'
339
366
340
367
for corner in ('left' , 'right' ):
341
368
var = driver .variables .new ()
342
369
var .name = corner + '_z'
343
370
var .type = 'TRANSFORMS'
344
371
var .targets [0 ].id = rig
345
- var .targets [0 ].bone_target = corner .capitalize () + '_corner '
372
+ var .targets [0 ].bone_target = corner .capitalize () + '_Corner '
346
373
var .targets [0 ].transform_type = 'LOC_Z'
347
374
var .targets [0 ].transform_space = 'TRANSFORM_SPACE'
348
375
@@ -363,7 +390,7 @@ def create_2d_bones(context, rig, cam):
363
390
var .name = corner + '_x'
364
391
var .type = 'TRANSFORMS'
365
392
var .targets [0 ].id = rig
366
- var .targets [0 ].bone_target = corner .capitalize () + '_corner '
393
+ var .targets [0 ].bone_target = corner .capitalize () + '_Corner '
367
394
var .targets [0 ].transform_type = 'LOC_X'
368
395
var .targets [0 ].transform_space = 'TRANSFORM_SPACE'
369
396
@@ -385,7 +412,7 @@ def create_2d_bones(context, rig, cam):
385
412
var .name = '%s_%s' % (corner , direction )
386
413
var .type = 'TRANSFORMS'
387
414
var .targets [0 ].id = rig
388
- var .targets [0 ].bone_target = corner .capitalize () + '_corner '
415
+ var .targets [0 ].bone_target = corner .capitalize () + '_Corner '
389
416
var .targets [0 ].transform_type = 'LOC_' + direction .upper ()
390
417
var .targets [0 ].transform_space = 'TRANSFORM_SPACE'
391
418
@@ -422,7 +449,7 @@ def create_2d_bones(context, rig, cam):
422
449
var .name = '%s_%s' % (corner , direction )
423
450
var .type = 'TRANSFORMS'
424
451
var .targets [0 ].id = rig
425
- var .targets [0 ].bone_target = corner .capitalize () + '_corner '
452
+ var .targets [0 ].bone_target = corner .capitalize () + '_Corner '
426
453
var .targets [0 ].transform_type = 'LOC_' + direction .upper ()
427
454
var .targets [0 ].transform_space = 'TRANSFORM_SPACE'
428
455
@@ -484,7 +511,7 @@ def build_camera_rig(context, mode):
484
511
if mode == "2D" :
485
512
cam .parent_bone = "Camera"
486
513
else :
487
- cam .parent_bone = "Camera_offset "
514
+ cam .parent_bone = "Camera_Offset "
488
515
489
516
# Change display to BBone: it just looks nicer
490
517
rig .data .display_type = 'BBONE'
0 commit comments