ND911 commited on
Commit
4432cc6
·
verified ·
1 Parent(s): 133032c

Upload 3 files

Browse files
Files changed (4) hide show
  1. .gitattributes +1 -0
  2. Model_Blend.json +1830 -0
  3. Model_Blend.png +3 -0
  4. MultiMergeSimple.py +314 -0
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ Model_Blend.png filter=lfs diff=lfs merge=lfs -text
Model_Blend.json ADDED
@@ -0,0 +1,1830 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "c5510409-f624-44db-acaf-460d66822f47",
3
+ "revision": 0,
4
+ "last_node_id": 53,
5
+ "last_link_id": 317,
6
+ "nodes": [
7
+ {
8
+ "id": 37,
9
+ "type": "GetNode",
10
+ "pos": [
11
+ -780.10546875,
12
+ -834.3213500976562
13
+ ],
14
+ "size": [
15
+ 210,
16
+ 58
17
+ ],
18
+ "flags": {
19
+ "collapsed": true
20
+ },
21
+ "order": 0,
22
+ "mode": 0,
23
+ "inputs": [],
24
+ "outputs": [
25
+ {
26
+ "name": "MODEL",
27
+ "type": "MODEL",
28
+ "links": [
29
+ 136
30
+ ]
31
+ }
32
+ ],
33
+ "title": "Get_model:1",
34
+ "properties": {
35
+ "widget_ue_connectable": {}
36
+ },
37
+ "widgets_values": [
38
+ "model:1"
39
+ ],
40
+ "color": "#1f1f48",
41
+ "bgcolor": "rgba(24,24,27,.9)"
42
+ },
43
+ {
44
+ "id": 38,
45
+ "type": "GetNode",
46
+ "pos": [
47
+ -770.1054077148438,
48
+ -794.3211669921875
49
+ ],
50
+ "size": [
51
+ 210,
52
+ 58
53
+ ],
54
+ "flags": {
55
+ "collapsed": true
56
+ },
57
+ "order": 1,
58
+ "mode": 0,
59
+ "inputs": [],
60
+ "outputs": [
61
+ {
62
+ "name": "MODEL",
63
+ "type": "MODEL",
64
+ "links": [
65
+ 137
66
+ ]
67
+ }
68
+ ],
69
+ "title": "Get_model:2",
70
+ "properties": {
71
+ "widget_ue_connectable": {}
72
+ },
73
+ "widgets_values": [
74
+ "model:2"
75
+ ],
76
+ "color": "#1f1f48",
77
+ "bgcolor": "rgba(24,24,27,.9)"
78
+ },
79
+ {
80
+ "id": 39,
81
+ "type": "GetNode",
82
+ "pos": [
83
+ -770.1054077148438,
84
+ -754.3209838867188
85
+ ],
86
+ "size": [
87
+ 210,
88
+ 58
89
+ ],
90
+ "flags": {
91
+ "collapsed": true
92
+ },
93
+ "order": 2,
94
+ "mode": 0,
95
+ "inputs": [],
96
+ "outputs": [
97
+ {
98
+ "name": "MODEL",
99
+ "type": "MODEL",
100
+ "links": [
101
+ 138
102
+ ]
103
+ }
104
+ ],
105
+ "title": "Get_model:3",
106
+ "properties": {
107
+ "widget_ue_connectable": {}
108
+ },
109
+ "widgets_values": [
110
+ "model:3"
111
+ ],
112
+ "color": "#1f1f48",
113
+ "bgcolor": "rgba(24,24,27,.9)"
114
+ },
115
+ {
116
+ "id": 40,
117
+ "type": "GetNode",
118
+ "pos": [
119
+ -770.1054077148438,
120
+ -724.3209228515625
121
+ ],
122
+ "size": [
123
+ 210,
124
+ 58
125
+ ],
126
+ "flags": {
127
+ "collapsed": true
128
+ },
129
+ "order": 3,
130
+ "mode": 0,
131
+ "inputs": [],
132
+ "outputs": [
133
+ {
134
+ "name": "MODEL",
135
+ "type": "MODEL",
136
+ "links": [
137
+ 139
138
+ ]
139
+ }
140
+ ],
141
+ "title": "Get_model:4",
142
+ "properties": {
143
+ "widget_ue_connectable": {}
144
+ },
145
+ "widgets_values": [
146
+ "model:4"
147
+ ],
148
+ "color": "#1f1f48",
149
+ "bgcolor": "rgba(24,24,27,.9)"
150
+ },
151
+ {
152
+ "id": 41,
153
+ "type": "GetNode",
154
+ "pos": [
155
+ -760.10546875,
156
+ -694.3209838867188
157
+ ],
158
+ "size": [
159
+ 210,
160
+ 58
161
+ ],
162
+ "flags": {
163
+ "collapsed": true
164
+ },
165
+ "order": 4,
166
+ "mode": 0,
167
+ "inputs": [],
168
+ "outputs": [
169
+ {
170
+ "name": "MODEL",
171
+ "type": "MODEL",
172
+ "links": [
173
+ 140
174
+ ]
175
+ }
176
+ ],
177
+ "title": "Get_model:5",
178
+ "properties": {
179
+ "widget_ue_connectable": {}
180
+ },
181
+ "widgets_values": [
182
+ "model:5"
183
+ ],
184
+ "color": "#1f1f48",
185
+ "bgcolor": "rgba(24,24,27,.9)"
186
+ },
187
+ {
188
+ "id": 43,
189
+ "type": "SetNode",
190
+ "pos": [
191
+ -790.1055297851562,
192
+ -834.3213500976562
193
+ ],
194
+ "size": [
195
+ 210,
196
+ 60
197
+ ],
198
+ "flags": {
199
+ "collapsed": true
200
+ },
201
+ "order": 28,
202
+ "mode": 0,
203
+ "inputs": [
204
+ {
205
+ "name": "MODEL",
206
+ "type": "MODEL",
207
+ "link": 162
208
+ }
209
+ ],
210
+ "outputs": [
211
+ {
212
+ "name": "*",
213
+ "type": "*",
214
+ "links": null
215
+ }
216
+ ],
217
+ "title": "Set_MMMS:1",
218
+ "properties": {
219
+ "previousName": "MMMS:1",
220
+ "widget_ue_connectable": {}
221
+ },
222
+ "widgets_values": [
223
+ "MMMS:1"
224
+ ],
225
+ "color": "#1f1f48",
226
+ "bgcolor": "rgba(24,24,27,.9)"
227
+ },
228
+ {
229
+ "id": 44,
230
+ "type": "GetNode",
231
+ "pos": [
232
+ -1225.37353515625,
233
+ -1169.299560546875
234
+ ],
235
+ "size": [
236
+ 210,
237
+ 60
238
+ ],
239
+ "flags": {
240
+ "collapsed": true
241
+ },
242
+ "order": 5,
243
+ "mode": 0,
244
+ "inputs": [],
245
+ "outputs": [
246
+ {
247
+ "name": "MODEL",
248
+ "type": "MODEL",
249
+ "links": [
250
+ 170
251
+ ]
252
+ }
253
+ ],
254
+ "title": "Get_MMMS:1",
255
+ "properties": {
256
+ "widget_ue_connectable": {}
257
+ },
258
+ "widgets_values": [
259
+ "MMMS:1"
260
+ ],
261
+ "color": "#1f1f48",
262
+ "bgcolor": "rgba(24,24,27,.9)"
263
+ },
264
+ {
265
+ "id": 22,
266
+ "type": "Anything Everywhere3",
267
+ "pos": [
268
+ -1225.37353515625,
269
+ -1149.2999267578125
270
+ ],
271
+ "size": [
272
+ 140,
273
+ 66
274
+ ],
275
+ "flags": {},
276
+ "order": 23,
277
+ "mode": 0,
278
+ "inputs": [
279
+ {
280
+ "color_on": "#B39DDB",
281
+ "label": "MODEL",
282
+ "name": "anything",
283
+ "shape": 7,
284
+ "type": "*",
285
+ "link": 170
286
+ },
287
+ {
288
+ "color_on": "#FFD500",
289
+ "label": "CLIP",
290
+ "name": "anything2",
291
+ "shape": 7,
292
+ "type": "*",
293
+ "link": 43
294
+ },
295
+ {
296
+ "color_on": "#FF6E6E",
297
+ "label": "VAE",
298
+ "name": "anything3",
299
+ "shape": 7,
300
+ "type": "*",
301
+ "link": 44
302
+ }
303
+ ],
304
+ "outputs": [],
305
+ "title": "EW3",
306
+ "properties": {
307
+ "cnr_id": "cg-use-everywhere",
308
+ "ver": "6.1.0",
309
+ "Node name for S&R": "Anything Everywhere3",
310
+ "group_restricted": 0,
311
+ "color_restricted": 0,
312
+ "widget_ue_connectable": {}
313
+ },
314
+ "widgets_values": []
315
+ },
316
+ {
317
+ "id": 49,
318
+ "type": "CheckpointSave",
319
+ "pos": [
320
+ -870.1192016601562,
321
+ -1183.0963134765625
322
+ ],
323
+ "size": [
324
+ 330.9504089355469,
325
+ 98
326
+ ],
327
+ "flags": {},
328
+ "order": 6,
329
+ "mode": 2,
330
+ "inputs": [
331
+ {
332
+ "name": "model",
333
+ "type": "MODEL",
334
+ "link": null
335
+ },
336
+ {
337
+ "name": "clip",
338
+ "type": "CLIP",
339
+ "link": null
340
+ },
341
+ {
342
+ "name": "vae",
343
+ "type": "VAE",
344
+ "link": null
345
+ }
346
+ ],
347
+ "outputs": [],
348
+ "properties": {
349
+ "cnr_id": "comfy-core",
350
+ "ver": "0.3.35",
351
+ "Node name for S&R": "CheckpointSave",
352
+ "widget_ue_connectable": {}
353
+ },
354
+ "widgets_values": [
355
+ "checkpoints/vpred_multi"
356
+ ]
357
+ },
358
+ {
359
+ "id": 50,
360
+ "type": "Note",
361
+ "pos": [
362
+ -890.0233154296875,
363
+ -1036.739990234375
364
+ ],
365
+ "size": [
366
+ 375.1739501953125,
367
+ 88
368
+ ],
369
+ "flags": {},
370
+ "order": 7,
371
+ "mode": 2,
372
+ "inputs": [],
373
+ "outputs": [],
374
+ "properties": {
375
+ "widget_ue_connectable": {}
376
+ },
377
+ "widgets_values": [
378
+ "unmute when ready to create new model"
379
+ ],
380
+ "color": "#c09430",
381
+ "bgcolor": "rgba(24,24,27,.9)"
382
+ },
383
+ {
384
+ "id": 51,
385
+ "type": "Fast Groups Muter (rgthree)",
386
+ "pos": [
387
+ -1539.1322021484375,
388
+ -1227.145263671875
389
+ ],
390
+ "size": [
391
+ 272.026611328125,
392
+ 106
393
+ ],
394
+ "flags": {},
395
+ "order": 8,
396
+ "mode": 0,
397
+ "inputs": [],
398
+ "outputs": [
399
+ {
400
+ "name": "OPT_CONNECTION",
401
+ "type": "*",
402
+ "links": null
403
+ }
404
+ ],
405
+ "properties": {
406
+ "matchColors": "",
407
+ "matchTitle": "",
408
+ "showNav": true,
409
+ "sort": "position",
410
+ "customSortAlphabet": "",
411
+ "toggleRestriction": "default",
412
+ "widget_ue_connectable": {}
413
+ }
414
+ },
415
+ {
416
+ "id": 6,
417
+ "type": "EmptyLatentImage",
418
+ "pos": [
419
+ -490,
420
+ -890
421
+ ],
422
+ "size": [
423
+ 315,
424
+ 106
425
+ ],
426
+ "flags": {},
427
+ "order": 9,
428
+ "mode": 0,
429
+ "inputs": [],
430
+ "outputs": [
431
+ {
432
+ "name": "LATENT",
433
+ "type": "LATENT",
434
+ "links": [
435
+ 7
436
+ ]
437
+ }
438
+ ],
439
+ "properties": {
440
+ "cnr_id": "comfy-core",
441
+ "ver": "0.3.27",
442
+ "Node name for S&R": "EmptyLatentImage",
443
+ "widget_ue_connectable": {}
444
+ },
445
+ "widgets_values": [
446
+ 896,
447
+ 1152,
448
+ 1
449
+ ]
450
+ },
451
+ {
452
+ "id": 10,
453
+ "type": "UpscaleModelLoader",
454
+ "pos": [
455
+ -490,
456
+ -740
457
+ ],
458
+ "size": [
459
+ 315,
460
+ 58
461
+ ],
462
+ "flags": {},
463
+ "order": 10,
464
+ "mode": 0,
465
+ "inputs": [],
466
+ "outputs": [
467
+ {
468
+ "name": "UPSCALE_MODEL",
469
+ "type": "UPSCALE_MODEL",
470
+ "links": [
471
+ 14
472
+ ]
473
+ }
474
+ ],
475
+ "properties": {
476
+ "cnr_id": "comfy-core",
477
+ "ver": "0.3.27",
478
+ "Node name for S&R": "UpscaleModelLoader",
479
+ "widget_ue_connectable": {}
480
+ },
481
+ "widgets_values": [
482
+ "4x-AnimeSharp.pth"
483
+ ]
484
+ },
485
+ {
486
+ "id": 4,
487
+ "type": "CLIPTextEncode",
488
+ "pos": [
489
+ -170,
490
+ -740
491
+ ],
492
+ "size": [
493
+ 362.43426513671875,
494
+ 101.38993072509766
495
+ ],
496
+ "flags": {},
497
+ "order": 11,
498
+ "mode": 0,
499
+ "inputs": [
500
+ {
501
+ "name": "clip",
502
+ "type": "CLIP",
503
+ "link": null
504
+ }
505
+ ],
506
+ "outputs": [
507
+ {
508
+ "name": "CONDITIONING",
509
+ "type": "CONDITIONING",
510
+ "links": [
511
+ 6,
512
+ 20
513
+ ]
514
+ }
515
+ ],
516
+ "properties": {
517
+ "cnr_id": "comfy-core",
518
+ "ver": "0.3.27",
519
+ "Node name for S&R": "CLIPTextEncode",
520
+ "widget_ue_connectable": {}
521
+ },
522
+ "widgets_values": [
523
+ "lowres, (bad), bad anatomy, bad hands, extra digits, multiple views,fewer, extra, missing, text, error, worst quality, jpeg artifacts, low quality, watermark, unfinished, displeasing, oldest, early,chromatic aberration, signature,artistic error, username, scan, anime, cartoon, drawing, painting, exposed breasts, nipples"
524
+ ]
525
+ },
526
+ {
527
+ "id": 11,
528
+ "type": "ImageUpscaleWithModel",
529
+ "pos": [
530
+ -193.22293090820312,
531
+ -1198.5950927734375
532
+ ],
533
+ "size": [
534
+ 221.98202514648438,
535
+ 53.23140335083008
536
+ ],
537
+ "flags": {},
538
+ "order": 30,
539
+ "mode": 0,
540
+ "inputs": [
541
+ {
542
+ "name": "upscale_model",
543
+ "type": "UPSCALE_MODEL",
544
+ "link": 14
545
+ },
546
+ {
547
+ "name": "image",
548
+ "type": "IMAGE",
549
+ "link": 13
550
+ }
551
+ ],
552
+ "outputs": [
553
+ {
554
+ "name": "IMAGE",
555
+ "type": "IMAGE",
556
+ "links": [
557
+ 15
558
+ ]
559
+ }
560
+ ],
561
+ "properties": {
562
+ "cnr_id": "comfy-core",
563
+ "ver": "0.3.27",
564
+ "Node name for S&R": "ImageUpscaleWithModel",
565
+ "widget_ue_connectable": {}
566
+ },
567
+ "widgets_values": []
568
+ },
569
+ {
570
+ "id": 12,
571
+ "type": "ImageScale",
572
+ "pos": [
573
+ -193.1076202392578,
574
+ -1113.1744384765625
575
+ ],
576
+ "size": [
577
+ 225.35447692871094,
578
+ 130
579
+ ],
580
+ "flags": {},
581
+ "order": 31,
582
+ "mode": 0,
583
+ "inputs": [
584
+ {
585
+ "name": "image",
586
+ "type": "IMAGE",
587
+ "link": 15
588
+ }
589
+ ],
590
+ "outputs": [
591
+ {
592
+ "name": "IMAGE",
593
+ "type": "IMAGE",
594
+ "links": [
595
+ 16
596
+ ]
597
+ }
598
+ ],
599
+ "properties": {
600
+ "cnr_id": "comfy-core",
601
+ "ver": "0.3.27",
602
+ "Node name for S&R": "ImageScale",
603
+ "widget_ue_connectable": {}
604
+ },
605
+ "widgets_values": [
606
+ "nearest-exact",
607
+ 1344,
608
+ 1728,
609
+ "disabled"
610
+ ]
611
+ },
612
+ {
613
+ "id": 13,
614
+ "type": "VAEEncodeTiled",
615
+ "pos": [
616
+ -132.2725830078125,
617
+ -944.772705078125
618
+ ],
619
+ "size": [
620
+ 315,
621
+ 150
622
+ ],
623
+ "flags": {
624
+ "collapsed": true
625
+ },
626
+ "order": 32,
627
+ "mode": 0,
628
+ "inputs": [
629
+ {
630
+ "name": "pixels",
631
+ "type": "IMAGE",
632
+ "link": 16
633
+ },
634
+ {
635
+ "name": "vae",
636
+ "type": "VAE",
637
+ "link": null
638
+ }
639
+ ],
640
+ "outputs": [
641
+ {
642
+ "name": "LATENT",
643
+ "type": "LATENT",
644
+ "links": [
645
+ 21
646
+ ]
647
+ }
648
+ ],
649
+ "properties": {
650
+ "cnr_id": "comfy-core",
651
+ "ver": "0.3.27",
652
+ "Node name for S&R": "VAEEncodeTiled",
653
+ "widget_ue_connectable": {}
654
+ },
655
+ "widgets_values": [
656
+ 512,
657
+ 64,
658
+ 64,
659
+ 8
660
+ ]
661
+ },
662
+ {
663
+ "id": 5,
664
+ "type": "KSampler",
665
+ "pos": [
666
+ -495,
667
+ -1197.5
668
+ ],
669
+ "size": [
670
+ 290.30426025390625,
671
+ 262
672
+ ],
673
+ "flags": {},
674
+ "order": 21,
675
+ "mode": 0,
676
+ "inputs": [
677
+ {
678
+ "name": "model",
679
+ "type": "MODEL",
680
+ "link": null
681
+ },
682
+ {
683
+ "name": "positive",
684
+ "type": "CONDITIONING",
685
+ "link": 5
686
+ },
687
+ {
688
+ "name": "negative",
689
+ "type": "CONDITIONING",
690
+ "link": 6
691
+ },
692
+ {
693
+ "name": "latent_image",
694
+ "type": "LATENT",
695
+ "link": 7
696
+ }
697
+ ],
698
+ "outputs": [
699
+ {
700
+ "name": "LATENT",
701
+ "type": "LATENT",
702
+ "links": [
703
+ 11
704
+ ]
705
+ }
706
+ ],
707
+ "title": "1st Pass KSampler",
708
+ "properties": {
709
+ "cnr_id": "comfy-core",
710
+ "ver": "0.3.27",
711
+ "Node name for S&R": "KSampler",
712
+ "widget_ue_connectable": {}
713
+ },
714
+ "widgets_values": [
715
+ 0,
716
+ "randomize",
717
+ 32,
718
+ 2.7600000000000002,
719
+ "ddpm",
720
+ "normal",
721
+ 1
722
+ ]
723
+ },
724
+ {
725
+ "id": 14,
726
+ "type": "KSampler",
727
+ "pos": [
728
+ 36.85009765625,
729
+ -1202.3377685546875
730
+ ],
731
+ "size": [
732
+ 315,
733
+ 262
734
+ ],
735
+ "flags": {},
736
+ "order": 33,
737
+ "mode": 0,
738
+ "inputs": [
739
+ {
740
+ "name": "model",
741
+ "type": "MODEL",
742
+ "link": null
743
+ },
744
+ {
745
+ "name": "positive",
746
+ "type": "CONDITIONING",
747
+ "link": 19
748
+ },
749
+ {
750
+ "name": "negative",
751
+ "type": "CONDITIONING",
752
+ "link": 20
753
+ },
754
+ {
755
+ "name": "latent_image",
756
+ "type": "LATENT",
757
+ "link": 21
758
+ }
759
+ ],
760
+ "outputs": [
761
+ {
762
+ "name": "LATENT",
763
+ "type": "LATENT",
764
+ "links": [
765
+ 22
766
+ ]
767
+ }
768
+ ],
769
+ "title": "2nd Pass KSampler",
770
+ "properties": {
771
+ "cnr_id": "comfy-core",
772
+ "ver": "0.3.27",
773
+ "Node name for S&R": "KSampler",
774
+ "widget_ue_connectable": {}
775
+ },
776
+ "widgets_values": [
777
+ 0,
778
+ "randomize",
779
+ 12,
780
+ 2.7800000000000002,
781
+ "gradient_estimation",
782
+ "normal",
783
+ 0.3
784
+ ]
785
+ },
786
+ {
787
+ "id": 9,
788
+ "type": "VAEDecodeTiled",
789
+ "pos": [
790
+ -368.4340515136719,
791
+ -1228.5947265625
792
+ ],
793
+ "size": [
794
+ 315,
795
+ 150
796
+ ],
797
+ "flags": {
798
+ "collapsed": true
799
+ },
800
+ "order": 29,
801
+ "mode": 0,
802
+ "inputs": [
803
+ {
804
+ "name": "samples",
805
+ "type": "LATENT",
806
+ "link": 11
807
+ },
808
+ {
809
+ "name": "vae",
810
+ "type": "VAE",
811
+ "link": null
812
+ }
813
+ ],
814
+ "outputs": [
815
+ {
816
+ "name": "IMAGE",
817
+ "type": "IMAGE",
818
+ "links": [
819
+ 13
820
+ ]
821
+ }
822
+ ],
823
+ "properties": {
824
+ "cnr_id": "comfy-core",
825
+ "ver": "0.3.27",
826
+ "Node name for S&R": "VAEDecodeTiled",
827
+ "widget_ue_connectable": {}
828
+ },
829
+ "widgets_values": [
830
+ 512,
831
+ 64,
832
+ 64,
833
+ 8
834
+ ]
835
+ },
836
+ {
837
+ "id": 7,
838
+ "type": "VAEDecode",
839
+ "pos": [
840
+ 225.287109375,
841
+ -1233.0230712890625
842
+ ],
843
+ "size": [
844
+ 210,
845
+ 46
846
+ ],
847
+ "flags": {
848
+ "collapsed": true
849
+ },
850
+ "order": 34,
851
+ "mode": 0,
852
+ "inputs": [
853
+ {
854
+ "name": "samples",
855
+ "type": "LATENT",
856
+ "link": 22
857
+ },
858
+ {
859
+ "name": "vae",
860
+ "type": "VAE",
861
+ "link": null
862
+ }
863
+ ],
864
+ "outputs": [
865
+ {
866
+ "name": "IMAGE",
867
+ "type": "IMAGE",
868
+ "links": [
869
+ 254
870
+ ]
871
+ }
872
+ ],
873
+ "properties": {
874
+ "cnr_id": "comfy-core",
875
+ "ver": "0.3.27",
876
+ "Node name for S&R": "VAEDecode",
877
+ "widget_ue_connectable": {}
878
+ },
879
+ "widgets_values": []
880
+ },
881
+ {
882
+ "id": 48,
883
+ "type": "PreviewImage",
884
+ "pos": [
885
+ 355.3905944824219,
886
+ -1236.421142578125
887
+ ],
888
+ "size": [
889
+ 532.8709716796875,
890
+ 638.2962646484375
891
+ ],
892
+ "flags": {},
893
+ "order": 35,
894
+ "mode": 0,
895
+ "inputs": [
896
+ {
897
+ "name": "images",
898
+ "type": "IMAGE",
899
+ "link": 254
900
+ }
901
+ ],
902
+ "outputs": [],
903
+ "properties": {
904
+ "cnr_id": "comfy-core",
905
+ "ver": "0.3.35",
906
+ "Node name for S&R": "PreviewImage",
907
+ "widget_ue_connectable": {}
908
+ },
909
+ "widgets_values": []
910
+ },
911
+ {
912
+ "id": 3,
913
+ "type": "CLIPTextEncode",
914
+ "pos": [
915
+ -170,
916
+ -890
917
+ ],
918
+ "size": [
919
+ 360.55596923828125,
920
+ 108.90308380126953
921
+ ],
922
+ "flags": {},
923
+ "order": 12,
924
+ "mode": 0,
925
+ "inputs": [
926
+ {
927
+ "name": "clip",
928
+ "type": "CLIP",
929
+ "link": null
930
+ }
931
+ ],
932
+ "outputs": [
933
+ {
934
+ "name": "CONDITIONING",
935
+ "type": "CONDITIONING",
936
+ "links": [
937
+ 5,
938
+ 19
939
+ ]
940
+ }
941
+ ],
942
+ "properties": {
943
+ "cnr_id": "comfy-core",
944
+ "ver": "0.3.27",
945
+ "Node name for S&R": "CLIPTextEncode",
946
+ "widget_ue_connectable": {}
947
+ },
948
+ "widgets_values": [
949
+ "1girl, amber eyes, pink hair, french braid, long hair, black gown, medium breasts, lake, night, masterpiece, best quality"
950
+ ]
951
+ },
952
+ {
953
+ "id": 30,
954
+ "type": "ModelMergeMultiSimple",
955
+ "pos": [
956
+ -870.1055297851562,
957
+ -834.3213500976562
958
+ ],
959
+ "size": [
960
+ 331.7544860839844,
961
+ 234
962
+ ],
963
+ "flags": {},
964
+ "order": 20,
965
+ "mode": 0,
966
+ "inputs": [
967
+ {
968
+ "name": "model1",
969
+ "type": "MODEL",
970
+ "link": 136
971
+ },
972
+ {
973
+ "name": "model2",
974
+ "type": "MODEL",
975
+ "link": 137
976
+ },
977
+ {
978
+ "name": "model3",
979
+ "type": "MODEL",
980
+ "link": 138
981
+ },
982
+ {
983
+ "name": "model4",
984
+ "type": "MODEL",
985
+ "link": 139
986
+ },
987
+ {
988
+ "name": "model5",
989
+ "type": "MODEL",
990
+ "link": 140
991
+ }
992
+ ],
993
+ "outputs": [
994
+ {
995
+ "name": "MODEL",
996
+ "type": "MODEL",
997
+ "links": [
998
+ 162
999
+ ]
1000
+ }
1001
+ ],
1002
+ "properties": {
1003
+ "Node name for S&R": "ModelMergeMultiSimple",
1004
+ "widget_ue_connectable": {}
1005
+ },
1006
+ "widgets_values": [
1007
+ 0.7300000000000001,
1008
+ 0.6400000000000001,
1009
+ 0.5000000000000001,
1010
+ 0.32000000000000006,
1011
+ 0.3600000000000001
1012
+ ]
1013
+ },
1014
+ {
1015
+ "id": 47,
1016
+ "type": "GlobalSeed //Inspire",
1017
+ "pos": [
1018
+ -1539.3685302734375,
1019
+ -1061.32177734375
1020
+ ],
1021
+ "size": [
1022
+ 270,
1023
+ 130
1024
+ ],
1025
+ "flags": {},
1026
+ "order": 13,
1027
+ "mode": 0,
1028
+ "inputs": [],
1029
+ "outputs": [],
1030
+ "properties": {
1031
+ "cnr_id": "comfyui-inspire-pack",
1032
+ "ver": "1.18.0",
1033
+ "Node name for S&R": "GlobalSeed //Inspire",
1034
+ "widget_ue_connectable": {}
1035
+ },
1036
+ "widgets_values": [
1037
+ 0,
1038
+ true,
1039
+ "fixed",
1040
+ 0
1041
+ ]
1042
+ },
1043
+ {
1044
+ "id": 1,
1045
+ "type": "CheckpointLoaderSimple",
1046
+ "pos": [
1047
+ -1235.37353515625,
1048
+ -1169.299560546875
1049
+ ],
1050
+ "size": [
1051
+ 210,
1052
+ 98
1053
+ ],
1054
+ "flags": {},
1055
+ "order": 14,
1056
+ "mode": 0,
1057
+ "inputs": [],
1058
+ "outputs": [
1059
+ {
1060
+ "name": "MODEL",
1061
+ "type": "MODEL",
1062
+ "links": [
1063
+ 122
1064
+ ]
1065
+ },
1066
+ {
1067
+ "name": "CLIP",
1068
+ "type": "CLIP",
1069
+ "links": [
1070
+ 1,
1071
+ 43
1072
+ ]
1073
+ },
1074
+ {
1075
+ "name": "VAE",
1076
+ "type": "VAE",
1077
+ "links": [
1078
+ 44
1079
+ ]
1080
+ }
1081
+ ],
1082
+ "properties": {
1083
+ "cnr_id": "comfy-core",
1084
+ "ver": "0.3.27",
1085
+ "Node name for S&R": "CheckpointLoaderSimple",
1086
+ "widget_ue_connectable": {}
1087
+ },
1088
+ "widgets_values": [
1089
+ "vpred\\EclecticEuphoria_Noobai_vpred_C.safetensors"
1090
+ ]
1091
+ },
1092
+ {
1093
+ "id": 16,
1094
+ "type": "CheckpointLoaderSimple",
1095
+ "pos": [
1096
+ -1235.509765625,
1097
+ -1037.367919921875
1098
+ ],
1099
+ "size": [
1100
+ 210,
1101
+ 98
1102
+ ],
1103
+ "flags": {},
1104
+ "order": 15,
1105
+ "mode": 0,
1106
+ "inputs": [],
1107
+ "outputs": [
1108
+ {
1109
+ "name": "MODEL",
1110
+ "type": "MODEL",
1111
+ "links": [
1112
+ 193
1113
+ ]
1114
+ },
1115
+ {
1116
+ "name": "CLIP",
1117
+ "type": "CLIP",
1118
+ "links": []
1119
+ },
1120
+ {
1121
+ "name": "VAE",
1122
+ "type": "VAE",
1123
+ "links": []
1124
+ }
1125
+ ],
1126
+ "properties": {
1127
+ "cnr_id": "comfy-core",
1128
+ "ver": "0.3.35",
1129
+ "Node name for S&R": "CheckpointLoaderSimple",
1130
+ "widget_ue_connectable": {}
1131
+ },
1132
+ "widgets_values": [
1133
+ "vpred\\noobaiXLNAIXL_vPred10Version.safetensors"
1134
+ ]
1135
+ },
1136
+ {
1137
+ "id": 33,
1138
+ "type": "SetNode",
1139
+ "pos": [
1140
+ -1151.2763671875,
1141
+ -1006.6625366210938
1142
+ ],
1143
+ "size": [
1144
+ 210,
1145
+ 58
1146
+ ],
1147
+ "flags": {},
1148
+ "order": 24,
1149
+ "mode": 0,
1150
+ "inputs": [
1151
+ {
1152
+ "name": "MODEL",
1153
+ "type": "MODEL",
1154
+ "link": 193
1155
+ }
1156
+ ],
1157
+ "outputs": [
1158
+ {
1159
+ "name": "*",
1160
+ "type": "*",
1161
+ "links": null
1162
+ }
1163
+ ],
1164
+ "title": "Set_model:2",
1165
+ "properties": {
1166
+ "previousName": "model:2",
1167
+ "widget_ue_connectable": {}
1168
+ },
1169
+ "widgets_values": [
1170
+ "model:2"
1171
+ ],
1172
+ "color": "#1f1f48",
1173
+ "bgcolor": "rgba(24,24,27,.9)"
1174
+ },
1175
+ {
1176
+ "id": 25,
1177
+ "type": "CheckpointLoaderSimple",
1178
+ "pos": [
1179
+ -1235.703125,
1180
+ -901.5089111328125
1181
+ ],
1182
+ "size": [
1183
+ 210,
1184
+ 98
1185
+ ],
1186
+ "flags": {},
1187
+ "order": 16,
1188
+ "mode": 0,
1189
+ "inputs": [],
1190
+ "outputs": [
1191
+ {
1192
+ "name": "MODEL",
1193
+ "type": "MODEL",
1194
+ "links": [
1195
+ 124
1196
+ ]
1197
+ },
1198
+ {
1199
+ "name": "CLIP",
1200
+ "type": "CLIP",
1201
+ "links": []
1202
+ },
1203
+ {
1204
+ "name": "VAE",
1205
+ "type": "VAE",
1206
+ "links": []
1207
+ }
1208
+ ],
1209
+ "properties": {
1210
+ "cnr_id": "comfy-core",
1211
+ "ver": "0.3.35",
1212
+ "Node name for S&R": "CheckpointLoaderSimple",
1213
+ "widget_ue_connectable": {}
1214
+ },
1215
+ "widgets_values": [
1216
+ "vpred\\EclecticEuphoria_NoobIll_vpred_v3.safetensors"
1217
+ ]
1218
+ },
1219
+ {
1220
+ "id": 34,
1221
+ "type": "SetNode",
1222
+ "pos": [
1223
+ -1145.703125,
1224
+ -871.5088500976562
1225
+ ],
1226
+ "size": [
1227
+ 210,
1228
+ 58
1229
+ ],
1230
+ "flags": {},
1231
+ "order": 25,
1232
+ "mode": 0,
1233
+ "inputs": [
1234
+ {
1235
+ "name": "MODEL",
1236
+ "type": "MODEL",
1237
+ "link": 124
1238
+ }
1239
+ ],
1240
+ "outputs": [
1241
+ {
1242
+ "name": "*",
1243
+ "type": "*",
1244
+ "links": null
1245
+ }
1246
+ ],
1247
+ "title": "Set_model:3",
1248
+ "properties": {
1249
+ "previousName": "model:3",
1250
+ "widget_ue_connectable": {}
1251
+ },
1252
+ "widgets_values": [
1253
+ "model:3"
1254
+ ],
1255
+ "color": "#1f1f48",
1256
+ "bgcolor": "rgba(24,24,27,.9)"
1257
+ },
1258
+ {
1259
+ "id": 24,
1260
+ "type": "CheckpointLoaderSimple",
1261
+ "pos": [
1262
+ -1236.033935546875,
1263
+ -763.0565185546875
1264
+ ],
1265
+ "size": [
1266
+ 210,
1267
+ 98
1268
+ ],
1269
+ "flags": {},
1270
+ "order": 17,
1271
+ "mode": 0,
1272
+ "inputs": [],
1273
+ "outputs": [
1274
+ {
1275
+ "name": "MODEL",
1276
+ "type": "MODEL",
1277
+ "links": [
1278
+ 125
1279
+ ]
1280
+ },
1281
+ {
1282
+ "name": "CLIP",
1283
+ "type": "CLIP",
1284
+ "links": []
1285
+ },
1286
+ {
1287
+ "name": "VAE",
1288
+ "type": "VAE",
1289
+ "links": []
1290
+ }
1291
+ ],
1292
+ "properties": {
1293
+ "cnr_id": "comfy-core",
1294
+ "ver": "0.3.35",
1295
+ "Node name for S&R": "CheckpointLoaderSimple",
1296
+ "widget_ue_connectable": {}
1297
+ },
1298
+ "widgets_values": [
1299
+ "EclecticEuphoria_NoobIll_vpred_v2.safetensors"
1300
+ ]
1301
+ },
1302
+ {
1303
+ "id": 18,
1304
+ "type": "CheckpointLoaderSimple",
1305
+ "pos": [
1306
+ -1232.4757080078125,
1307
+ -621.977294921875
1308
+ ],
1309
+ "size": [
1310
+ 210,
1311
+ 98
1312
+ ],
1313
+ "flags": {},
1314
+ "order": 18,
1315
+ "mode": 0,
1316
+ "inputs": [],
1317
+ "outputs": [
1318
+ {
1319
+ "name": "MODEL",
1320
+ "type": "MODEL",
1321
+ "links": [
1322
+ 126
1323
+ ]
1324
+ },
1325
+ {
1326
+ "name": "CLIP",
1327
+ "type": "CLIP",
1328
+ "links": []
1329
+ },
1330
+ {
1331
+ "name": "VAE",
1332
+ "type": "VAE",
1333
+ "links": []
1334
+ }
1335
+ ],
1336
+ "properties": {
1337
+ "cnr_id": "comfy-core",
1338
+ "ver": "0.3.35",
1339
+ "Node name for S&R": "CheckpointLoaderSimple",
1340
+ "widget_ue_connectable": {}
1341
+ },
1342
+ "widgets_values": [
1343
+ "vpred\\EclecticEuphoria_Noob_vpred_SE.safetensors"
1344
+ ]
1345
+ },
1346
+ {
1347
+ "id": 36,
1348
+ "type": "SetNode",
1349
+ "pos": [
1350
+ -1152.4757080078125,
1351
+ -591.9771728515625
1352
+ ],
1353
+ "size": [
1354
+ 210,
1355
+ 58
1356
+ ],
1357
+ "flags": {},
1358
+ "order": 27,
1359
+ "mode": 0,
1360
+ "inputs": [
1361
+ {
1362
+ "name": "MODEL",
1363
+ "type": "MODEL",
1364
+ "link": 126
1365
+ }
1366
+ ],
1367
+ "outputs": [
1368
+ {
1369
+ "name": "*",
1370
+ "type": "*",
1371
+ "links": null
1372
+ }
1373
+ ],
1374
+ "title": "Set_model:5",
1375
+ "properties": {
1376
+ "previousName": "model:5",
1377
+ "widget_ue_connectable": {}
1378
+ },
1379
+ "widgets_values": [
1380
+ "model:5"
1381
+ ],
1382
+ "color": "#1f1f48",
1383
+ "bgcolor": "rgba(24,24,27,.9)"
1384
+ },
1385
+ {
1386
+ "id": 35,
1387
+ "type": "SetNode",
1388
+ "pos": [
1389
+ -1156.033935546875,
1390
+ -733.0565185546875
1391
+ ],
1392
+ "size": [
1393
+ 210,
1394
+ 58
1395
+ ],
1396
+ "flags": {},
1397
+ "order": 26,
1398
+ "mode": 0,
1399
+ "inputs": [
1400
+ {
1401
+ "name": "MODEL",
1402
+ "type": "MODEL",
1403
+ "link": 125
1404
+ }
1405
+ ],
1406
+ "outputs": [
1407
+ {
1408
+ "name": "*",
1409
+ "type": "*",
1410
+ "links": null
1411
+ }
1412
+ ],
1413
+ "title": "Set_model:4",
1414
+ "properties": {
1415
+ "previousName": "model:4",
1416
+ "widget_ue_connectable": {}
1417
+ },
1418
+ "widgets_values": [
1419
+ "model:4"
1420
+ ],
1421
+ "color": "#1f1f48",
1422
+ "bgcolor": "rgba(24,24,27,.9)"
1423
+ },
1424
+ {
1425
+ "id": 31,
1426
+ "type": "SetNode",
1427
+ "pos": [
1428
+ -1151.01806640625,
1429
+ -1140.005615234375
1430
+ ],
1431
+ "size": [
1432
+ 210,
1433
+ 60
1434
+ ],
1435
+ "flags": {},
1436
+ "order": 22,
1437
+ "mode": 0,
1438
+ "inputs": [
1439
+ {
1440
+ "name": "MODEL",
1441
+ "type": "MODEL",
1442
+ "link": 122
1443
+ }
1444
+ ],
1445
+ "outputs": [
1446
+ {
1447
+ "name": "*",
1448
+ "type": "*",
1449
+ "links": null
1450
+ }
1451
+ ],
1452
+ "title": "Set_model:1",
1453
+ "properties": {
1454
+ "previousName": "model:1",
1455
+ "widget_ue_connectable": {}
1456
+ },
1457
+ "widgets_values": [
1458
+ "model:1"
1459
+ ],
1460
+ "color": "#1f1f48",
1461
+ "bgcolor": "rgba(24,24,27,.9)"
1462
+ },
1463
+ {
1464
+ "id": 52,
1465
+ "type": "Note",
1466
+ "pos": [
1467
+ -890.5308227539062,
1468
+ -549.3394165039062
1469
+ ],
1470
+ "size": [
1471
+ 384.1349792480469,
1472
+ 88
1473
+ ],
1474
+ "flags": {},
1475
+ "order": 19,
1476
+ "mode": 0,
1477
+ "inputs": [],
1478
+ "outputs": [],
1479
+ "properties": {},
1480
+ "widgets_values": [
1481
+ "Blend from 0 to 1 - the closer to 1 the stronger the blend - if blend less then 5 set ones not used to 0"
1482
+ ],
1483
+ "color": "#c09430",
1484
+ "bgcolor": "rgba(24,24,27,.9)"
1485
+ }
1486
+ ],
1487
+ "links": [
1488
+ [
1489
+ 5,
1490
+ 3,
1491
+ 0,
1492
+ 5,
1493
+ 1,
1494
+ "CONDITIONING"
1495
+ ],
1496
+ [
1497
+ 6,
1498
+ 4,
1499
+ 0,
1500
+ 5,
1501
+ 2,
1502
+ "CONDITIONING"
1503
+ ],
1504
+ [
1505
+ 7,
1506
+ 6,
1507
+ 0,
1508
+ 5,
1509
+ 3,
1510
+ "LATENT"
1511
+ ],
1512
+ [
1513
+ 11,
1514
+ 5,
1515
+ 0,
1516
+ 9,
1517
+ 0,
1518
+ "LATENT"
1519
+ ],
1520
+ [
1521
+ 13,
1522
+ 9,
1523
+ 0,
1524
+ 11,
1525
+ 1,
1526
+ "IMAGE"
1527
+ ],
1528
+ [
1529
+ 14,
1530
+ 10,
1531
+ 0,
1532
+ 11,
1533
+ 0,
1534
+ "UPSCALE_MODEL"
1535
+ ],
1536
+ [
1537
+ 15,
1538
+ 11,
1539
+ 0,
1540
+ 12,
1541
+ 0,
1542
+ "IMAGE"
1543
+ ],
1544
+ [
1545
+ 16,
1546
+ 12,
1547
+ 0,
1548
+ 13,
1549
+ 0,
1550
+ "IMAGE"
1551
+ ],
1552
+ [
1553
+ 19,
1554
+ 3,
1555
+ 0,
1556
+ 14,
1557
+ 1,
1558
+ "CONDITIONING"
1559
+ ],
1560
+ [
1561
+ 20,
1562
+ 4,
1563
+ 0,
1564
+ 14,
1565
+ 2,
1566
+ "CONDITIONING"
1567
+ ],
1568
+ [
1569
+ 21,
1570
+ 13,
1571
+ 0,
1572
+ 14,
1573
+ 3,
1574
+ "LATENT"
1575
+ ],
1576
+ [
1577
+ 22,
1578
+ 14,
1579
+ 0,
1580
+ 7,
1581
+ 0,
1582
+ "LATENT"
1583
+ ],
1584
+ [
1585
+ 43,
1586
+ 1,
1587
+ 1,
1588
+ 22,
1589
+ 1,
1590
+ "CLIP"
1591
+ ],
1592
+ [
1593
+ 44,
1594
+ 1,
1595
+ 2,
1596
+ 22,
1597
+ 2,
1598
+ "VAE"
1599
+ ],
1600
+ [
1601
+ 122,
1602
+ 1,
1603
+ 0,
1604
+ 31,
1605
+ 0,
1606
+ "*"
1607
+ ],
1608
+ [
1609
+ 124,
1610
+ 25,
1611
+ 0,
1612
+ 34,
1613
+ 0,
1614
+ "*"
1615
+ ],
1616
+ [
1617
+ 125,
1618
+ 24,
1619
+ 0,
1620
+ 35,
1621
+ 0,
1622
+ "*"
1623
+ ],
1624
+ [
1625
+ 126,
1626
+ 18,
1627
+ 0,
1628
+ 36,
1629
+ 0,
1630
+ "*"
1631
+ ],
1632
+ [
1633
+ 136,
1634
+ 37,
1635
+ 0,
1636
+ 30,
1637
+ 0,
1638
+ "MODEL"
1639
+ ],
1640
+ [
1641
+ 137,
1642
+ 38,
1643
+ 0,
1644
+ 30,
1645
+ 1,
1646
+ "MODEL"
1647
+ ],
1648
+ [
1649
+ 138,
1650
+ 39,
1651
+ 0,
1652
+ 30,
1653
+ 2,
1654
+ "MODEL"
1655
+ ],
1656
+ [
1657
+ 139,
1658
+ 40,
1659
+ 0,
1660
+ 30,
1661
+ 3,
1662
+ "MODEL"
1663
+ ],
1664
+ [
1665
+ 140,
1666
+ 41,
1667
+ 0,
1668
+ 30,
1669
+ 4,
1670
+ "MODEL"
1671
+ ],
1672
+ [
1673
+ 162,
1674
+ 30,
1675
+ 0,
1676
+ 43,
1677
+ 0,
1678
+ "*"
1679
+ ],
1680
+ [
1681
+ 170,
1682
+ 44,
1683
+ 0,
1684
+ 22,
1685
+ 0,
1686
+ "MODEL"
1687
+ ],
1688
+ [
1689
+ 193,
1690
+ 16,
1691
+ 0,
1692
+ 33,
1693
+ 0,
1694
+ "MODEL"
1695
+ ],
1696
+ [
1697
+ 254,
1698
+ 7,
1699
+ 0,
1700
+ 48,
1701
+ 0,
1702
+ "IMAGE"
1703
+ ]
1704
+ ],
1705
+ "groups": [
1706
+ {
1707
+ "id": 1,
1708
+ "title": "Model Blend",
1709
+ "bounding": [
1710
+ -892.2657470703125,
1711
+ -925.3898315429688,
1712
+ 383.90399169921875,
1713
+ 341.2010192871094
1714
+ ],
1715
+ "color": "#3f789e",
1716
+ "font_size": 24,
1717
+ "flags": {}
1718
+ },
1719
+ {
1720
+ "id": 2,
1721
+ "title": "Models to Blend",
1722
+ "bounding": [
1723
+ -1254.7596435546875,
1724
+ -1259.5882568359375,
1725
+ 356.4194641113281,
1726
+ 740.5596313476562
1727
+ ],
1728
+ "color": "#3f789e",
1729
+ "font_size": 24,
1730
+ "flags": {}
1731
+ },
1732
+ {
1733
+ "id": 3,
1734
+ "title": "Save New Model",
1735
+ "bounding": [
1736
+ -892.378662109375,
1737
+ -1259.44287109375,
1738
+ 383.56982421875,
1739
+ 326.8511962890625
1740
+ ],
1741
+ "color": "#3f789e",
1742
+ "font_size": 24,
1743
+ "flags": {}
1744
+ }
1745
+ ],
1746
+ "config": {},
1747
+ "extra": {
1748
+ "ds": {
1749
+ "scale": 0.9090909090909091,
1750
+ "offset": [
1751
+ 1592.1625850713845,
1752
+ 1543.241198470832
1753
+ ]
1754
+ },
1755
+ "ue_links": [
1756
+ {
1757
+ "downstream": 4,
1758
+ "downstream_slot": 0,
1759
+ "upstream": "1",
1760
+ "upstream_slot": 1,
1761
+ "controller": 22,
1762
+ "type": "CLIP"
1763
+ },
1764
+ {
1765
+ "downstream": 13,
1766
+ "downstream_slot": 1,
1767
+ "upstream": "1",
1768
+ "upstream_slot": 2,
1769
+ "controller": 22,
1770
+ "type": "VAE"
1771
+ },
1772
+ {
1773
+ "downstream": 5,
1774
+ "downstream_slot": 0,
1775
+ "upstream": "44",
1776
+ "upstream_slot": 0,
1777
+ "controller": 22,
1778
+ "type": "MODEL"
1779
+ },
1780
+ {
1781
+ "downstream": 14,
1782
+ "downstream_slot": 0,
1783
+ "upstream": "44",
1784
+ "upstream_slot": 0,
1785
+ "controller": 22,
1786
+ "type": "MODEL"
1787
+ },
1788
+ {
1789
+ "downstream": 9,
1790
+ "downstream_slot": 1,
1791
+ "upstream": "1",
1792
+ "upstream_slot": 2,
1793
+ "controller": 22,
1794
+ "type": "VAE"
1795
+ },
1796
+ {
1797
+ "downstream": 7,
1798
+ "downstream_slot": 1,
1799
+ "upstream": "1",
1800
+ "upstream_slot": 2,
1801
+ "controller": 22,
1802
+ "type": "VAE"
1803
+ },
1804
+ {
1805
+ "downstream": 3,
1806
+ "downstream_slot": 0,
1807
+ "upstream": "1",
1808
+ "upstream_slot": 1,
1809
+ "controller": 22,
1810
+ "type": "CLIP"
1811
+ }
1812
+ ],
1813
+ "links_added_by_ue": [
1814
+ 311,
1815
+ 312,
1816
+ 313,
1817
+ 314,
1818
+ 315,
1819
+ 316,
1820
+ 317
1821
+ ],
1822
+ "groupNodes": {},
1823
+ "frontendVersion": "1.19.9",
1824
+ "VHS_latentpreview": false,
1825
+ "VHS_latentpreviewrate": 0,
1826
+ "VHS_MetadataImage": true,
1827
+ "VHS_KeepIntermediate": true
1828
+ },
1829
+ "version": 0.4
1830
+ }
Model_Blend.png ADDED

