-
Notifications
You must be signed in to change notification settings - Fork 6
/
uv_map_tile_pattern_2_addin.py
374 lines (362 loc) · 27 KB
/
uv_map_tile_pattern_2_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
import bpy
class ShaderNodeuv_map_tile_pattern_2(bpy.types.ShaderNodeCustomGroup):
bl_name='ShaderNodeuv_map_tile_pattern_2'
bl_label='uv_map_tile_pattern_2'
bl_icon='NONE'
def init(self, context):
self.getNodetree(self.name + '_node_tree')
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
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('ShaderNodeValue', { 'name':'Node4' ,'outputs[0].default_value':0.5 })
self.addNode('ShaderNodeValue', { 'name':'Node5' ,'outputs[0].default_value':0.25 })
self.addNode('ShaderNodeValue', { 'name':'Node6' ,'outputs[0].default_value':0 })
self.addNode('ShaderNodeValue', { 'name':'Node7' ,'outputs[0].default_value':0 })
self.addNode('ShaderNodeValue', { 'name':'Node8' ,'outputs[0].default_value':1 })
self.addNode('ShaderNodeValue', { 'name':'Node9' ,'outputs[0].default_value':0 })
self.addNode('ShaderNodeValue', { 'name':'Node11' ,'outputs[0].default_value':0.25 })
self.addNode('ShaderNodeValue', { 'name':'Node12' ,'outputs[0].default_value':-1 })
self.addNode('ShaderNodeValue', { 'name':'Node13' ,'outputs[0].default_value':3 })
self.addNode('ShaderNodeValue', { 'name':'Node14' ,'outputs[0].default_value':0.5 })
self.addNode('ShaderNodeValue', { 'name':'Node15' ,'outputs[0].default_value':2 })
self.addNode('ShaderNodeValue', { 'name':'Node16' ,'outputs[0].default_value':4 })
self.addNode('ShaderNodeValue', { 'name':'Node17' ,'outputs[0].default_value':2.25 })
self.addNode('ShaderNodeValue', { 'name':'Node18' ,'outputs[0].default_value':-0.25 })
self.addNode('ShaderNodeValue', { 'name':'Node19' ,'outputs[0].default_value':1 })
self.addNode('ShaderNodeSeparateXYZ', { 'name':'Node20' })
self.addNode('ShaderNodeMath', { 'name':'Node21' ,'operation':'MULTIPLY' })
self.addNode('ShaderNodeSeparateXYZ', { 'name':'Node22' })
self.addNode('ShaderNodeMath', { 'name':'Node23' ,'operation':'MULTIPLY' })
self.addNode('ShaderNodeCombineXYZ', { 'name':'Node24' })
self.addNode('ShaderNodeSeparateXYZ', { 'name':'Node25' })
self.addNode('ShaderNodeMath', { 'name':'Node26' ,'inputs[1].default_value':0.5 ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node27' ,'inputs[1].default_value':0.5 ,'operation':'ROUND' })
self.addNode('ShaderNodeMath', { 'name':'Node28' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeSeparateXYZ', { 'name':'Node29' })
self.addNode('ShaderNodeMath', { 'name':'Node30' ,'inputs[1].default_value':0.5 ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node31' ,'inputs[1].default_value':0.5 ,'operation':'ROUND' })
self.addNode('ShaderNodeMath', { 'name':'Node32' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node33' ,'operation':'DIVIDE' })
self.addNode('ShaderNodeMath', { 'name':'Node34' ,'inputs[1].default_value':0.5 ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node35' ,'operation':'ROUND' })
self.addNode('ShaderNodeMath', { 'name':'Node36' ,'operation':'DIVIDE' })
self.addNode('ShaderNodeMath', { 'name':'Node37' ,'inputs[1].default_value':0.5 ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node38' ,'operation':'ROUND' })
self.addNode('ShaderNodeMath', { 'name':'Node39' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node40' ,'operation':'LESS_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node41' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node42' ,'operation':'ABSOLUTE' })
self.addNode('ShaderNodeMath', { 'name':'Node43' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node44' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node45' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node46' ,'operation':'ABSOLUTE' })
self.addNode('ShaderNodeMath', { 'name':'Node47' ,'inputs[1].default_value':0.000001 ,'operation':'LESS_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node48' ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node49' ,'operation':'ADD' })
self.addNode('ShaderNodeMath', { 'name':'Node50' ,'inputs[1].default_value':0.999 ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node51' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node52' ,'operation':'ABSOLUTE' })
self.addNode('ShaderNodeMath', { 'name':'Node53' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node54' })
self.addNode('ShaderNodeMath', { 'name':'Node55' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node56' ,'operation':'ABSOLUTE' })
self.addNode('ShaderNodeMath', { 'name':'Node57' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node58' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node59' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node60' ,'operation':'ABSOLUTE' })
self.addNode('ShaderNodeMath', { 'name':'Node61' ,'inputs[1].default_value':0.000001 ,'operation':'LESS_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node62' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node63' ,'operation':'ABSOLUTE' })
self.addNode('ShaderNodeMath', { 'name':'Node64' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node65' })
self.addNode('ShaderNodeMath', { 'name':'Node66' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node67' ,'operation':'ABSOLUTE' })
self.addNode('ShaderNodeMath', { 'name':'Node68' ,'inputs[1].default_value':0.000001 ,'operation':'LESS_THAN' })
self.addNode('ShaderNodeMath', { 'name':'Node69' ,'operation':'ADD' })
self.addNode('ShaderNodeMath', { 'name':'Node70' ,'operation':'MULTIPLY' })
self.addNode('ShaderNodeMath', { 'name':'Node71' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node72' ,'operation':'MODULO' })
self.addNode('ShaderNodeMath', { 'name':'Node73' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node74' ,'operation':'MODULO' })
self.addNode('ShaderNodeSeparateXYZ', { 'name':'Node75' })
self.addNode('ShaderNodeMath', { 'name':'Node76' ,'operation':'MULTIPLY' })
self.addNode('ShaderNodeMath', { 'name':'Node77' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node78' ,'inputs[1].default_value':0.5 ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node79' ,'inputs[1].default_value':0.5 ,'operation':'ROUND' })
self.addNode('ShaderNodeMath', { 'name':'Node80' ,'operation':'DIVIDE' })
self.addNode('ShaderNodeMath', { 'name':'Node81' ,'operation':'MULTIPLY' })
self.addNode('ShaderNodeMath', { 'name':'Node82' ,'inputs[1].default_value':0.5 ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node83' ,'operation':'ROUND' })
self.addNode('ShaderNodeSeparateXYZ', { 'name':'Node84' })
self.addNode('ShaderNodeMath', { 'name':'Node85' ,'operation':'DIVIDE' })
self.addNode('ShaderNodeMath', { 'name':'Node86' ,'inputs[1].default_value':0.5 ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node87' ,'operation':'ROUND' })
self.addNode('ShaderNodeMath', { 'name':'Node88' ,'operation':'MULTIPLY' })
self.addNode('ShaderNodeCombineXYZ', { 'name':'Node89' })
self.addNode('ShaderNodeMath', { 'name':'Node90' ,'operation':'ADD' })
self.addNode('ShaderNodeMath', { 'name':'Node91' ,'operation':'MULTIPLY' })
self.addNode('ShaderNodeMath', { 'name':'Node92' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node93' ,'operation':'MODULO' })
self.addNode('ShaderNodeMath', { 'name':'Node94' ,'operation':'MODULO' })
self.addNode('ShaderNodeSeparateXYZ', { 'name':'Node95' })
self.addNode('ShaderNodeMath', { 'name':'Node96' ,'operation':'MULTIPLY' })
self.addNode('ShaderNodeMath', { 'name':'Node97' ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node98' ,'inputs[1].default_value':0.5 ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node99' ,'inputs[1].default_value':0.5 ,'operation':'ROUND' })
self.addNode('ShaderNodeMath', { 'name':'Node100' ,'operation':'DIVIDE' })
self.addNode('ShaderNodeMath', { 'name':'Node101' ,'operation':'MULTIPLY' })
self.addNode('ShaderNodeMath', { 'name':'Node102' ,'inputs[1].default_value':0.5 ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node103' ,'operation':'ROUND' })
self.addNode('ShaderNodeMath', { 'name':'Node104' ,'operation':'ADD' })
self.addNode('ShaderNodeSeparateXYZ', { 'name':'Node105' })
self.addNode('ShaderNodeMath', { 'name':'Node106' ,'operation':'DIVIDE' })
self.addNode('ShaderNodeMath', { 'name':'Node107' ,'inputs[1].default_value':0.5 ,'operation':'SUBTRACT' })
self.addNode('ShaderNodeMath', { 'name':'Node108' ,'operation':'ROUND' })
self.addNode('ShaderNodeMath', { 'name':'Node109' ,'operation':'MULTIPLY' })
self.addNode('ShaderNodeCombineXYZ', { 'name':'Node110' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node111' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node112' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node113' })
self.addNode('ShaderNodeMixRGB', { 'name':'Node114' })
self.addNode('ShaderNodeMath', { 'name':'Node115' ,'operation':'MODULO' })
self.addNode('ShaderNodeMath', { 'name':'Node116' ,'operation':'MODULO' })
self.addNode('ShaderNodeCombineXYZ', { 'name':'Node117' })
#Sockets
self.addSocket(False, 'NodeSocketVector', 'Vector')
self.addSocket(False, 'NodeSocketFloat', 'HAS_Vector')
self.addSocket(False, 'NodeSocketFloat', 'scale')
self.addSocket(True, 'NodeSocketVector', 'UV')
self.addSocket(True, 'NodeSocketVector', 'cellID')
self.addSocket(True, 'NodeSocketFloat', 'brick_width')
self.addSocket(True, 'NodeSocketFloat', 'brick_height')
self.addSocket(True, 'NodeSocketFloat', 'tile_mask')
#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["Node1"].outputs[0]', 'nodes["Node20"].inputs[0]')
self.innerLink('nodes["Node20"].outputs[0]', 'nodes["Node21"].inputs[0]')
self.innerLink('nodes["GroupInput"].outputs[2]', 'nodes["Node21"].inputs[1]')
self.innerLink('nodes["Node1"].outputs[0]', 'nodes["Node22"].inputs[0]')
self.innerLink('nodes["Node22"].outputs[1]', 'nodes["Node23"].inputs[0]')
self.innerLink('nodes["GroupInput"].outputs[2]', 'nodes["Node23"].inputs[1]')
self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node24"].inputs[0]')
self.innerLink('nodes["Node23"].outputs[0]', 'nodes["Node24"].inputs[1]')
self.innerLink('nodes["Node9"].outputs[0]', 'nodes["Node24"].inputs[2]')
self.innerLink('nodes["Node24"].outputs[0]', 'nodes["Node25"].inputs[0]')
self.innerLink('nodes["Node25"].outputs[0]', 'nodes["Node26"].inputs[0]')
self.innerLink('nodes["Node26"].outputs[0]', 'nodes["Node27"].inputs[0]')
self.innerLink('nodes["Node25"].outputs[0]', 'nodes["Node28"].inputs[0]')
self.innerLink('nodes["Node27"].outputs[0]', 'nodes["Node28"].inputs[1]')
self.innerLink('nodes["Node24"].outputs[0]', 'nodes["Node29"].inputs[0]')
self.innerLink('nodes["Node29"].outputs[1]', 'nodes["Node30"].inputs[0]')
self.innerLink('nodes["Node30"].outputs[0]', 'nodes["Node31"].inputs[0]')
self.innerLink('nodes["Node29"].outputs[1]', 'nodes["Node32"].inputs[0]')
self.innerLink('nodes["Node31"].outputs[0]', 'nodes["Node32"].inputs[1]')
self.innerLink('nodes["Node28"].outputs[0]', 'nodes["Node33"].inputs[0]')
self.innerLink('nodes["Node11"].outputs[0]', 'nodes["Node33"].inputs[1]')
self.innerLink('nodes["Node33"].outputs[0]', 'nodes["Node34"].inputs[0]')
self.innerLink('nodes["Node34"].outputs[0]', 'nodes["Node35"].inputs[0]')
self.innerLink('nodes["Node32"].outputs[0]', 'nodes["Node36"].inputs[0]')
self.innerLink('nodes["Node11"].outputs[0]', 'nodes["Node36"].inputs[1]')
self.innerLink('nodes["Node36"].outputs[0]', 'nodes["Node37"].inputs[0]')
self.innerLink('nodes["Node37"].outputs[0]', 'nodes["Node38"].inputs[0]')
self.innerLink('nodes["Node35"].outputs[0]', 'nodes["Node39"].inputs[0]')
self.innerLink('nodes["Node38"].outputs[0]', 'nodes["Node39"].inputs[1]')
self.innerLink('nodes["Node39"].outputs[0]', 'nodes["Node40"].inputs[0]')
self.innerLink('nodes["Node8"].outputs[0]', 'nodes["Node40"].inputs[1]')
self.innerLink('nodes["Node40"].outputs[0]', 'nodes["Node41"].inputs[0]')
self.innerLink('nodes["Node7"].outputs[0]', 'nodes["Node41"].inputs[1]')
self.innerLink('nodes["Node41"].outputs[0]', 'nodes["Node42"].inputs[0]')
self.innerLink('nodes["Node42"].outputs[0]', 'nodes["Node43"].inputs[0]')
self.innerLink('nodes["Node35"].outputs[0]', 'nodes["Node44"].inputs[0]')
self.innerLink('nodes["Node38"].outputs[0]', 'nodes["Node44"].inputs[1]')
self.innerLink('nodes["Node44"].outputs[0]', 'nodes["Node45"].inputs[0]')
self.innerLink('nodes["Node12"].outputs[0]', 'nodes["Node45"].inputs[1]')
self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node46"].inputs[0]')
self.innerLink('nodes["Node46"].outputs[0]', 'nodes["Node47"].inputs[0]')
self.innerLink('nodes["Node44"].outputs[0]', 'nodes["Node48"].inputs[0]')
self.innerLink('nodes["Node12"].outputs[0]', 'nodes["Node48"].inputs[1]')
self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node49"].inputs[0]')
self.innerLink('nodes["Node48"].outputs[0]', 'nodes["Node49"].inputs[1]')
self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node50"].inputs[0]')
self.innerLink('nodes["Node50"].outputs[0]', 'nodes["Node51"].inputs[0]')
self.innerLink('nodes["Node7"].outputs[0]', 'nodes["Node51"].inputs[1]')
self.innerLink('nodes["Node51"].outputs[0]', 'nodes["Node52"].inputs[0]')
self.innerLink('nodes["Node52"].outputs[0]', 'nodes["Node53"].inputs[0]')
self.innerLink('nodes["Node43"].outputs[0]', 'nodes["Node54"].inputs[0]')
self.innerLink('nodes["Node43"].outputs[0]', 'nodes["Node54"].inputs[1]')
self.innerLink('nodes["Node53"].outputs[0]', 'nodes["Node54"].inputs[2]')
self.innerLink('nodes["Node54"].outputs[0]', 'nodes["Node55"].inputs[0]')
self.innerLink('nodes["Node7"].outputs[0]', 'nodes["Node55"].inputs[1]')
self.innerLink('nodes["Node55"].outputs[0]', 'nodes["Node56"].inputs[0]')
self.innerLink('nodes["Node56"].outputs[0]', 'nodes["Node57"].inputs[0]')
self.innerLink('nodes["Node35"].outputs[0]', 'nodes["Node58"].inputs[0]')
self.innerLink('nodes["Node38"].outputs[0]', 'nodes["Node58"].inputs[1]')
self.innerLink('nodes["Node58"].outputs[0]', 'nodes["Node59"].inputs[0]')
self.innerLink('nodes["Node13"].outputs[0]', 'nodes["Node59"].inputs[1]')
self.innerLink('nodes["Node59"].outputs[0]', 'nodes["Node60"].inputs[0]')
self.innerLink('nodes["Node60"].outputs[0]', 'nodes["Node61"].inputs[0]')
self.innerLink('nodes["Node61"].outputs[0]', 'nodes["Node62"].inputs[0]')
self.innerLink('nodes["Node7"].outputs[0]', 'nodes["Node62"].inputs[1]')
self.innerLink('nodes["Node62"].outputs[0]', 'nodes["Node63"].inputs[0]')
self.innerLink('nodes["Node63"].outputs[0]', 'nodes["Node64"].inputs[0]')
self.innerLink('nodes["Node57"].outputs[0]', 'nodes["Node65"].inputs[0]')
self.innerLink('nodes["Node64"].outputs[0]', 'nodes["Node65"].inputs[1]')
self.innerLink('nodes["Node57"].outputs[0]', 'nodes["Node65"].inputs[2]')
self.innerLink('nodes["Node65"].outputs[0]', 'nodes["Node66"].inputs[0]')
self.innerLink('nodes["Node8"].outputs[0]', 'nodes["Node66"].inputs[1]')
self.innerLink('nodes["Node66"].outputs[0]', 'nodes["Node67"].inputs[0]')
self.innerLink('nodes["Node67"].outputs[0]', 'nodes["Node68"].inputs[0]')
self.innerLink('nodes["Node15"].outputs[0]', 'nodes["Node69"].inputs[0]')
self.innerLink('nodes["Node32"].outputs[0]', 'nodes["Node69"].inputs[1]')
self.innerLink('nodes["Node35"].outputs[0]', 'nodes["Node70"].inputs[0]')
self.innerLink('nodes["Node11"].outputs[0]', 'nodes["Node70"].inputs[1]')
self.innerLink('nodes["Node69"].outputs[0]', 'nodes["Node71"].inputs[0]')
self.innerLink('nodes["Node70"].outputs[0]', 'nodes["Node71"].inputs[1]')
self.innerLink('nodes["Node71"].outputs[0]', 'nodes["Node72"].inputs[0]')
self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node72"].inputs[1]')
self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node73"].inputs[0]')
self.innerLink('nodes["Node72"].outputs[0]', 'nodes["Node73"].inputs[1]')
self.innerLink('nodes["Node28"].outputs[0]', 'nodes["Node74"].inputs[0]')
self.innerLink('nodes["Node11"].outputs[0]', 'nodes["Node74"].inputs[1]')
self.innerLink('nodes["Node24"].outputs[0]', 'nodes["Node75"].inputs[0]')
self.innerLink('nodes["Node35"].outputs[0]', 'nodes["Node76"].inputs[0]')
self.innerLink('nodes["Node11"].outputs[0]', 'nodes["Node76"].inputs[1]')
self.innerLink('nodes["Node75"].outputs[1]', 'nodes["Node77"].inputs[0]')
self.innerLink('nodes["Node76"].outputs[0]', 'nodes["Node77"].inputs[1]')
self.innerLink('nodes["Node77"].outputs[0]', 'nodes["Node78"].inputs[0]')
self.innerLink('nodes["Node78"].outputs[0]', 'nodes["Node79"].inputs[0]')
self.innerLink('nodes["Node79"].outputs[0]', 'nodes["Node80"].inputs[0]')
self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node80"].inputs[1]')
self.innerLink('nodes["Node80"].outputs[0]', 'nodes["Node81"].inputs[0]')
self.innerLink('nodes["Node15"].outputs[0]', 'nodes["Node81"].inputs[1]')
self.innerLink('nodes["Node81"].outputs[0]', 'nodes["Node82"].inputs[0]')
self.innerLink('nodes["Node82"].outputs[0]', 'nodes["Node83"].inputs[0]')
self.innerLink('nodes["Node24"].outputs[0]', 'nodes["Node84"].inputs[0]')
self.innerLink('nodes["Node84"].outputs[0]', 'nodes["Node85"].inputs[0]')
self.innerLink('nodes["Node11"].outputs[0]', 'nodes["Node85"].inputs[1]')
self.innerLink('nodes["Node85"].outputs[0]', 'nodes["Node86"].inputs[0]')
self.innerLink('nodes["Node86"].outputs[0]', 'nodes["Node87"].inputs[0]')
self.innerLink('nodes["Node87"].outputs[0]', 'nodes["Node88"].inputs[0]')
self.innerLink('nodes["Node16"].outputs[0]', 'nodes["Node88"].inputs[1]')
self.innerLink('nodes["Node83"].outputs[0]', 'nodes["Node89"].inputs[0]')
self.innerLink('nodes["Node88"].outputs[0]', 'nodes["Node89"].inputs[1]')
self.innerLink('nodes["Node9"].outputs[0]', 'nodes["Node89"].inputs[2]')
self.innerLink('nodes["Node17"].outputs[0]', 'nodes["Node90"].inputs[0]')
self.innerLink('nodes["Node28"].outputs[0]', 'nodes["Node90"].inputs[1]')
self.innerLink('nodes["Node38"].outputs[0]', 'nodes["Node91"].inputs[0]')
self.innerLink('nodes["Node18"].outputs[0]', 'nodes["Node91"].inputs[1]')
self.innerLink('nodes["Node90"].outputs[0]', 'nodes["Node92"].inputs[0]')
self.innerLink('nodes["Node91"].outputs[0]', 'nodes["Node92"].inputs[1]')
self.innerLink('nodes["Node92"].outputs[0]', 'nodes["Node93"].inputs[0]')
self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node93"].inputs[1]')
self.innerLink('nodes["Node32"].outputs[0]', 'nodes["Node94"].inputs[0]')
self.innerLink('nodes["Node11"].outputs[0]', 'nodes["Node94"].inputs[1]')
self.innerLink('nodes["Node24"].outputs[0]', 'nodes["Node95"].inputs[0]')
self.innerLink('nodes["Node38"].outputs[0]', 'nodes["Node96"].inputs[0]')
self.innerLink('nodes["Node11"].outputs[0]', 'nodes["Node96"].inputs[1]')
self.innerLink('nodes["Node95"].outputs[0]', 'nodes["Node97"].inputs[0]')
self.innerLink('nodes["Node96"].outputs[0]', 'nodes["Node97"].inputs[1]')
self.innerLink('nodes["Node97"].outputs[0]', 'nodes["Node98"].inputs[0]')
self.innerLink('nodes["Node98"].outputs[0]', 'nodes["Node99"].inputs[0]')
self.innerLink('nodes["Node99"].outputs[0]', 'nodes["Node100"].inputs[0]')
self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node100"].inputs[1]')
self.innerLink('nodes["Node100"].outputs[0]', 'nodes["Node101"].inputs[0]')
self.innerLink('nodes["Node15"].outputs[0]', 'nodes["Node101"].inputs[1]')
self.innerLink('nodes["Node101"].outputs[0]', 'nodes["Node102"].inputs[0]')
self.innerLink('nodes["Node102"].outputs[0]', 'nodes["Node103"].inputs[0]')
self.innerLink('nodes["Node8"].outputs[0]', 'nodes["Node104"].inputs[0]')
self.innerLink('nodes["Node103"].outputs[0]', 'nodes["Node104"].inputs[1]')
self.innerLink('nodes["Node24"].outputs[0]', 'nodes["Node105"].inputs[0]')
self.innerLink('nodes["Node105"].outputs[1]', 'nodes["Node106"].inputs[0]')
self.innerLink('nodes["Node11"].outputs[0]', 'nodes["Node106"].inputs[1]')
self.innerLink('nodes["Node106"].outputs[0]', 'nodes["Node107"].inputs[0]')
self.innerLink('nodes["Node107"].outputs[0]', 'nodes["Node108"].inputs[0]')
self.innerLink('nodes["Node108"].outputs[0]', 'nodes["Node109"].inputs[0]')
self.innerLink('nodes["Node16"].outputs[0]', 'nodes["Node109"].inputs[1]')
self.innerLink('nodes["Node104"].outputs[0]', 'nodes["Node110"].inputs[0]')
self.innerLink('nodes["Node109"].outputs[0]', 'nodes["Node110"].inputs[1]')
self.innerLink('nodes["Node9"].outputs[0]', 'nodes["Node110"].inputs[2]')
self.innerLink('nodes["Node68"].outputs[0]', 'nodes["Node111"].inputs[0]')
self.innerLink('nodes["Node110"].outputs[0]', 'nodes["Node111"].inputs[1]')
self.innerLink('nodes["Node89"].outputs[0]', 'nodes["Node111"].inputs[2]')
self.innerLink('nodes["Node68"].outputs[0]', 'nodes["Node112"].inputs[0]')
self.innerLink('nodes["Node6"].outputs[0]', 'nodes["Node112"].inputs[1]')
self.innerLink('nodes["Node8"].outputs[0]', 'nodes["Node112"].inputs[2]')
self.innerLink('nodes["Node68"].outputs[0]', 'nodes["Node113"].inputs[0]')
self.innerLink('nodes["Node93"].outputs[0]', 'nodes["Node113"].inputs[1]')
self.innerLink('nodes["Node73"].outputs[0]', 'nodes["Node113"].inputs[2]')
self.innerLink('nodes["Node68"].outputs[0]', 'nodes["Node114"].inputs[0]')
self.innerLink('nodes["Node94"].outputs[0]', 'nodes["Node114"].inputs[1]')
self.innerLink('nodes["Node74"].outputs[0]', 'nodes["Node114"].inputs[2]')
self.innerLink('nodes["Node113"].outputs[0]', 'nodes["Node115"].inputs[0]')
self.innerLink('nodes["Node19"].outputs[0]', 'nodes["Node115"].inputs[1]')
self.innerLink('nodes["Node114"].outputs[0]', 'nodes["Node116"].inputs[0]')
self.innerLink('nodes["Node19"].outputs[0]', 'nodes["Node116"].inputs[1]')
self.innerLink('nodes["Node115"].outputs[0]', 'nodes["Node117"].inputs[0]')
self.innerLink('nodes["Node116"].outputs[0]', 'nodes["Node117"].inputs[1]')
self.innerLink('nodes["Node9"].outputs[0]', 'nodes["Node117"].inputs[2]')
self.innerLink('nodes["Node117"].outputs[0]', 'nodes["GroupOutput"].inputs[0]')
self.innerLink('nodes["Node111"].outputs[0]', 'nodes["GroupOutput"].inputs[1]')
self.innerLink('nodes["Node4"].outputs[0]', 'nodes["GroupOutput"].inputs[2]')
self.innerLink('nodes["Node5"].outputs[0]', 'nodes["GroupOutput"].inputs[3]')
self.innerLink('nodes["Node112"].outputs[0]', 'nodes["GroupOutput"].inputs[4]')
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)