-
Notifications
You must be signed in to change notification settings - Fork 6
/
uv_map_diamond_addin.py
622 lines (610 loc) · 46.3 KB
/
uv_map_diamond_addin.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
import bpy
class ShaderNodeuv_map_diamond(bpy.types.ShaderNodeCustomGroup):
bl_name='ShaderNodeuv_map_diamond'
bl_label='uv_map_diamond'
bl_icon='NONE'
def init(self, context):
self.getNodetree(self.name + '_node_tree_v013')
self.inputs['Vector'].default_value=[0,0,0]
self.inputs['HAS_Vector'].default_value=0
self.inputs['HAS_Vector'].hide=True
self.inputs['scale'].default_value=1
self.inputs['diamond_size'].default_value=0.2
self.inputs['brick_width'].default_value=1
self.inputs['brick_height'].default_value=1
self.inputs['feather'].default_value=0.1
self.inputs['border'].default_value=0.050000001
def update(self):
if self.inputs['Vector'].is_linked:
self.inputs['HAS_Vector'].default_value=1
else:
self.inputs['HAS_Vector'].default_value=0
pass
def value_set(self, obj, path, value):
if '.' in path:
path_prop, path_attr = path.rsplit('.', 1)
prop = obj.path_resolve(path_prop)
else:
prop = obj
path_attr = path
setattr(prop, path_attr, value)
def createNodetree(self, name) :
self.node_tree = bpy.data.node_groups.new(name, 'ShaderNodeTree')
#Nodes
self.addNode('NodeGroupInput', { 'name':'GroupInput' })
self.addNode('NodeGroupOutput', { 'name':'GroupOutput' })
self.addNode('ShaderNodeTexCoord', { 'name':'Node0' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node1' })
self.addNode('ShaderNodeCombineRGB', { 'name':'Node2' ,'inputs[0].default_value':0 ,'inputs[1].default_value':0 ,'inputs[2].default_value':0 })
self.addNode('ShaderNodeValue', { 'name':'Node5' ,'outputs[0].default_value':0 })
self.addNode('ShaderNodeValue', { 'name':'Node9' ,'outputs[0].default_value':2 })
self.addNode('ShaderNodeValue', { 'name':'Node10' ,'outputs[0].default_value':0 })
self.addNode('ShaderNodeValue', { 'name':'Node11' ,'outputs[0].default_value':1 })
self.addNode('ShaderNodeValue', { 'name':'Node13' ,'outputs[0].default_value':0.5 })
self.addNode('ShaderNodeValue', { 'name':'Node14' ,'outputs[0].default_value':0 })
self.addNode('ShaderNodeValue', { 'name':'Node15' ,'outputs[0].default_value':1.5 })
self.addNode('ShaderNodeValue', { 'name':'Node16' ,'outputs[0].default_value':-0.5 })
self.addNode('ShaderNodeValue', { 'name':'Node18' ,'outputs[0].default_value':1 })
self.addNode('ShaderNodeMath', { 'name':'Node19' ,'operation':'MINIMUM' })
self.addNode('ShaderNodeMath', { 'name':'Node20' ,'operation':'DIVIDE' })
self.addNode('ShaderNodeMath', { 'name':'Node21' ,'operation':'MINIMUM' })
self.addNode('ShaderNodeMath', { 'name':'Node22' ,'operation':'DIVIDE' })
self.addNode('ShaderNodeMath', { 'name':'Node23' ,'operation':'DIVIDE' })
self.addNode('ShaderNodeSeparateXYZ', { 'name':'Node24' })
self.addNode('ShaderNodeMath', { 'name':'Node25' ,'operation':'MULTIPLY' })
self.addNode('ShaderNodeMath', { 'name':'Node26' ,'operation':'DIVIDE' })
self.addNode('ShaderNodeMath', { 'name':'Node27' ,'inputs[1].default_value':0.5 ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node28' ,'operation':'ROUND' })
self.addNode('ShaderNodeSeparateXYZ', { 'name':'Node29' })
self.addNode('ShaderNodeMath', { 'name':'Node30' ,'operation':'MULTIPLY' })
self.addNode('ShaderNodeMath', { 'name':'Node31' ,'operation':'DIVIDE' })
self.addNode('ShaderNodeMath', { 'name':'Node32' ,'inputs[1].default_value':0.5 ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node33' ,'operation':'ROUND' })
self.addNode('ShaderNodeSeparateXYZ', { 'name':'Node34' })
self.addNode('ShaderNodeMath', { 'name':'Node35' ,'operation':'MULTIPLY' })
self.addNode('ShaderNodeMath', { 'name':'Node36' ,'operation':'MODULO' })
self.addNode('ShaderNodeMath', { 'name':'Node37' ,'operation':'LESS_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node38' ,'operation':'ADD' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node39' })
self.addNode('ShaderNodeSeparateXYZ', { 'name':'Node40' })
self.addNode('ShaderNodeMath', { 'name':'Node41' ,'operation':'MULTIPLY' })
self.addNode('ShaderNodeMath', { 'name':'Node42' ,'operation':'MODULO' })
self.addNode('ShaderNodeMath', { 'name':'Node43' ,'operation':'LESS_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node44' ,'operation':'ADD' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node45' })
self.addNode('ShaderNodeMath', { 'name':'Node46' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node47' ,'operation':'MINIMUM' })
self.addNode('ShaderNodeMath', { 'name':'Node48' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node49' ,'operation':'MINIMUM' })
self.addNode('ShaderNodeMath', { 'name':'Node50' ,'operation':'ADD' })
self.addNode('ShaderNodeMath', { 'name':'Node51' ,'operation':'LESS_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node52' ,'operation':'MULTIPLY' })
self.addNode('ShaderNodeMath', { 'name':'Node53' ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node54' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node55' ,'operation':'ABSOLUTE' })
self.addNode('ShaderNodeMath', { 'name':'Node56' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node57' ,'operation':'LESS_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node58' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node59' ,'operation':'ABSOLUTE' })
self.addNode('ShaderNodeMath', { 'name':'Node60' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node61' })
self.addNode('ShaderNodeMath', { 'name':'Node62' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node63' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node64' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node65' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeCombineXYZ', { 'name':'Node66' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node67' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node68' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node69' })
self.addNode('ShaderNodeMath', { 'name':'Node70' ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node71' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node72' ,'operation':'ABSOLUTE' })
self.addNode('ShaderNodeMath', { 'name':'Node73' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node74' ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node75' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node76' ,'operation':'ABSOLUTE' })
self.addNode('ShaderNodeMath', { 'name':'Node77' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node78' })
self.addNode('ShaderNodeMath', { 'name':'Node79' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node80' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node81' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node82' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeCombineXYZ', { 'name':'Node83' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node84' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node85' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node86' })
self.addNode('ShaderNodeMath', { 'name':'Node87' ,'operation':'LESS_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node88' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node89' ,'operation':'ABSOLUTE' })
self.addNode('ShaderNodeMath', { 'name':'Node90' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node91' ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node92' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node93' ,'operation':'ABSOLUTE' })
self.addNode('ShaderNodeMath', { 'name':'Node94' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node95' })
self.addNode('ShaderNodeMath', { 'name':'Node96' ,'operation':'ADD' })
self.addNode('ShaderNodeMath', { 'name':'Node97' ,'operation':'ADD' })
self.addNode('ShaderNodeMath', { 'name':'Node98' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node99' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeCombineXYZ', { 'name':'Node100' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node101' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node102' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node103' })
self.addNode('ShaderNodeMath', { 'name':'Node104' ,'operation':'LESS_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node105' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node106' ,'operation':'ABSOLUTE' })
self.addNode('ShaderNodeMath', { 'name':'Node107' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node108' ,'operation':'LESS_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node109' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node110' ,'operation':'ABSOLUTE' })
self.addNode('ShaderNodeMath', { 'name':'Node111' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node112' })
self.addNode('ShaderNodeMath', { 'name':'Node113' ,'operation':'ADD' })
self.addNode('ShaderNodeMath', { 'name':'Node114' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node115' ,'operation':'ADD' })
self.addNode('ShaderNodeMath', { 'name':'Node116' ,'operation':'ADD' })
self.addNode('ShaderNodeCombineXYZ', { 'name':'Node117' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node118' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node119' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node120' })
self.addNode('ShaderNodeMath', { 'name':'Node121' ,'operation':'ADD' })
self.addNode('ShaderNodeMath', { 'name':'Node122' ,'operation':'ADD' })
self.addNode('ShaderNodeCombineXYZ', { 'name':'Node123' })
self.addNode('ShaderNodeMath', { 'name':'Node124' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node125' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node126' ,'operation':'ADD' })
self.addNode('ShaderNodeMath', { 'name':'Node127' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node128' ,'operation':'MINIMUM' })
self.addNode('ShaderNodeMath', { 'name':'Node129' ,'operation':'LESS_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node130' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node131' ,'operation':'MULTIPLY' })
self.addNode('ShaderNodeMath', { 'name':'Node132' ,'operation':'ADD' })
self.addNode('ShaderNodeMath', { 'name':'Node133' ,'operation':'LESS_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node134' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node135' ,'operation':'ABSOLUTE' })
self.addNode('ShaderNodeMath', { 'name':'Node136' ,'inputs[1].default_value':0.000001 ,'operation':'LESS_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node137' ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node138' ,'operation':'ADD' })
self.addNode('ShaderNodeMath', { 'name':'Node139' ,'inputs[1].default_value':0.999 ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node140' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node141' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node142' ,'operation':'DIVIDE' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node143' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node144' })
self.addNode('ShaderNodeCombineXYZ', { 'name':'Node145' })
self.addNode('ShaderNodeCombineXYZ', { 'name':'Node146' })
self.addNode('ShaderNodeMath', { 'name':'Node147' ,'operation':'LESS_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node148' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node149' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node150' ,'operation':'MINIMUM' })
self.addNode('ShaderNodeMath', { 'name':'Node151' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node152' ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node153' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node154' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node155' ,'operation':'MINIMUM' })
self.addNode('ShaderNodeMath', { 'name':'Node156' ,'operation':'MINIMUM' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node157' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node158' })
self.addNode('ShaderNodeMath', { 'name':'Node159' ,'operation':'LESS_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node160' ,'operation':'MINIMUM' })
self.addNode('ShaderNodeMath', { 'name':'Node161' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node162' ,'operation':'MULTIPLY' })
self.addNode('ShaderNodeMath', { 'name':'Node163' ,'operation':'ADD' })
self.addNode('ShaderNodeMath', { 'name':'Node164' ,'operation':'LESS_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node165' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node166' ,'operation':'ABSOLUTE' })
self.addNode('ShaderNodeMath', { 'name':'Node167' ,'inputs[1].default_value':0.000001 ,'operation':'LESS_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node168' ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node169' ,'operation':'ADD' })
self.addNode('ShaderNodeMath', { 'name':'Node170' ,'inputs[1].default_value':0.999 ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node171' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node172' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node173' ,'operation':'DIVIDE' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node174' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node175' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node176' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node177' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node178' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node179' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node180' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node181' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node182' })
#Sockets
self.addSocket(False, 'NodeSocketVector', 'Vector')
self.addSocket(False, 'NodeSocketFloat', 'HAS_Vector')
self.addSocket(False, 'NodeSocketFloat', 'scale')
self.addSocket(False, 'NodeSocketFloat', 'diamond_size')
self.addSocket(False, 'NodeSocketFloat', 'brick_width')
self.addSocket(False, 'NodeSocketFloat', 'brick_height')
self.addSocket(False, 'NodeSocketFloat', 'feather')
self.addSocket(False, 'NodeSocketFloat', 'border')
self.addSocket(True, 'NodeSocketVector', 'UV')
self.addSocket(True, 'NodeSocketVector', 'CellID')
self.addSocket(True, 'NodeSocketFloat', 'Height')
self.addSocket(True, 'NodeSocketFloat', 'TileMask')
self.addSocket(True, 'NodeSocketFloat', 'BorderMask')
self.addSocket(True, 'NodeSocketFloat', 'BrickWidth')
self.addSocket(True, 'NodeSocketFloat', 'BrickHeight')
#Links
self.innerLink('nodes["GroupInput"].outputs[1]', 'nodes["Node1"].inputs[0]')
self.innerLink('nodes["Node0"].outputs[3]', 'nodes["Node1"].inputs[1]')
self.innerLink('nodes["GroupInput"].outputs[0]', 'nodes["Node1"].inputs[2]')
self.innerLink('nodes["GroupInput"].outputs[4]', 'nodes["Node19"].inputs[0]')
self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node19"].inputs[1]')
self.innerLink('nodes["Node19"].outputs[0]', 'nodes["Node20"].inputs[0]')
self.innerLink('nodes["Node9"].outputs[0]', 'nodes["Node20"].inputs[1]')
self.innerLink('nodes["GroupInput"].outputs[3]', 'nodes["Node21"].inputs[0]')
self.innerLink('nodes["Node20"].outputs[0]', 'nodes["Node21"].inputs[1]')
self.innerLink('nodes["GroupInput"].outputs[7]', 'nodes["Node22"].inputs[0]')
self.innerLink('nodes["Node9"].outputs[0]', 'nodes["Node22"].inputs[1]')
self.innerLink('nodes["GroupInput"].outputs[6]', 'nodes["Node23"].inputs[0]')
self.innerLink('nodes["Node9"].outputs[0]', 'nodes["Node23"].inputs[1]')
self.innerLink('nodes["Node1"].outputs[0]', 'nodes["Node24"].inputs[0]')
self.innerLink('nodes["Node24"].outputs[0]', 'nodes["Node25"].inputs[0]')
self.innerLink('nodes["GroupInput"].outputs[2]', 'nodes["Node25"].inputs[1]')
self.innerLink('nodes["Node25"].outputs[0]', 'nodes["Node26"].inputs[0]')
self.innerLink('nodes["GroupInput"].outputs[4]', 'nodes["Node26"].inputs[1]')
self.innerLink('nodes["Node26"].outputs[0]', 'nodes["Node27"].inputs[0]')
self.innerLink('nodes["Node27"].outputs[0]', 'nodes["Node28"].inputs[0]')
self.innerLink('nodes["Node1"].outputs[0]', 'nodes["Node29"].inputs[0]')
self.innerLink('nodes["Node29"].outputs[1]', 'nodes["Node30"].inputs[0]')
self.innerLink('nodes["GroupInput"].outputs[2]', 'nodes["Node30"].inputs[1]')
self.innerLink('nodes["Node30"].outputs[0]', 'nodes["Node31"].inputs[0]')
self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node31"].inputs[1]')
self.innerLink('nodes["Node31"].outputs[0]', 'nodes["Node32"].inputs[0]')
self.innerLink('nodes["Node32"].outputs[0]', 'nodes["Node33"].inputs[0]')
self.innerLink('nodes["Node1"].outputs[0]', 'nodes["Node34"].inputs[0]')
self.innerLink('nodes["Node34"].outputs[0]', 'nodes["Node35"].inputs[0]')
self.innerLink('nodes["GroupInput"].outputs[2]', 'nodes["Node35"].inputs[1]')
self.innerLink('nodes["Node35"].outputs[0]', 'nodes["Node36"].inputs[0]')
self.innerLink('nodes["GroupInput"].outputs[4]', 'nodes["Node36"].inputs[1]')
self.innerLink('nodes["Node36"].outputs[0]', 'nodes["Node37"].inputs[0]')
self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node37"].inputs[1]')
self.innerLink('nodes["GroupInput"].outputs[4]', 'nodes["Node38"].inputs[0]')
self.innerLink('nodes["Node36"].outputs[0]', 'nodes["Node38"].inputs[1]')
self.innerLink('nodes["Node37"].outputs[0]', 'nodes["Node39"].inputs[0]')
self.innerLink('nodes["Node36"].outputs[0]', 'nodes["Node39"].inputs[1]')
self.innerLink('nodes["Node38"].outputs[0]', 'nodes["Node39"].inputs[2]')
self.innerLink('nodes["Node1"].outputs[0]', 'nodes["Node40"].inputs[0]')
self.innerLink('nodes["Node40"].outputs[1]', 'nodes["Node41"].inputs[0]')
self.innerLink('nodes["GroupInput"].outputs[2]', 'nodes["Node41"].inputs[1]')
self.innerLink('nodes["Node41"].outputs[0]', 'nodes["Node42"].inputs[0]')
self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node42"].inputs[1]')
self.innerLink('nodes["Node42"].outputs[0]', 'nodes["Node43"].inputs[0]')
self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node43"].inputs[1]')
self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node44"].inputs[0]')
self.innerLink('nodes["Node42"].outputs[0]', 'nodes["Node44"].inputs[1]')
self.innerLink('nodes["Node43"].outputs[0]', 'nodes["Node45"].inputs[0]')
self.innerLink('nodes["Node42"].outputs[0]', 'nodes["Node45"].inputs[1]')
self.innerLink('nodes["Node44"].outputs[0]', 'nodes["Node45"].inputs[2]')
self.innerLink('nodes["GroupInput"].outputs[4]', 'nodes["Node46"].inputs[0]')
self.innerLink('nodes["Node39"].outputs[0]', 'nodes["Node46"].inputs[1]')
self.innerLink('nodes["Node39"].outputs[0]', 'nodes["Node47"].inputs[0]')
self.innerLink('nodes["Node46"].outputs[0]', 'nodes["Node47"].inputs[1]')
self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node48"].inputs[0]')
self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node48"].inputs[1]')
self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node49"].inputs[0]')
self.innerLink('nodes["Node48"].outputs[0]', 'nodes["Node49"].inputs[1]')
self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node50"].inputs[0]')
self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node50"].inputs[1]')
self.innerLink('nodes["Node50"].outputs[0]', 'nodes["Node51"].inputs[0]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node51"].inputs[1]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node52"].inputs[0]')
self.innerLink('nodes["Node9"].outputs[0]', 'nodes["Node52"].inputs[1]')
self.innerLink('nodes["Node39"].outputs[0]', 'nodes["Node53"].inputs[0]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node53"].inputs[1]')
self.innerLink('nodes["Node53"].outputs[0]', 'nodes["Node54"].inputs[0]')
self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node54"].inputs[1]')
self.innerLink('nodes["Node54"].outputs[0]', 'nodes["Node55"].inputs[0]')
self.innerLink('nodes["Node55"].outputs[0]', 'nodes["Node56"].inputs[0]')
self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node57"].inputs[0]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node57"].inputs[1]')
self.innerLink('nodes["Node57"].outputs[0]', 'nodes["Node58"].inputs[0]')
self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node58"].inputs[1]')
self.innerLink('nodes["Node58"].outputs[0]', 'nodes["Node59"].inputs[0]')
self.innerLink('nodes["Node59"].outputs[0]', 'nodes["Node60"].inputs[0]')
self.innerLink('nodes["Node56"].outputs[0]', 'nodes["Node61"].inputs[0]')
self.innerLink('nodes["Node56"].outputs[0]', 'nodes["Node61"].inputs[1]')
self.innerLink('nodes["Node60"].outputs[0]', 'nodes["Node61"].inputs[2]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node62"].inputs[0]')
self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node62"].inputs[1]')
self.innerLink('nodes["Node62"].outputs[0]', 'nodes["Node63"].inputs[0]')
self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node63"].inputs[1]')
self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node64"].inputs[0]')
self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node64"].inputs[1]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node65"].inputs[0]')
self.innerLink('nodes["Node64"].outputs[0]', 'nodes["Node65"].inputs[1]')
self.innerLink('nodes["Node63"].outputs[0]', 'nodes["Node66"].inputs[0]')
self.innerLink('nodes["Node65"].outputs[0]', 'nodes["Node66"].inputs[1]')
self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node66"].inputs[2]')
self.innerLink('nodes["Node61"].outputs[0]', 'nodes["Node67"].inputs[0]')
self.innerLink('nodes["Node2"].outputs[0]', 'nodes["Node67"].inputs[1]')
self.innerLink('nodes["Node66"].outputs[0]', 'nodes["Node67"].inputs[2]')
self.innerLink('nodes["Node61"].outputs[0]', 'nodes["Node68"].inputs[0]')
self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node68"].inputs[1]')
self.innerLink('nodes["Node13"].outputs[0]', 'nodes["Node68"].inputs[2]')
self.innerLink('nodes["Node61"].outputs[0]', 'nodes["Node69"].inputs[0]')
self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node69"].inputs[1]')
self.innerLink('nodes["Node13"].outputs[0]', 'nodes["Node69"].inputs[2]')
self.innerLink('nodes["Node39"].outputs[0]', 'nodes["Node70"].inputs[0]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node70"].inputs[1]')
self.innerLink('nodes["Node70"].outputs[0]', 'nodes["Node71"].inputs[0]')
self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node71"].inputs[1]')
self.innerLink('nodes["Node71"].outputs[0]', 'nodes["Node72"].inputs[0]')
self.innerLink('nodes["Node72"].outputs[0]', 'nodes["Node73"].inputs[0]')
self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node74"].inputs[0]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node74"].inputs[1]')
self.innerLink('nodes["Node74"].outputs[0]', 'nodes["Node75"].inputs[0]')
self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node75"].inputs[1]')
self.innerLink('nodes["Node75"].outputs[0]', 'nodes["Node76"].inputs[0]')
self.innerLink('nodes["Node76"].outputs[0]', 'nodes["Node77"].inputs[0]')
self.innerLink('nodes["Node73"].outputs[0]', 'nodes["Node78"].inputs[0]')
self.innerLink('nodes["Node73"].outputs[0]', 'nodes["Node78"].inputs[1]')
self.innerLink('nodes["Node77"].outputs[0]', 'nodes["Node78"].inputs[2]')
self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node79"].inputs[0]')
self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node79"].inputs[1]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node80"].inputs[0]')
self.innerLink('nodes["Node79"].outputs[0]', 'nodes["Node80"].inputs[1]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node81"].inputs[0]')
self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node81"].inputs[1]')
self.innerLink('nodes["Node81"].outputs[0]', 'nodes["Node82"].inputs[0]')
self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node82"].inputs[1]')
self.innerLink('nodes["Node80"].outputs[0]', 'nodes["Node83"].inputs[0]')
self.innerLink('nodes["Node82"].outputs[0]', 'nodes["Node83"].inputs[1]')
self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node83"].inputs[2]')
self.innerLink('nodes["Node78"].outputs[0]', 'nodes["Node84"].inputs[0]')
self.innerLink('nodes["Node67"].outputs[0]', 'nodes["Node84"].inputs[1]')
self.innerLink('nodes["Node83"].outputs[0]', 'nodes["Node84"].inputs[2]')
self.innerLink('nodes["Node78"].outputs[0]', 'nodes["Node85"].inputs[0]')
self.innerLink('nodes["Node68"].outputs[0]', 'nodes["Node85"].inputs[1]')
self.innerLink('nodes["Node13"].outputs[0]', 'nodes["Node85"].inputs[2]')
self.innerLink('nodes["Node78"].outputs[0]', 'nodes["Node86"].inputs[0]')
self.innerLink('nodes["Node69"].outputs[0]', 'nodes["Node86"].inputs[1]')
self.innerLink('nodes["Node15"].outputs[0]', 'nodes["Node86"].inputs[2]')
self.innerLink('nodes["Node39"].outputs[0]', 'nodes["Node87"].inputs[0]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node87"].inputs[1]')
self.innerLink('nodes["Node87"].outputs[0]', 'nodes["Node88"].inputs[0]')
self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node88"].inputs[1]')
self.innerLink('nodes["Node88"].outputs[0]', 'nodes["Node89"].inputs[0]')
self.innerLink('nodes["Node89"].outputs[0]', 'nodes["Node90"].inputs[0]')
self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node91"].inputs[0]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node91"].inputs[1]')
self.innerLink('nodes["Node91"].outputs[0]', 'nodes["Node92"].inputs[0]')
self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node92"].inputs[1]')
self.innerLink('nodes["Node92"].outputs[0]', 'nodes["Node93"].inputs[0]')
self.innerLink('nodes["Node93"].outputs[0]', 'nodes["Node94"].inputs[0]')
self.innerLink('nodes["Node90"].outputs[0]', 'nodes["Node95"].inputs[0]')
self.innerLink('nodes["Node90"].outputs[0]', 'nodes["Node95"].inputs[1]')
self.innerLink('nodes["Node94"].outputs[0]', 'nodes["Node95"].inputs[2]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node96"].inputs[0]')
self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node96"].inputs[1]')
self.innerLink('nodes["Node96"].outputs[0]', 'nodes["Node97"].inputs[0]')
self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node97"].inputs[1]')
self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node98"].inputs[0]')
self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node98"].inputs[1]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node99"].inputs[0]')
self.innerLink('nodes["Node98"].outputs[0]', 'nodes["Node99"].inputs[1]')
self.innerLink('nodes["Node97"].outputs[0]', 'nodes["Node100"].inputs[0]')
self.innerLink('nodes["Node99"].outputs[0]', 'nodes["Node100"].inputs[1]')
self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node100"].inputs[2]')
self.innerLink('nodes["Node95"].outputs[0]', 'nodes["Node101"].inputs[0]')
self.innerLink('nodes["Node84"].outputs[0]', 'nodes["Node101"].inputs[1]')
self.innerLink('nodes["Node100"].outputs[0]', 'nodes["Node101"].inputs[2]')
self.innerLink('nodes["Node95"].outputs[0]', 'nodes["Node102"].inputs[0]')
self.innerLink('nodes["Node85"].outputs[0]', 'nodes["Node102"].inputs[1]')
self.innerLink('nodes["Node16"].outputs[0]', 'nodes["Node102"].inputs[2]')
self.innerLink('nodes["Node95"].outputs[0]', 'nodes["Node103"].inputs[0]')
self.innerLink('nodes["Node86"].outputs[0]', 'nodes["Node103"].inputs[1]')
self.innerLink('nodes["Node15"].outputs[0]', 'nodes["Node103"].inputs[2]')
self.innerLink('nodes["Node39"].outputs[0]', 'nodes["Node104"].inputs[0]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node104"].inputs[1]')
self.innerLink('nodes["Node104"].outputs[0]', 'nodes["Node105"].inputs[0]')
self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node105"].inputs[1]')
self.innerLink('nodes["Node105"].outputs[0]', 'nodes["Node106"].inputs[0]')
self.innerLink('nodes["Node106"].outputs[0]', 'nodes["Node107"].inputs[0]')
self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node108"].inputs[0]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node108"].inputs[1]')
self.innerLink('nodes["Node108"].outputs[0]', 'nodes["Node109"].inputs[0]')
self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node109"].inputs[1]')
self.innerLink('nodes["Node109"].outputs[0]', 'nodes["Node110"].inputs[0]')
self.innerLink('nodes["Node110"].outputs[0]', 'nodes["Node111"].inputs[0]')
self.innerLink('nodes["Node107"].outputs[0]', 'nodes["Node112"].inputs[0]')
self.innerLink('nodes["Node107"].outputs[0]', 'nodes["Node112"].inputs[1]')
self.innerLink('nodes["Node111"].outputs[0]', 'nodes["Node112"].inputs[2]')
self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node113"].inputs[0]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node113"].inputs[1]')
self.innerLink('nodes["Node113"].outputs[0]', 'nodes["Node114"].inputs[0]')
self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node114"].inputs[1]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node115"].inputs[0]')
self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node115"].inputs[1]')
self.innerLink('nodes["Node115"].outputs[0]', 'nodes["Node116"].inputs[0]')
self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node116"].inputs[1]')
self.innerLink('nodes["Node114"].outputs[0]', 'nodes["Node117"].inputs[0]')
self.innerLink('nodes["Node116"].outputs[0]', 'nodes["Node117"].inputs[1]')
self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node117"].inputs[2]')
self.innerLink('nodes["Node112"].outputs[0]', 'nodes["Node118"].inputs[0]')
self.innerLink('nodes["Node101"].outputs[0]', 'nodes["Node118"].inputs[1]')
self.innerLink('nodes["Node117"].outputs[0]', 'nodes["Node118"].inputs[2]')
self.innerLink('nodes["Node112"].outputs[0]', 'nodes["Node119"].inputs[0]')
self.innerLink('nodes["Node102"].outputs[0]', 'nodes["Node119"].inputs[1]')
self.innerLink('nodes["Node16"].outputs[0]', 'nodes["Node119"].inputs[2]')
self.innerLink('nodes["Node112"].outputs[0]', 'nodes["Node120"].inputs[0]')
self.innerLink('nodes["Node103"].outputs[0]', 'nodes["Node120"].inputs[1]')
self.innerLink('nodes["Node13"].outputs[0]', 'nodes["Node120"].inputs[2]')
self.innerLink('nodes["Node28"].outputs[0]', 'nodes["Node121"].inputs[0]')
self.innerLink('nodes["Node119"].outputs[0]', 'nodes["Node121"].inputs[1]')
self.innerLink('nodes["Node33"].outputs[0]', 'nodes["Node122"].inputs[0]')
self.innerLink('nodes["Node120"].outputs[0]', 'nodes["Node122"].inputs[1]')
self.innerLink('nodes["Node121"].outputs[0]', 'nodes["Node123"].inputs[0]')
self.innerLink('nodes["Node122"].outputs[0]', 'nodes["Node123"].inputs[1]')
self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node123"].inputs[2]')
self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node124"].inputs[0]')
self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node124"].inputs[1]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node125"].inputs[0]')
self.innerLink('nodes["Node124"].outputs[0]', 'nodes["Node125"].inputs[1]')
self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node126"].inputs[0]')
self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node126"].inputs[1]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node127"].inputs[0]')
self.innerLink('nodes["Node126"].outputs[0]', 'nodes["Node127"].inputs[1]')
self.innerLink('nodes["Node125"].outputs[0]', 'nodes["Node128"].inputs[0]')
self.innerLink('nodes["Node127"].outputs[0]', 'nodes["Node128"].inputs[1]')
self.innerLink('nodes["Node128"].outputs[0]', 'nodes["Node129"].inputs[0]')
self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node129"].inputs[1]')
self.innerLink('nodes["Node52"].outputs[0]', 'nodes["Node130"].inputs[0]')
self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node130"].inputs[1]')
self.innerLink('nodes["Node23"].outputs[0]', 'nodes["Node131"].inputs[0]')
self.innerLink('nodes["Node130"].outputs[0]', 'nodes["Node131"].inputs[1]')
self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node132"].inputs[0]')
self.innerLink('nodes["Node131"].outputs[0]', 'nodes["Node132"].inputs[1]')
self.innerLink('nodes["Node128"].outputs[0]', 'nodes["Node133"].inputs[0]')
self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node133"].inputs[1]')
self.innerLink('nodes["Node128"].outputs[0]', 'nodes["Node134"].inputs[0]')
self.innerLink('nodes["Node132"].outputs[0]', 'nodes["Node134"].inputs[1]')
self.innerLink('nodes["Node134"].outputs[0]', 'nodes["Node135"].inputs[0]')
self.innerLink('nodes["Node135"].outputs[0]', 'nodes["Node136"].inputs[0]')
self.innerLink('nodes["Node128"].outputs[0]', 'nodes["Node137"].inputs[0]')
self.innerLink('nodes["Node132"].outputs[0]', 'nodes["Node137"].inputs[1]')
self.innerLink('nodes["Node136"].outputs[0]', 'nodes["Node138"].inputs[0]')
self.innerLink('nodes["Node137"].outputs[0]', 'nodes["Node138"].inputs[1]')
self.innerLink('nodes["Node138"].outputs[0]', 'nodes["Node139"].inputs[0]')
self.innerLink('nodes["Node128"].outputs[0]', 'nodes["Node140"].inputs[0]')
self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node140"].inputs[1]')
self.innerLink('nodes["Node132"].outputs[0]', 'nodes["Node141"].inputs[0]')
self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node141"].inputs[1]')
self.innerLink('nodes["Node140"].outputs[0]', 'nodes["Node142"].inputs[0]')
self.innerLink('nodes["Node141"].outputs[0]', 'nodes["Node142"].inputs[1]')
self.innerLink('nodes["Node139"].outputs[0]', 'nodes["Node143"].inputs[0]')
self.innerLink('nodes["Node142"].outputs[0]', 'nodes["Node143"].inputs[1]')
self.innerLink('nodes["Node18"].outputs[0]', 'nodes["Node143"].inputs[2]')
self.innerLink('nodes["Node133"].outputs[0]', 'nodes["Node144"].inputs[0]')
self.innerLink('nodes["Node143"].outputs[0]', 'nodes["Node144"].inputs[1]')
self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node144"].inputs[2]')
self.innerLink('nodes["Node28"].outputs[0]', 'nodes["Node145"].inputs[0]')
self.innerLink('nodes["Node33"].outputs[0]', 'nodes["Node145"].inputs[1]')
self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node145"].inputs[2]')
self.innerLink('nodes["Node39"].outputs[0]', 'nodes["Node146"].inputs[0]')
self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node146"].inputs[1]')
self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node146"].inputs[2]')
self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node147"].inputs[0]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node147"].inputs[1]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node148"].inputs[0]')
self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node148"].inputs[1]')
self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node149"].inputs[0]')
self.innerLink('nodes["Node148"].outputs[0]', 'nodes["Node149"].inputs[1]')
self.innerLink('nodes["Node149"].outputs[0]', 'nodes["Node150"].inputs[0]')
self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node150"].inputs[1]')
self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node151"].inputs[0]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node151"].inputs[1]')
self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node152"].inputs[0]')
self.innerLink('nodes["Node151"].outputs[0]', 'nodes["Node152"].inputs[1]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node153"].inputs[0]')
self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node153"].inputs[1]')
self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node154"].inputs[0]')
self.innerLink('nodes["Node153"].outputs[0]', 'nodes["Node154"].inputs[1]')
self.innerLink('nodes["Node154"].outputs[0]', 'nodes["Node155"].inputs[0]')
self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node155"].inputs[1]')
self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node156"].inputs[0]')
self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node156"].inputs[1]')
self.innerLink('nodes["Node152"].outputs[0]', 'nodes["Node157"].inputs[0]')
self.innerLink('nodes["Node156"].outputs[0]', 'nodes["Node157"].inputs[1]')
self.innerLink('nodes["Node155"].outputs[0]', 'nodes["Node157"].inputs[2]')
self.innerLink('nodes["Node147"].outputs[0]', 'nodes["Node158"].inputs[0]')
self.innerLink('nodes["Node157"].outputs[0]', 'nodes["Node158"].inputs[1]')
self.innerLink('nodes["Node150"].outputs[0]', 'nodes["Node158"].inputs[2]')
self.innerLink('nodes["Node158"].outputs[0]', 'nodes["Node159"].inputs[0]')
self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node159"].inputs[1]')
self.innerLink('nodes["GroupInput"].outputs[4]', 'nodes["Node160"].inputs[0]')
self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node160"].inputs[1]')
self.innerLink('nodes["Node160"].outputs[0]', 'nodes["Node161"].inputs[0]')
self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node161"].inputs[1]')
self.innerLink('nodes["Node23"].outputs[0]', 'nodes["Node162"].inputs[0]')
self.innerLink('nodes["Node161"].outputs[0]', 'nodes["Node162"].inputs[1]')
self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node163"].inputs[0]')
self.innerLink('nodes["Node162"].outputs[0]', 'nodes["Node163"].inputs[1]')
self.innerLink('nodes["Node158"].outputs[0]', 'nodes["Node164"].inputs[0]')
self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node164"].inputs[1]')
self.innerLink('nodes["Node158"].outputs[0]', 'nodes["Node165"].inputs[0]')
self.innerLink('nodes["Node163"].outputs[0]', 'nodes["Node165"].inputs[1]')
self.innerLink('nodes["Node165"].outputs[0]', 'nodes["Node166"].inputs[0]')
self.innerLink('nodes["Node166"].outputs[0]', 'nodes["Node167"].inputs[0]')
self.innerLink('nodes["Node158"].outputs[0]', 'nodes["Node168"].inputs[0]')
self.innerLink('nodes["Node163"].outputs[0]', 'nodes["Node168"].inputs[1]')
self.innerLink('nodes["Node167"].outputs[0]', 'nodes["Node169"].inputs[0]')
self.innerLink('nodes["Node168"].outputs[0]', 'nodes["Node169"].inputs[1]')
self.innerLink('nodes["Node169"].outputs[0]', 'nodes["Node170"].inputs[0]')
self.innerLink('nodes["Node158"].outputs[0]', 'nodes["Node171"].inputs[0]')
self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node171"].inputs[1]')
self.innerLink('nodes["Node163"].outputs[0]', 'nodes["Node172"].inputs[0]')
self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node172"].inputs[1]')
self.innerLink('nodes["Node171"].outputs[0]', 'nodes["Node173"].inputs[0]')
self.innerLink('nodes["Node172"].outputs[0]', 'nodes["Node173"].inputs[1]')
self.innerLink('nodes["Node170"].outputs[0]', 'nodes["Node174"].inputs[0]')
self.innerLink('nodes["Node173"].outputs[0]', 'nodes["Node174"].inputs[1]')
self.innerLink('nodes["Node18"].outputs[0]', 'nodes["Node174"].inputs[2]')
self.innerLink('nodes["Node164"].outputs[0]', 'nodes["Node175"].inputs[0]')
self.innerLink('nodes["Node174"].outputs[0]', 'nodes["Node175"].inputs[1]')
self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node175"].inputs[2]')
self.innerLink('nodes["Node51"].outputs[0]', 'nodes["Node176"].inputs[0]')
self.innerLink('nodes["Node159"].outputs[0]', 'nodes["Node176"].inputs[1]')
self.innerLink('nodes["Node129"].outputs[0]', 'nodes["Node176"].inputs[2]')
self.innerLink('nodes["Node51"].outputs[0]', 'nodes["Node177"].inputs[0]')
self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node177"].inputs[1]')
self.innerLink('nodes["Node52"].outputs[0]', 'nodes["Node177"].inputs[2]')
self.innerLink('nodes["Node51"].outputs[0]', 'nodes["Node178"].inputs[0]')
self.innerLink('nodes["GroupInput"].outputs[4]', 'nodes["Node178"].inputs[1]')
self.innerLink('nodes["Node52"].outputs[0]', 'nodes["Node178"].inputs[2]')
self.innerLink('nodes["Node51"].outputs[0]', 'nodes["Node179"].inputs[0]')
self.innerLink('nodes["Node145"].outputs[0]', 'nodes["Node179"].inputs[1]')
self.innerLink('nodes["Node123"].outputs[0]', 'nodes["Node179"].inputs[2]')
self.innerLink('nodes["Node51"].outputs[0]', 'nodes["Node180"].inputs[0]')
self.innerLink('nodes["Node175"].outputs[0]', 'nodes["Node180"].inputs[1]')
self.innerLink('nodes["Node144"].outputs[0]', 'nodes["Node180"].inputs[2]')
self.innerLink('nodes["Node51"].outputs[0]', 'nodes["Node181"].inputs[0]')
self.innerLink('nodes["Node5"].outputs[0]', 'nodes["Node181"].inputs[1]')
self.innerLink('nodes["Node11"].outputs[0]', 'nodes["Node181"].inputs[2]')
self.innerLink('nodes["Node51"].outputs[0]', 'nodes["Node182"].inputs[0]')
self.innerLink('nodes["Node146"].outputs[0]', 'nodes["Node182"].inputs[1]')
self.innerLink('nodes["Node118"].outputs[0]', 'nodes["Node182"].inputs[2]')
self.innerLink('nodes["Node182"].outputs[0]', 'nodes["GroupOutput"].inputs[0]')
self.innerLink('nodes["Node179"].outputs[0]', 'nodes["GroupOutput"].inputs[1]')
self.innerLink('nodes["Node180"].outputs[0]', 'nodes["GroupOutput"].inputs[2]')
self.innerLink('nodes["Node181"].outputs[0]', 'nodes["GroupOutput"].inputs[3]')
self.innerLink('nodes["Node176"].outputs[0]', 'nodes["GroupOutput"].inputs[4]')
self.innerLink('nodes["Node178"].outputs[0]', 'nodes["GroupOutput"].inputs[5]')
self.innerLink('nodes["Node177"].outputs[0]', 'nodes["GroupOutput"].inputs[6]')
def getNodetree(self, name):
if bpy.data.node_groups.find(name)==-1:
self.createNodetree(name)
else:
self.node_tree=bpy.data.node_groups[name]
def addSocket(self, is_output, sockettype, name):
if bpy.app.version >= (4, 0, 0):
if is_output==True:
socket = self.node_tree.interface.new_socket(name, in_out='OUTPUT', socket_type=sockettype)
else:
socket = self.node_tree.interface.new_socket(name, in_out='INPUT', socket_type=sockettype)
else:
#for now duplicated socket names are not allowed
if is_output==True:
if self.node_tree.nodes['GroupOutput'].inputs.find(name)==-1:
socket=self.node_tree.outputs.new(sockettype, name)
elif is_output==False:
if self.node_tree.nodes['GroupInput'].outputs.find(name)==-1:
socket=self.node_tree.inputs.new(sockettype, name)
return socket
def addNode(self, nodetype, attrs):
node=self.node_tree.nodes.new(nodetype)
for attr in attrs:
self.value_set(node, attr, attrs[attr])
return node
def getNode(self, nodename):
if self.node_tree.nodes.find(nodename)>-1:
return self.node_tree.nodes[nodename]
return None
def innerLink(self, socketin, socketout):
SI=self.node_tree.path_resolve(socketin)
SO=self.node_tree.path_resolve(socketout)
self.node_tree.links.new(SI, SO)
def free(self):
if self.node_tree.users==1:
bpy.data.node_groups.remove(self.node_tree, do_unlink=True)