Git LFS Details

  • SHA256: 6d7176fe24634b46f888a6ad97e926f837e183b1072389e461e5a7b354d10efb
  • Pointer size: 131 Bytes
  • Size of remote file: 661 kB
MultiMergeSimple.py ADDED
@@ -0,0 +1,314 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import comfy.sd
2
+ import comfy.utils
3
+ import comfy.model_base
4
+ import comfy.model_management
5
+ import comfy.model_sampling
6
+
7
+ import torch
8
+ import folder_paths # Assuming this is available from the original context
9
+ import json
10
+ import os
11
+
12
+ # It's good practice to check if args is available, especially if running outside full ComfyUI
13
+ try:
14
+ from comfy.cli_args import args
15
+ except ImportError:
16
+ class ArgsMock:
17
+ disable_metadata = False
18
+ args = ArgsMock()
19
+
20
+
21
+ class ModelMergeSimple: # Keeping original for context, not strictly needed for the new node
22
+ @classmethod
23
+ def INPUT_TYPES(s):
24
+ return {"required": { "model1": ("MODEL",),
25
+ "model2": ("MODEL",),
26
+ "ratio": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}),
27
+ }}
28
+ RETURN_TYPES = ("MODEL",)
29
+ FUNCTION = "merge"
30
+
31
+ CATEGORY = "advanced/model_merging"
32
+
33
+ def merge(self, model1, model2, ratio):
34
+ m = model1.clone()
35
+ kp = model2.get_key_patches("diffusion_model.")
36
+ for k in kp:
37
+ m.add_patches({k: kp[k]}, ratio, 1.0 - ratio) # Original was 1.0 - ratio, ratio. Swapped to match typical 'ratio applies to model2'
38
+ return (m, )
39
+
40
+ class ModelMergeMultiSimple:
41
+ @classmethod
42
+ def INPUT_TYPES(s):
43
+ inputs = {"required": {}}
44
+ for i in range(1, 6): # 5 models
45
+ inputs["required"][f"model{i}"] = ("MODEL",)
46
+ inputs["required"][f"ratio{i}"] = ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.01})
47
+ return inputs
48
+
49
+ RETURN_TYPES = ("MODEL",)
50
+ FUNCTION = "merge_five" # Changed function name to avoid conflict if in same file
51
+
52
+ CATEGORY = "advanced/model_merging"
53
+
54
+ def merge_five(self, **kwargs):
55
+ models = []
56
+ ratios = []
57
+
58
+ for i in range(1, 6):
59
+ model = kwargs.get(f"model{i}")
60
+ ratio = kwargs.get(f"ratio{i}")
61
+ if model is not None: # Basic check
62
+ models.append(model)
63
+ ratios.append(ratio)
64
+ elif ratio > 0:
65
+ # If a ratio is provided for a non-existent model slot (shouldn't happen with type system)
66
+ print(f"Warning: Ratio {ratio} provided for model{i} but model is missing. Ignoring.")
67
+ ratios.append(0.0) # Effectively ignore
68
+
69
+ if not models:
70
+ raise ValueError("No models provided for merging.")
71
+
72
+ # Filter out models with a zero ratio to avoid unnecessary processing
73
+ # and issues with zero total_ratio if all are zero.
74
+ active_models_data = []
75
+ for model, ratio in zip(models, ratios):
76
+ if ratio > 0:
77
+ active_models_data.append({"model": model, "original_ratio": ratio})
78
+
79
+ if not active_models_data:
80
+ print("Warning: All model ratios are 0. Returning the first provided model without changes.")
81
+ return (models[0].clone(), )
82
+
83
+ # Calculate the sum of original ratios for normalization
84
+ total_original_ratio = sum(item["original_ratio"] for item in active_models_data)
85
+
86
+ if total_original_ratio == 0: # Should be caught by previous check, but as a safeguard
87
+ print("Warning: Sum of active model ratios is 0. Returning the first provided model.")
88
+ return (models[0].clone(), )
89
+
90
+ # Normalize ratios (these are the w_i in the explanation)
91
+ normalized_ratios = [item["original_ratio"] / total_original_ratio for item in active_models_data]
92
+
93
+ # Start with the first active model
94
+ merged_model = active_models_data[0]["model"].clone()
95
+
96
+ if len(active_models_data) == 1:
97
+ # Only one model has a non-zero ratio, just return its clone
98
+ return (merged_model,)
99
+
100
+ current_cumulative_normalized_weight = normalized_ratios[0]
101
+
102
+ # Iteratively merge subsequent models
103
+ for i in range(1, len(active_models_data)):
104
+ next_model_data = active_models_data[i]
105
+ next_model_normalized_weight = normalized_ratios[i]
106
+
107
+ # If current_cumulative_normalized_weight is zero (e.g. first model had ratio 0 but others non-zero)
108
+ # and this is the first *actual* model to process in the loop.
109
+ if current_cumulative_normalized_weight == 0 and i==0 : #This condition might need adjustment based on active_models_data start
110
+ merged_model = next_model_data["model"].clone()
111
+ current_cumulative_normalized_weight = next_model_normalized_weight
112
+ continue # skip the add_patches for this first assignment
113
+
114
+
115
+ # The denominator for scaling factors when adding the next_model
116
+ # This is (w_accumulated + w_next)
117
+ denominator = current_cumulative_normalized_weight + next_model_normalized_weight
118
+
119
+ if denominator == 0: # Should not happen if ratios are positive and sum > 0
120
+ continue
121
+
122
+ # Strength for the patches from the next_model (w_next / (w_accumulated + w_next))
123
+ strength_for_next_model = next_model_normalized_weight / denominator
124
+ # Strength for the patches already in merged_model (w_accumulated / (w_accumulated + w_next))
125
+ strength_for_merged_model_self = current_cumulative_normalized_weight / denominator
126
+
127
+ key_patches = next_model_data["model"].get_key_patches("diffusion_model.")
128
+
129
+ # ComfyUI's add_patches: m.add_patches({k: kp[k]}, strength_for_incoming_patch, strength_for_self_patch)
130
+ # This means: new_value = self_patch * strength_for_self_patch + incoming_patch * strength_for_incoming_patch
131
+ for k in key_patches: # Iterate over keys if add_patches doesn't take the whole dict as first arg directly for all keys
132
+ merged_model.add_patches({k: key_patches[k]}, strength_for_next_model, strength_for_merged_model_self)
133
+
134
+ current_cumulative_normalized_weight += next_model_normalized_weight
135
+ # Due to potential floating point inaccuracies, it's good to ensure the sum doesn't exceed 1.0
136
+ # However, the logic ensures the sum of *normalized original weights* is what we track.
137
+ # This cumulative weight is the sum of normalized_ratios of models incorporated so far.
138
+
139
+ return (merged_model,)
140
+
141
+
142
+ # --- Other classes from your provided code for completeness ---
143
+ class ModelSubtract:
144
+ @classmethod
145
+ def INPUT_TYPES(s):
146
+ return {"required": { "model1": ("MODEL",),
147
+ "model2": ("MODEL",),
148
+ "multiplier": ("FLOAT", {"default": 1.0, "min": -10.0, "max": 10.0, "step": 0.01}),
149
+ }}
150
+ RETURN_TYPES = ("MODEL",)
151
+ FUNCTION = "merge"
152
+ CATEGORY = "advanced/model_merging"
153
+ def merge(self, model1, model2, multiplier):
154
+ m = model1.clone()
155
+ kp = model2.get_key_patches("diffusion_model.")
156
+ for k in kp:
157
+ m.add_patches({k: kp[k]}, multiplier, -multiplier) # Note: ComfyUI add_patches is (patches, mult, mult_self)
158
+ # For subtract A - B*mult: m.add_patches({k: kp[k]}, -multiplier, 1.0)
159
+ # The example in comfy has it as (A,B,mult) -> A - B*mult + B*mult which is just A
160
+ # (A,B,mult) with add_patches(kp, B, A_self) means A_self*m + B*kp
161
+ # The ModelSubtract node in Comfy's model_toolרובֿ.py is:
162
+ # m.add_patches({k: kp[k]}, -multiplier, 1.0)
163
+ # This results in: final_patch = patch_self * 1.0 + patch_other * (-multiplier)
164
+ # So, model1_patch - model2_patch * multiplier
165
+ # Correcting ModelSubtract based on typical understanding (model1 - model2*multiplier)
166
+ # The provided code had: m.add_patches({k: kp[k]}, - multiplier, multiplier)
167
+ # This would result in: final = self * mult + other * (-mult)
168
+ # Let's assume the user wants model1 - model2*multiplier
169
+ m = model1.clone()
170
+ kp = model2.get_key_patches("diffusion_model.")
171
+ for k in kp:
172
+ m.add_patches({k: kp[k]}, -multiplier, 1.0)
173
+ return (m, )
174
+
175
+ class ModelAdd:
176
+ @classmethod
177
+ def INPUT_TYPES(s):
178
+ return {"required": { "model1": ("MODEL",),
179
+ "model2": ("MODEL",),
180
+ }}
181
+ RETURN_TYPES = ("MODEL",)
182
+ FUNCTION = "merge"
183
+ CATEGORY = "advanced/model_merging"
184
+ def merge(self, model1, model2):
185
+ m = model1.clone()
186
+ kp = model2.get_key_patches("diffusion_model.")
187
+ for k in kp:
188
+ m.add_patches({k: kp[k]}, 1.0, 1.0) # model1*1.0 + model2*1.0
189
+ return (m, )
190
+
191
+ # ... (rest of your provided classes: CLIPMergeSimple, CLIPSubtract, CLIPAdd, ModelMergeBlocks, save_checkpoint, CheckpointSave, etc.)
192
+ # It's important that these classes are also defined if you are running this as a standalone script for testing,
193
+ # or if they are in the same file. For ComfyUI, it will pick them up.
194
+
195
+ # Make sure to add the new class to NODE_CLASS_MAPPINGS
196
+ # Original mappings:
197
+ # NODE_CLASS_MAPPINGS = {
198
+ # "ModelMergeSimple": ModelMergeSimple,
199
+ # "ModelMergeBlocks": ModelMergeBlocks,
200
+ # "ModelMergeSubtract": ModelSubtract,
201
+ # "ModelMergeAdd": ModelAdd,
202
+ # # ... other mappings
203
+ # }
204
+
205
+ # Add the new node:
206
+ # Assuming NODE_CLASS_MAPPINGS and NODE_DISPLAY_NAME_MAPPINGS are defined at the end of the file.
207
+
208
+ # Placeholder for the rest of the code structure
209
+ class CLIPMergeSimple:
210
+ @classmethod
211
+ def INPUT_TYPES(s): return {"required": { "clip1": ("CLIP",),"clip2": ("CLIP",),"ratio": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}), }}
212
+ RETURN_TYPES = ("CLIP",)
213
+ FUNCTION = "merge"
214
+ CATEGORY = "advanced/model_merging"
215
+ def merge(self, clip1, clip2, ratio): return (clip1, ) # Placeholder
216
+
217
+ class CLIPSubtract:
218
+ @classmethod
219
+ def INPUT_TYPES(s): return {"required": { "clip1": ("CLIP",),"clip2": ("CLIP",),"multiplier": ("FLOAT", {"default": 1.0, "min": -10.0, "max": 10.0, "step": 0.01}),}}
220
+ RETURN_TYPES = ("CLIP",)
221
+ FUNCTION = "merge"
222
+ CATEGORY = "advanced/model_merging"
223
+ def merge(self, clip1, clip2, multiplier): return (clip1,) # Placeholder
224
+
225
+ class CLIPAdd:
226
+ @classmethod
227
+ def INPUT_TYPES(s): return {"required": { "clip1": ("CLIP",),"clip2": ("CLIP",),}}
228
+ RETURN_TYPES = ("CLIP",)
229
+ FUNCTION = "merge"
230
+ CATEGORY = "advanced/model_merging"
231
+ def merge(self, clip1, clip2): return (clip1,) # Placeholder
232
+
233
+ class ModelMergeBlocks:
234
+ @classmethod
235
+ def INPUT_TYPES(s): return {"required": { "model1": ("MODEL",),"model2": ("MODEL",),"input": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}),"middle": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}),"out": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01})}}
236
+ RETURN_TYPES = ("MODEL",)
237
+ FUNCTION = "merge"
238
+ CATEGORY = "advanced/model_merging"
239
+ def merge(self, model1, model2, **kwargs): return (model1,) # Placeholder
240
+
241
+ def save_checkpoint(model, clip=None, vae=None, clip_vision=None, filename_prefix=None, output_dir=None, prompt=None, extra_pnginfo=None): pass # Placeholder
242
+
243
+ class CheckpointSave:
244
+ def __init__(self): self.output_dir = folder_paths.get_output_directory()
245
+ @classmethod
246
+ def INPUT_TYPES(s): return {"required": { "model": ("MODEL",),"clip": ("CLIP",),"vae": ("VAE",),"filename_prefix": ("STRING", {"default": "checkpoints/ComfyUI"}),},"hidden": {"prompt": "PROMPT", "extra_pnginfo": "EXTRA_PNGINFO"},}
247
+ RETURN_TYPES = ()
248
+ FUNCTION = "save"
249
+ OUTPUT_NODE = True
250
+ CATEGORY = "advanced/model_merging"
251
+ def save(self, model, clip, vae, filename_prefix, prompt=None, extra_pnginfo=None): return {} # Placeholder
252
+
253
+ class CLIPSave:
254
+ def __init__(self): self.output_dir = folder_paths.get_output_directory()
255
+ @classmethod
256
+ def INPUT_TYPES(s): return {"required": { "clip": ("CLIP",),"filename_prefix": ("STRING", {"default": "clip/ComfyUI"}),},"hidden": {"prompt": "PROMPT", "extra_pnginfo": "EXTRA_PNGINFO"},}
257
+ RETURN_TYPES = ()
258
+ FUNCTION = "save"
259
+ OUTPUT_NODE = True
260
+ CATEGORY = "advanced/model_merging"
261
+ def save(self, clip, filename_prefix, prompt=None, extra_pnginfo=None): return {} # Placeholder
262
+
263
+ class VAESave:
264
+ def __init__(self): self.output_dir = folder_paths.get_output_directory()
265
+ @classmethod
266
+ def INPUT_TYPES(s): return {"required": { "vae": ("VAE",),"filename_prefix": ("STRING", {"default": "vae/ComfyUI_vae"}),},"hidden": {"prompt": "PROMPT", "extra_pnginfo": "EXTRA_PNGINFO"},}
267
+ RETURN_TYPES = ()
268
+ FUNCTION = "save"
269
+ OUTPUT_NODE = True
270
+ CATEGORY = "advanced/model_merging"
271
+ def save(self, vae, filename_prefix, prompt=None, extra_pnginfo=None): return {} # Placeholder
272
+
273
+ class ModelSave:
274
+ def __init__(self): self.output_dir = folder_paths.get_output_directory()
275
+ @classmethod
276
+ def INPUT_TYPES(s): return {"required": { "model": ("MODEL",),"filename_prefix": ("STRING", {"default": "diffusion_models/ComfyUI"}),},"hidden": {"prompt": "PROMPT", "extra_pnginfo": "EXTRA_PNGINFO"},}
277
+ RETURN_TYPES = ()
278
+ FUNCTION = "save"
279
+ OUTPUT_NODE = True
280
+ CATEGORY = "advanced/model_merging"
281
+ def save(self, model, filename_prefix, prompt=None, extra_pnginfo=None): return {} # Placeholder
282
+
283
+
284
+ NODE_CLASS_MAPPINGS = {
285
+ "ModelMergeSimple": ModelMergeSimple,
286
+ "ModelMergeMultiSimple": ModelMergeMultiSimple, # Added new class
287
+ "ModelMergeBlocks": ModelMergeBlocks,
288
+ "ModelMergeSubtract": ModelSubtract,
289
+ "ModelMergeAdd": ModelAdd,
290
+ "CheckpointSave": CheckpointSave,
291
+ "CLIPMergeSimple": CLIPMergeSimple,
292
+ "CLIPMergeSubtract": CLIPSubtract,
293
+ "CLIPMergeAdd": CLIPAdd,
294
+ "CLIPSave": CLIPSave,
295
+ "VAESave": VAESave,
296
+ "ModelSave": ModelSave,
297
+ }
298
+
299
+ NODE_DISPLAY_NAME_MAPPINGS = {
300
+ "ModelMergeSimple": "Model Merge Simple (2 Models)", # Clarified original
301
+ "ModelMergeMultiSimple": "Model Merge Multi Simple (5 Models)", # Added new display name
302
+ "ModelMergeBlocks": "Model Merge Blocks",
303
+ "ModelMergeSubtract": "Model Subtract",
304
+ "ModelMergeAdd": "Model Add",
305
+ "CheckpointSave": "Save Checkpoint",
306
+ "CLIPMergeSimple": "CLIP Merge Simple",
307
+ "CLIPMergeSubtract": "CLIP Subtract",
308
+ "CLIPMergeAdd": "CLIP Add",
309
+ "CLIPSave": "CLIP Save",
310
+ "VAESave": "VAE Save",
311
+ "ModelSave": "Model Save",
312
+ }
313
+
314
+ print("Custom model merging nodes loaded.")