Updated Workflows + Added new MultiView nodes
Trellis2SparseMultiViewGenerator Trellis2ImageCondMultiViewGenerator Trellis2ShapeMultiViewGenerator Trellis2ShapeCascadeMultiViewGenerator Trellis2TexSlatMultiViewGenerator
This commit is contained in:
@@ -14,6 +14,8 @@
|
||||
|
||||
| Date | Description |
|
||||
| --- | --- |
|
||||
| **2026-04-20** | Recreated all Workflows |
|
||||
| **2026-04-20** | Added node "Sparse MultiView Generator"<br>Added node "ImageCond MultiView Generator"<br>Added node "Shape MultiView Generator"<br>Added node "Shape Cascade MultiView Generator"<br>Added node "Tex Slat MultiView Generator" |
|
||||
| **2026-04-20** | Added node "Fill Holes Nicely with Meshlib"<br>Fixed DinoV3 Features Extractor |
|
||||
| **2026-04-06** | Added new "DINO-Lock" functionality<br>New fill_holes in Sparse Generator<br>Thanks to Easymode on Discord |
|
||||
| **2026-04-05** | Added node "Extract Images from Video"<br>Can be used with "Sparse Generator with ReconViaGen" |
|
||||
|
||||
@@ -1,769 +0,0 @@
|
||||
{
|
||||
"id": "cd6e2e00-83cc-4795-abf1-09b46428c270",
|
||||
"revision": 0,
|
||||
"last_node_id": 207,
|
||||
"last_link_id": 416,
|
||||
"nodes": [
|
||||
{
|
||||
"id": 69,
|
||||
"type": "Trellis2LoadImageWithTransparency",
|
||||
"pos": [
|
||||
-377.72410571388025,
|
||||
328.4870830026766
|
||||
],
|
||||
"size": [
|
||||
717.521556382955,
|
||||
915.5313594325766
|
||||
],
|
||||
"flags": {},
|
||||
"order": 0,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"links": []
|
||||
},
|
||||
{
|
||||
"name": "mask",
|
||||
"type": "MASK",
|
||||
"links": []
|
||||
},
|
||||
{
|
||||
"name": "image_with_alpha",
|
||||
"type": "IMAGE",
|
||||
"links": [
|
||||
241
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "e7f9b30df7a09bcedf1c955e176754c73f983254",
|
||||
"Node name for S&R": "Trellis2LoadImageWithTransparency",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"Image_1024_00101_.png",
|
||||
"image"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 203,
|
||||
"type": "PrimitiveInt",
|
||||
"pos": [
|
||||
-373.0898096413628,
|
||||
163.12227474974895
|
||||
],
|
||||
"size": [
|
||||
270,
|
||||
82
|
||||
],
|
||||
"flags": {},
|
||||
"order": 1,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "INT",
|
||||
"type": "INT",
|
||||
"links": [
|
||||
409
|
||||
]
|
||||
}
|
||||
],
|
||||
"title": "Target Face Number",
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.18.1",
|
||||
"Node name for S&R": "PrimitiveInt"
|
||||
},
|
||||
"widgets_values": [
|
||||
300000,
|
||||
"fixed"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 204,
|
||||
"type": "PrimitiveString",
|
||||
"pos": [
|
||||
-368.2858630795249,
|
||||
34.401714106564214
|
||||
],
|
||||
"size": [
|
||||
270,
|
||||
58
|
||||
],
|
||||
"flags": {},
|
||||
"order": 2,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "STRING",
|
||||
"type": "STRING",
|
||||
"links": [
|
||||
410
|
||||
]
|
||||
}
|
||||
],
|
||||
"title": "Name",
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.18.1",
|
||||
"Node name for S&R": "PrimitiveString"
|
||||
},
|
||||
"widgets_values": [
|
||||
"Tank"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 202,
|
||||
"type": "Preview3D",
|
||||
"pos": [
|
||||
376.48890096546415,
|
||||
331.2515281089069
|
||||
],
|
||||
"size": [
|
||||
868.8731050199159,
|
||||
920.1382602693357
|
||||
],
|
||||
"flags": {},
|
||||
"order": 12,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "camera_info",
|
||||
"shape": 7,
|
||||
"type": "LOAD3D_CAMERA",
|
||||
"link": null
|
||||
},
|
||||
{
|
||||
"name": "bg_image",
|
||||
"shape": 7,
|
||||
"type": "IMAGE",
|
||||
"link": null
|
||||
},
|
||||
{
|
||||
"name": "model_file",
|
||||
"type": "STRING,FILE_3D_GLB,FILE_3D_GLTF,FILE_3D_FBX,FILE_3D_OBJ,FILE_3D_STL,FILE_3D_USDZ,FILE_3D",
|
||||
"widget": {
|
||||
"name": "model_file"
|
||||
},
|
||||
"link": 398
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.18.1",
|
||||
"Node name for S&R": "Preview3D"
|
||||
},
|
||||
"widgets_values": [
|
||||
"",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"type": "Trellis2LoadModel",
|
||||
"pos": [
|
||||
404.6117778691903,
|
||||
-564.6350558283436
|
||||
],
|
||||
"size": [
|
||||
301.71875,
|
||||
202
|
||||
],
|
||||
"flags": {},
|
||||
"order": 3,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "pipeline",
|
||||
"type": "TRELLIS2PIPELINE",
|
||||
"links": [
|
||||
411
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "c5d66aa46bf1bbf903fd4fe9ff086ac774bb7e03",
|
||||
"Node name for S&R": "Trellis2LoadModel",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"microsoft/TRELLIS.2-4B",
|
||||
"flash_attn",
|
||||
"cuda",
|
||||
true,
|
||||
false,
|
||||
"flex_gemm",
|
||||
"flash_attn"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 119,
|
||||
"type": "Trellis2PreProcessImage",
|
||||
"pos": [
|
||||
413.7442818307099,
|
||||
-185.99180300678682
|
||||
],
|
||||
"size": [
|
||||
281.8229166666667,
|
||||
106
|
||||
],
|
||||
"flags": {},
|
||||
"order": 4,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"link": 241
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"links": [
|
||||
412
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "15854282a73cf231b81d52ada22e652f414a078b",
|
||||
"Node name for S&R": "Trellis2PreProcessImage",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
10,
|
||||
false,
|
||||
1024
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 196,
|
||||
"type": "Trellis2FillHolesWithCuMesh",
|
||||
"pos": [
|
||||
1148.203832543889,
|
||||
-691.4362805609004
|
||||
],
|
||||
"size": [
|
||||
312.4361328125,
|
||||
58
|
||||
],
|
||||
"flags": {},
|
||||
"order": 6,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 413
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
392
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "dc66f263e832b103a81a021bf6cd53eec8ff28af",
|
||||
"Node name for S&R": "Trellis2FillHolesWithCuMesh"
|
||||
},
|
||||
"widgets_values": [
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 197,
|
||||
"type": "Trellis2ReconstructMeshWithQuad",
|
||||
"pos": [
|
||||
1143.7616665123248,
|
||||
-576.3871604957823
|
||||
],
|
||||
"size": [
|
||||
331.5878996659427,
|
||||
142.11360851901668
|
||||
],
|
||||
"flags": {},
|
||||
"order": 7,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 392
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
393
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "d4d66cfc9f1ce5b1c3b9a2e504ee4b24ffad48a5",
|
||||
"Node name for S&R": "Trellis2ReconstructMeshWithQuad",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
1,
|
||||
1024,
|
||||
true,
|
||||
true
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 198,
|
||||
"type": "Trellis2SimplifyMesh",
|
||||
"pos": [
|
||||
1146.6254930330851,
|
||||
-381.0428638307529
|
||||
],
|
||||
"size": [
|
||||
270,
|
||||
82
|
||||
],
|
||||
"flags": {},
|
||||
"order": 8,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 393
|
||||
},
|
||||
{
|
||||
"name": "target_face_num",
|
||||
"type": "INT",
|
||||
"widget": {
|
||||
"name": "target_face_num"
|
||||
},
|
||||
"link": 409
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
394
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "5d4c1474ceb477f40bbd6d437f7da90f3d6d9229",
|
||||
"Node name for S&R": "Trellis2SimplifyMesh"
|
||||
},
|
||||
"widgets_values": [
|
||||
500000,
|
||||
"Cumesh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 205,
|
||||
"type": "Trellis2MeshWithVoxelAdvancedGenerator",
|
||||
"pos": [
|
||||
717.5499413662296,
|
||||
-588.6883997158563
|
||||
],
|
||||
"size": [
|
||||
413.1841796875,
|
||||
702
|
||||
],
|
||||
"flags": {},
|
||||
"order": 5,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "pipeline",
|
||||
"type": "TRELLIS2PIPELINE",
|
||||
"link": 411
|
||||
},
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"link": 412
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
413
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bvh",
|
||||
"type": "BVH",
|
||||
"links": [
|
||||
415
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a5242473f68fe91d5ef0b188f8658ae0da540237",
|
||||
"Node name for S&R": "Trellis2MeshWithVoxelAdvancedGenerator"
|
||||
},
|
||||
"widgets_values": [
|
||||
12345,
|
||||
"fixed",
|
||||
"1024_cascade",
|
||||
25,
|
||||
7.5,
|
||||
0.01,
|
||||
5,
|
||||
12,
|
||||
7.5,
|
||||
0.01,
|
||||
3,
|
||||
12,
|
||||
3,
|
||||
0.01,
|
||||
3,
|
||||
999999,
|
||||
1,
|
||||
32,
|
||||
true,
|
||||
0.1,
|
||||
1,
|
||||
0.1,
|
||||
1,
|
||||
0,
|
||||
0.9,
|
||||
true,
|
||||
"euler"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 201,
|
||||
"type": "Trellis2ExportMesh",
|
||||
"pos": [
|
||||
1597.089782460921,
|
||||
-140.8020848589493
|
||||
],
|
||||
"size": [
|
||||
270,
|
||||
102
|
||||
],
|
||||
"flags": {},
|
||||
"order": 11,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"link": 416
|
||||
},
|
||||
{
|
||||
"name": "filename_prefix",
|
||||
"type": "STRING",
|
||||
"widget": {
|
||||
"name": "filename_prefix"
|
||||
},
|
||||
"link": 410
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "glb_path",
|
||||
"type": "STRING",
|
||||
"links": [
|
||||
398
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "relative_path",
|
||||
"type": "STRING",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a5242473f68fe91d5ef0b188f8658ae0da540237",
|
||||
"Node name for S&R": "Trellis2ExportMesh"
|
||||
},
|
||||
"widgets_values": [
|
||||
"3D/Trellis2",
|
||||
"glb"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 199,
|
||||
"type": "Trellis2FillHolesWithMeshlib",
|
||||
"pos": [
|
||||
1151.769446503904,
|
||||
-245.92060963339878
|
||||
],
|
||||
"size": [
|
||||
302.4315956250001,
|
||||
47.18107670916754
|
||||
],
|
||||
"flags": {},
|
||||
"order": 9,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 394
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
414
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "holes_filled",
|
||||
"type": "INT",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "e8098f5641702e74133c2dea0b45a13a3ab19985",
|
||||
"Node name for S&R": "Trellis2FillHolesWithMeshlib"
|
||||
},
|
||||
"widgets_values": []
|
||||
},
|
||||
{
|
||||
"id": 207,
|
||||
"type": "Trellis2UnWrapAndRasterizer",
|
||||
"pos": [
|
||||
1153.8343873953147,
|
||||
-150.96148118668327
|
||||
],
|
||||
"size": [
|
||||
419.15234375,
|
||||
314
|
||||
],
|
||||
"flags": {},
|
||||
"order": 10,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 414
|
||||
},
|
||||
{
|
||||
"name": "bvh",
|
||||
"type": "BVH",
|
||||
"link": 415
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"links": [
|
||||
416
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "base_color_texture",
|
||||
"type": "IMAGE",
|
||||
"links": null
|
||||
},
|
||||
{
|
||||
"name": "metallic_roughness_texture",
|
||||
"type": "IMAGE",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a5242473f68fe91d5ef0b188f8658ae0da540237",
|
||||
"Node name for S&R": "Trellis2UnWrapAndRasterizer"
|
||||
},
|
||||
"widgets_values": [
|
||||
60,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
2048,
|
||||
"OPAQUE",
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
"telea"
|
||||
]
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
[
|
||||
241,
|
||||
69,
|
||||
2,
|
||||
119,
|
||||
0,
|
||||
"IMAGE"
|
||||
],
|
||||
[
|
||||
392,
|
||||
196,
|
||||
0,
|
||||
197,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
393,
|
||||
197,
|
||||
0,
|
||||
198,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
394,
|
||||
198,
|
||||
0,
|
||||
199,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
398,
|
||||
201,
|
||||
0,
|
||||
202,
|
||||
2,
|
||||
"STRING"
|
||||
],
|
||||
[
|
||||
409,
|
||||
203,
|
||||
0,
|
||||
198,
|
||||
1,
|
||||
"INT"
|
||||
],
|
||||
[
|
||||
410,
|
||||
204,
|
||||
0,
|
||||
201,
|
||||
1,
|
||||
"STRING"
|
||||
],
|
||||
[
|
||||
411,
|
||||
39,
|
||||
0,
|
||||
205,
|
||||
0,
|
||||
"TRELLIS2PIPELINE"
|
||||
],
|
||||
[
|
||||
412,
|
||||
119,
|
||||
0,
|
||||
205,
|
||||
1,
|
||||
"IMAGE"
|
||||
],
|
||||
[
|
||||
413,
|
||||
205,
|
||||
0,
|
||||
196,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
414,
|
||||
199,
|
||||
0,
|
||||
207,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
415,
|
||||
205,
|
||||
1,
|
||||
207,
|
||||
1,
|
||||
"BVH"
|
||||
],
|
||||
[
|
||||
416,
|
||||
207,
|
||||
0,
|
||||
201,
|
||||
0,
|
||||
"TRIMESH"
|
||||
]
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"id": 1,
|
||||
"title": "Configuration",
|
||||
"bounding": [
|
||||
-387.72410571388025,
|
||||
-53.37077389343578,
|
||||
737.521556382955,
|
||||
1307.389216328689
|
||||
],
|
||||
"color": "#3f789e",
|
||||
"font_size": 24,
|
||||
"flags": {}
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"title": "Generation",
|
||||
"bounding": [
|
||||
394.6117778691903,
|
||||
-772.2962805609001,
|
||||
1523.2043605195558,
|
||||
1035.4596396805657
|
||||
],
|
||||
"color": "#3f789e",
|
||||
"font_size": 24,
|
||||
"flags": {}
|
||||
}
|
||||
],
|
||||
"config": {},
|
||||
"extra": {
|
||||
"workflowRendererVersion": "LG",
|
||||
"ue_links": [],
|
||||
"ds": {
|
||||
"scale": 0.5644739300537777,
|
||||
"offset": [
|
||||
717.24240821608,
|
||||
973.4146936919584
|
||||
]
|
||||
},
|
||||
"links_added_by_ue": [],
|
||||
"frontendVersion": "1.42.8",
|
||||
"VHS_latentpreview": false,
|
||||
"VHS_latentpreviewrate": 0,
|
||||
"VHS_MetadataImage": true,
|
||||
"VHS_KeepIntermediate": true
|
||||
},
|
||||
"version": 0.4
|
||||
}
|
||||
@@ -1,694 +0,0 @@
|
||||
{
|
||||
"id": "622e21aa-627a-479c-9f08-0253df4ef152",
|
||||
"revision": 0,
|
||||
"last_node_id": 164,
|
||||
"last_link_id": 329,
|
||||
"nodes": [
|
||||
{
|
||||
"id": 119,
|
||||
"type": "Trellis2PreProcessImage",
|
||||
"pos": [
|
||||
897.5905907717984,
|
||||
823.1289593472236
|
||||
],
|
||||
"size": [
|
||||
338.1875,
|
||||
79.328125
|
||||
],
|
||||
"flags": {},
|
||||
"order": 2,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"link": 241
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"links": [
|
||||
281,
|
||||
327
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "15854282a73cf231b81d52ada22e652f414a078b",
|
||||
"Node name for S&R": "Trellis2PreProcessImage",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
25
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"type": "Trellis2LoadModel",
|
||||
"pos": [
|
||||
1327.276154007807,
|
||||
692.1676476307475
|
||||
],
|
||||
"size": [
|
||||
362.0625,
|
||||
207.328125
|
||||
],
|
||||
"flags": {},
|
||||
"order": 0,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "pipeline",
|
||||
"type": "TRELLIS2PIPELINE",
|
||||
"links": [
|
||||
87,
|
||||
326
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "c5d66aa46bf1bbf903fd4fe9ff086ac774bb7e03",
|
||||
"Node name for S&R": "Trellis2LoadModel",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"TRELLIS.2-4B",
|
||||
"flash_attn",
|
||||
"cuda",
|
||||
true,
|
||||
false
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 138,
|
||||
"type": "Trellis2SimplifyMesh",
|
||||
"pos": [
|
||||
2747.339362428528,
|
||||
649.4485906473623
|
||||
],
|
||||
"size": [
|
||||
335.5,
|
||||
114
|
||||
],
|
||||
"flags": {},
|
||||
"order": 5,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 321
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
309
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "fa93c4c067ccebf6ca689fa0d222a93b729325ee",
|
||||
"Node name for S&R": "Trellis2SimplifyMesh",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
2000000,
|
||||
"Cumesh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"type": "Preview3D",
|
||||
"pos": [
|
||||
2257.240824765328,
|
||||
1021.6339532742255
|
||||
],
|
||||
"size": [
|
||||
903,
|
||||
836.78125
|
||||
],
|
||||
"flags": {},
|
||||
"order": 10,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "camera_info",
|
||||
"shape": 7,
|
||||
"type": "LOAD3D_CAMERA",
|
||||
"link": null
|
||||
},
|
||||
{
|
||||
"name": "bg_image",
|
||||
"shape": 7,
|
||||
"type": "IMAGE",
|
||||
"link": null
|
||||
},
|
||||
{
|
||||
"name": "model_file",
|
||||
"type": "STRING",
|
||||
"widget": {
|
||||
"name": "model_file"
|
||||
},
|
||||
"link": 22
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.4.0",
|
||||
"Node name for S&R": "Preview3D",
|
||||
"widget_ue_connectable": {},
|
||||
"Last Time Model File": "SerpentStatue_00002_.glb",
|
||||
"Scene Config": {
|
||||
"showGrid": true,
|
||||
"backgroundColor": "#282828",
|
||||
"backgroundImage": "",
|
||||
"backgroundRenderMode": "tiled"
|
||||
},
|
||||
"Camera Config": {
|
||||
"cameraType": "perspective",
|
||||
"fov": 35,
|
||||
"state": {
|
||||
"position": {
|
||||
"x": 7.414666256428865,
|
||||
"y": 3.3570132290769408,
|
||||
"z": 5.34874244185929
|
||||
},
|
||||
"target": {
|
||||
"x": -0.02435503410412615,
|
||||
"y": 1.6867273698374317,
|
||||
"z": 0.13811717805443535
|
||||
},
|
||||
"zoom": 1,
|
||||
"cameraType": "perspective"
|
||||
}
|
||||
},
|
||||
"Light Config": {
|
||||
"intensity": 3
|
||||
},
|
||||
"Model Config": {
|
||||
"upDirection": "original",
|
||||
"materialMode": "original",
|
||||
"showSkeleton": false
|
||||
}
|
||||
},
|
||||
"widgets_values": [
|
||||
"SerpentStatue_00002_.glb",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 45,
|
||||
"type": "Trellis2MeshWithVoxelAdvancedGenerator",
|
||||
"pos": [
|
||||
1742.5332178164758,
|
||||
972.3746051296943
|
||||
],
|
||||
"size": [
|
||||
495.8125,
|
||||
866
|
||||
],
|
||||
"flags": {},
|
||||
"order": 3,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "pipeline",
|
||||
"type": "TRELLIS2PIPELINE",
|
||||
"link": 87
|
||||
},
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"link": 281
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
319
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bvh",
|
||||
"type": "BVH",
|
||||
"links": []
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a28d6cf93b0cf24aa9e7d3dccfd14f406227fbd0",
|
||||
"Node name for S&R": "Trellis2MeshWithVoxelAdvancedGenerator",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
123456,
|
||||
"fixed",
|
||||
"1024",
|
||||
12,
|
||||
6.5,
|
||||
0.2,
|
||||
4,
|
||||
12,
|
||||
6.5,
|
||||
0.2,
|
||||
4,
|
||||
12,
|
||||
3,
|
||||
0.2,
|
||||
3,
|
||||
999999,
|
||||
4,
|
||||
32,
|
||||
false,
|
||||
0.1,
|
||||
1,
|
||||
0.1,
|
||||
1,
|
||||
0,
|
||||
0.9,
|
||||
true
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"type": "Trellis2ExportMesh",
|
||||
"pos": [
|
||||
3210.9571972842705,
|
||||
1016.681270352647
|
||||
],
|
||||
"size": [
|
||||
324,
|
||||
146
|
||||
],
|
||||
"flags": {},
|
||||
"order": 9,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"link": 329
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "glb_path",
|
||||
"type": "STRING",
|
||||
"links": [
|
||||
22
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "e7f9b30df7a09bcedf1c955e176754c73f983254",
|
||||
"Node name for S&R": "Trellis2ExportMesh",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"Trellis2BetterTextured",
|
||||
"glb",
|
||||
true
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 69,
|
||||
"type": "Trellis2LoadImageWithTransparency",
|
||||
"pos": [
|
||||
897.3491520510952,
|
||||
952.1619923367256
|
||||
],
|
||||
"size": [
|
||||
788.875,
|
||||
938.875
|
||||
],
|
||||
"flags": {},
|
||||
"order": 1,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"links": []
|
||||
},
|
||||
{
|
||||
"name": "mask",
|
||||
"type": "MASK",
|
||||
"links": []
|
||||
},
|
||||
{
|
||||
"name": "image_with_alpha",
|
||||
"type": "IMAGE",
|
||||
"links": [
|
||||
241
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "e7f9b30df7a09bcedf1c955e176754c73f983254",
|
||||
"Node name for S&R": "Trellis2LoadImageWithTransparency",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"Image_2048_00032_.png",
|
||||
"image"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 155,
|
||||
"type": "Trellis2FillHolesWithMeshlib",
|
||||
"pos": [
|
||||
3167.7313003113813,
|
||||
649.3451250922466
|
||||
],
|
||||
"size": [
|
||||
344.9375,
|
||||
71.328125
|
||||
],
|
||||
"flags": {},
|
||||
"order": 6,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 309
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
311
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "holes_filled",
|
||||
"type": "INT",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a354e8c4fead5c152d58b50eae2935cb2923cd72",
|
||||
"Node name for S&R": "Trellis2FillHolesWithMeshlib",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": []
|
||||
},
|
||||
{
|
||||
"id": 156,
|
||||
"type": "Trellis2MeshWithVoxelToTrimesh",
|
||||
"pos": [
|
||||
3593.1466803610683,
|
||||
654.6503899580995
|
||||
],
|
||||
"size": [
|
||||
349.40625,
|
||||
82
|
||||
],
|
||||
"flags": {},
|
||||
"order": 7,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 311
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"links": [
|
||||
328
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a354e8c4fead5c152d58b50eae2935cb2923cd72",
|
||||
"Node name for S&R": "Trellis2MeshWithVoxelToTrimesh",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"90 degrees"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 160,
|
||||
"type": "Trellis2Remesh",
|
||||
"pos": [
|
||||
2277.4886240299484,
|
||||
656.1644153578488
|
||||
],
|
||||
"size": [
|
||||
422.1875,
|
||||
262
|
||||
],
|
||||
"flags": {},
|
||||
"order": 4,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 319
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
321
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a354e8c4fead5c152d58b50eae2935cb2923cd72",
|
||||
"Node name for S&R": "Trellis2Remesh",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
1,
|
||||
0,
|
||||
false,
|
||||
0.03,
|
||||
"1024",
|
||||
true,
|
||||
true
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 164,
|
||||
"type": "Trellis2MeshTexturing",
|
||||
"pos": [
|
||||
3592.0674518531387,
|
||||
803.2771445659899
|
||||
],
|
||||
"size": [
|
||||
419.125,
|
||||
568.65625
|
||||
],
|
||||
"flags": {},
|
||||
"order": 8,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "pipeline",
|
||||
"type": "TRELLIS2PIPELINE",
|
||||
"link": 326
|
||||
},
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"link": 327
|
||||
},
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"link": 328
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"links": [
|
||||
329
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "base_color_texture",
|
||||
"type": "IMAGE",
|
||||
"links": null
|
||||
},
|
||||
{
|
||||
"name": "metallic_roughness_texture",
|
||||
"type": "IMAGE",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a354e8c4fead5c152d58b50eae2935cb2923cd72",
|
||||
"Node name for S&R": "Trellis2MeshTexturing",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
0,
|
||||
"randomize",
|
||||
12,
|
||||
3,
|
||||
0.2,
|
||||
3,
|
||||
1024,
|
||||
4096,
|
||||
"OPAQUE",
|
||||
true,
|
||||
0,
|
||||
0.9,
|
||||
4,
|
||||
false,
|
||||
false,
|
||||
60
|
||||
]
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
[
|
||||
22,
|
||||
19,
|
||||
0,
|
||||
10,
|
||||
2,
|
||||
"STRING"
|
||||
],
|
||||
[
|
||||
87,
|
||||
39,
|
||||
0,
|
||||
45,
|
||||
0,
|
||||
"TRELLIS2PIPELINE"
|
||||
],
|
||||
[
|
||||
241,
|
||||
69,
|
||||
2,
|
||||
119,
|
||||
0,
|
||||
"IMAGE"
|
||||
],
|
||||
[
|
||||
281,
|
||||
119,
|
||||
0,
|
||||
45,
|
||||
1,
|
||||
"IMAGE"
|
||||
],
|
||||
[
|
||||
309,
|
||||
138,
|
||||
0,
|
||||
155,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
311,
|
||||
155,
|
||||
0,
|
||||
156,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
319,
|
||||
45,
|
||||
0,
|
||||
160,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
321,
|
||||
160,
|
||||
0,
|
||||
138,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
326,
|
||||
39,
|
||||
0,
|
||||
164,
|
||||
0,
|
||||
"TRELLIS2PIPELINE"
|
||||
],
|
||||
[
|
||||
327,
|
||||
119,
|
||||
0,
|
||||
164,
|
||||
1,
|
||||
"IMAGE"
|
||||
],
|
||||
[
|
||||
328,
|
||||
156,
|
||||
0,
|
||||
164,
|
||||
2,
|
||||
"TRIMESH"
|
||||
],
|
||||
[
|
||||
329,
|
||||
164,
|
||||
0,
|
||||
19,
|
||||
0,
|
||||
"TRIMESH"
|
||||
]
|
||||
],
|
||||
"groups": [],
|
||||
"config": {},
|
||||
"extra": {
|
||||
"workflowRendererVersion": "Vue",
|
||||
"ue_links": [],
|
||||
"ds": {
|
||||
"scale": 0.513158118230707,
|
||||
"offset": [
|
||||
-749.1534758435857,
|
||||
-288.6107035425266
|
||||
]
|
||||
},
|
||||
"links_added_by_ue": [],
|
||||
"frontendVersion": "1.37.11",
|
||||
"VHS_latentpreview": false,
|
||||
"VHS_latentpreviewrate": 0,
|
||||
"VHS_MetadataImage": true,
|
||||
"VHS_KeepIntermediate": true
|
||||
},
|
||||
"version": 0.4
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+1068
-895
File diff suppressed because it is too large
Load Diff
+1123
-821
File diff suppressed because it is too large
Load Diff
@@ -1,634 +0,0 @@
|
||||
{
|
||||
"id": "bdcdd41a-9d6d-48d5-8de6-ab8903d3b227",
|
||||
"revision": 0,
|
||||
"last_node_id": 16,
|
||||
"last_link_id": 26,
|
||||
"nodes": [
|
||||
{
|
||||
"id": 1,
|
||||
"type": "Trellis2LoadModel",
|
||||
"pos": [
|
||||
324.6709594238695,
|
||||
598.4626830706405
|
||||
],
|
||||
"size": [
|
||||
362.0625,
|
||||
207.328125
|
||||
],
|
||||
"flags": {},
|
||||
"order": 0,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "pipeline",
|
||||
"type": "TRELLIS2PIPELINE",
|
||||
"links": [
|
||||
1
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "c5d66aa46bf1bbf903fd4fe9ff086ac774bb7e03",
|
||||
"Node name for S&R": "Trellis2LoadModel",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"TRELLIS.2-4B",
|
||||
"flash_attn",
|
||||
"cuda",
|
||||
true,
|
||||
true
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"type": "Trellis2SimplifyMesh",
|
||||
"pos": [
|
||||
1674.314276200003,
|
||||
751.6717152746028
|
||||
],
|
||||
"size": [
|
||||
324,
|
||||
114
|
||||
],
|
||||
"flags": {},
|
||||
"order": 6,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 26
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
21
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "87f48b0726b5d5e58b744bbac632331cd7a34103",
|
||||
"Node name for S&R": "Trellis2SimplifyMesh",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
2000000,
|
||||
"Cumesh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"type": "Trellis2MeshWithVoxelToTrimesh",
|
||||
"pos": [
|
||||
2339.5056410006705,
|
||||
749.748649282976
|
||||
],
|
||||
"size": [
|
||||
410.71875,
|
||||
82
|
||||
],
|
||||
"flags": {},
|
||||
"order": 8,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 22
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"links": [
|
||||
9
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "87f48b0726b5d5e58b744bbac632331cd7a34103",
|
||||
"Node name for S&R": "Trellis2MeshWithVoxelToTrimesh",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"90 degrees"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"type": "Preview3D",
|
||||
"pos": [
|
||||
1687.9847496889538,
|
||||
1105.4665469841239
|
||||
],
|
||||
"size": [
|
||||
859.3125,
|
||||
770.71875
|
||||
],
|
||||
"flags": {},
|
||||
"order": 10,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "camera_info",
|
||||
"shape": 7,
|
||||
"type": "LOAD3D_CAMERA",
|
||||
"link": null
|
||||
},
|
||||
{
|
||||
"name": "bg_image",
|
||||
"shape": 7,
|
||||
"type": "IMAGE",
|
||||
"link": null
|
||||
},
|
||||
{
|
||||
"name": "model_file",
|
||||
"type": "STRING",
|
||||
"widget": {
|
||||
"name": "model_file"
|
||||
},
|
||||
"link": 6
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.6.0",
|
||||
"Node name for S&R": "Preview3D",
|
||||
"widget_ue_connectable": {},
|
||||
"Last Time Model File": "DwarfWarrior_Refined_1536_00001_.glb",
|
||||
"Scene Config": {
|
||||
"showGrid": true,
|
||||
"backgroundColor": "#282828",
|
||||
"backgroundImage": "",
|
||||
"backgroundRenderMode": "tiled"
|
||||
},
|
||||
"Camera Config": {
|
||||
"cameraType": "perspective",
|
||||
"fov": 35,
|
||||
"state": {
|
||||
"position": {
|
||||
"x": -0.12117550423665688,
|
||||
"y": 2.8575581491112874,
|
||||
"z": 8.963607314880118
|
||||
},
|
||||
"target": {
|
||||
"x": 0,
|
||||
"y": 2.5,
|
||||
"z": 0
|
||||
},
|
||||
"zoom": 1,
|
||||
"cameraType": "perspective"
|
||||
}
|
||||
},
|
||||
"Light Config": {
|
||||
"intensity": 3
|
||||
},
|
||||
"Model Config": {
|
||||
"upDirection": "original",
|
||||
"materialMode": "original",
|
||||
"showSkeleton": false
|
||||
}
|
||||
},
|
||||
"widgets_values": [
|
||||
"DwarfWarrior_Refined_1536_00001_.glb",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"type": "Trellis2LoadMesh",
|
||||
"pos": [
|
||||
88.2344076276703,
|
||||
883.9986034541271
|
||||
],
|
||||
"size": [
|
||||
587.9375,
|
||||
83.328125
|
||||
],
|
||||
"flags": {},
|
||||
"order": 1,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"links": [
|
||||
2
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "87f48b0726b5d5e58b744bbac632331cd7a34103",
|
||||
"Node name for S&R": "Trellis2LoadMesh",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"C:\\Git\\ComfyUI\\output\\DwarfWarrior_Hy20_Hy3D_00002_.obj"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"type": "Trellis2LoadImageWithTransparency",
|
||||
"pos": [
|
||||
-1.0218170793607726,
|
||||
1192.2193858033618
|
||||
],
|
||||
"size": [
|
||||
726.8125,
|
||||
683.71875
|
||||
],
|
||||
"flags": {},
|
||||
"order": 2,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"links": []
|
||||
},
|
||||
{
|
||||
"name": "mask",
|
||||
"type": "MASK",
|
||||
"links": []
|
||||
},
|
||||
{
|
||||
"name": "image_with_alpha",
|
||||
"type": "IMAGE",
|
||||
"links": [
|
||||
23
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "e7f9b30df7a09bcedf1c955e176754c73f983254",
|
||||
"Node name for S&R": "Trellis2LoadImageWithTransparency",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"DwarfWarrior02.png",
|
||||
"image"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"type": "Trellis2MeshRefiner",
|
||||
"pos": [
|
||||
791.2868696727592,
|
||||
858.6175724018431
|
||||
],
|
||||
"size": [
|
||||
375.6875,
|
||||
700.65625
|
||||
],
|
||||
"flags": {},
|
||||
"order": 4,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "pipeline",
|
||||
"type": "TRELLIS2PIPELINE",
|
||||
"link": 1
|
||||
},
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"link": 2
|
||||
},
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"link": 24
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
25
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bvh",
|
||||
"type": "BVH",
|
||||
"links": []
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "87f48b0726b5d5e58b744bbac632331cd7a34103",
|
||||
"Node name for S&R": "Trellis2MeshRefiner",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
12345,
|
||||
"fixed",
|
||||
1024,
|
||||
12,
|
||||
6.5,
|
||||
0.2,
|
||||
4,
|
||||
12,
|
||||
3,
|
||||
0.2,
|
||||
3,
|
||||
999999,
|
||||
false,
|
||||
16,
|
||||
0.1,
|
||||
1,
|
||||
0,
|
||||
0.9,
|
||||
true,
|
||||
4
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"type": "Trellis2ExportMesh",
|
||||
"pos": [
|
||||
1236.5760403785862,
|
||||
1117.3755723277798
|
||||
],
|
||||
"size": [
|
||||
324,
|
||||
146
|
||||
],
|
||||
"flags": {},
|
||||
"order": 9,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"link": 9
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "glb_path",
|
||||
"type": "STRING",
|
||||
"links": [
|
||||
6
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "87f48b0726b5d5e58b744bbac632331cd7a34103",
|
||||
"Node name for S&R": "Trellis2ExportMesh",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"DwarfWarrior_Refined_1536",
|
||||
"glb",
|
||||
true
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"type": "Trellis2FillHolesWithMeshlib",
|
||||
"pos": [
|
||||
2050.9297608170014,
|
||||
763.9776229275544
|
||||
],
|
||||
"size": [
|
||||
249.28125,
|
||||
71.328125
|
||||
],
|
||||
"flags": {},
|
||||
"order": 7,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 21
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
22
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "holes_filled",
|
||||
"type": "INT",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a354e8c4fead5c152d58b50eae2935cb2923cd72",
|
||||
"Node name for S&R": "Trellis2FillHolesWithMeshlib",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": []
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"type": "Trellis2PreProcessImage",
|
||||
"pos": [
|
||||
300.70156840071724,
|
||||
1039.995663322853
|
||||
],
|
||||
"size": [
|
||||
281.78125,
|
||||
79.328125
|
||||
],
|
||||
"flags": {},
|
||||
"order": 3,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"link": 23
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"links": [
|
||||
24
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a354e8c4fead5c152d58b50eae2935cb2923cd72",
|
||||
"Node name for S&R": "Trellis2PreProcessImage",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
25
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"type": "Trellis2Remesh",
|
||||
"pos": [
|
||||
1224.0291703682533,
|
||||
749.6436908727221
|
||||
],
|
||||
"size": [
|
||||
316.625,
|
||||
262
|
||||
],
|
||||
"flags": {},
|
||||
"order": 5,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 25
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
26
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a354e8c4fead5c152d58b50eae2935cb2923cd72",
|
||||
"Node name for S&R": "Trellis2Remesh",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
1,
|
||||
0,
|
||||
false,
|
||||
0.03,
|
||||
"1024",
|
||||
true,
|
||||
true
|
||||
]
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
[
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
4,
|
||||
0,
|
||||
"TRELLIS2PIPELINE"
|
||||
],
|
||||
[
|
||||
2,
|
||||
3,
|
||||
0,
|
||||
4,
|
||||
1,
|
||||
"TRIMESH"
|
||||
],
|
||||
[
|
||||
6,
|
||||
6,
|
||||
0,
|
||||
7,
|
||||
2,
|
||||
"STRING"
|
||||
],
|
||||
[
|
||||
9,
|
||||
9,
|
||||
0,
|
||||
6,
|
||||
0,
|
||||
"TRIMESH"
|
||||
],
|
||||
[
|
||||
21,
|
||||
10,
|
||||
0,
|
||||
14,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
22,
|
||||
14,
|
||||
0,
|
||||
9,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
23,
|
||||
2,
|
||||
2,
|
||||
15,
|
||||
0,
|
||||
"IMAGE"
|
||||
],
|
||||
[
|
||||
24,
|
||||
15,
|
||||
0,
|
||||
4,
|
||||
2,
|
||||
"IMAGE"
|
||||
],
|
||||
[
|
||||
25,
|
||||
4,
|
||||
0,
|
||||
16,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
26,
|
||||
16,
|
||||
0,
|
||||
10,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
]
|
||||
],
|
||||
"groups": [],
|
||||
"config": {},
|
||||
"extra": {
|
||||
"workflowRendererVersion": "Vue",
|
||||
"ue_links": [],
|
||||
"ds": {
|
||||
"scale": 0.5730855330116876,
|
||||
"offset": [
|
||||
101.58649840815897,
|
||||
-273.8080548162989
|
||||
]
|
||||
},
|
||||
"links_added_by_ue": [],
|
||||
"frontendVersion": "1.37.11",
|
||||
"VHS_latentpreview": false,
|
||||
"VHS_latentpreviewrate": 0,
|
||||
"VHS_MetadataImage": true,
|
||||
"VHS_KeepIntermediate": true
|
||||
},
|
||||
"version": 0.4
|
||||
}
|
||||
@@ -1,173 +1,279 @@
|
||||
{
|
||||
"id": "9b1321c3-d206-474a-bf17-498b285fb45b",
|
||||
"id": "bf99b914-b22a-4148-ba05-a9b9c3380ed0",
|
||||
"revision": 0,
|
||||
"last_node_id": 13,
|
||||
"last_link_id": 19,
|
||||
"last_node_id": 268,
|
||||
"last_link_id": 528,
|
||||
"nodes": [
|
||||
{
|
||||
"id": 1,
|
||||
"type": "Trellis2LoadImageWithTransparency",
|
||||
"id": 39,
|
||||
"type": "Trellis2LoadModel",
|
||||
"pos": [
|
||||
628.7628375593317,
|
||||
1459.9883699049824
|
||||
-1225.323779258147,
|
||||
97.34726822503463
|
||||
],
|
||||
"size": [
|
||||
470.78125,
|
||||
499.8125
|
||||
280.05208333333337,
|
||||
226
|
||||
],
|
||||
"flags": {},
|
||||
"flags": {
|
||||
"collapsed": false
|
||||
},
|
||||
"order": 0,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"links": []
|
||||
},
|
||||
{
|
||||
"name": "mask",
|
||||
"type": "MASK",
|
||||
"links": []
|
||||
},
|
||||
{
|
||||
"name": "image_with_alpha",
|
||||
"type": "IMAGE",
|
||||
"name": "pipeline",
|
||||
"type": "TRELLIS2PIPELINE",
|
||||
"links": [
|
||||
18
|
||||
526
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "e7f9b30df7a09bcedf1c955e176754c73f983254",
|
||||
"Node name for S&R": "Trellis2LoadImageWithTransparency",
|
||||
"ver": "c5d66aa46bf1bbf903fd4fe9ff086ac774bb7e03",
|
||||
"Node name for S&R": "Trellis2LoadModel",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"Image_04298_2048.png",
|
||||
"image"
|
||||
"microsoft/TRELLIS.2-4B",
|
||||
"flash_attn",
|
||||
"cuda",
|
||||
true,
|
||||
false,
|
||||
"flex_gemm",
|
||||
"flash_attn",
|
||||
false
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"type": "Trellis2MeshTexturing",
|
||||
"id": 260,
|
||||
"type": "PrimitiveInt",
|
||||
"pos": [
|
||||
1571.8033823942308,
|
||||
1463.2804651639194
|
||||
-1888.7341838217667,
|
||||
348.47508641032636
|
||||
],
|
||||
"size": [
|
||||
376.8125,
|
||||
568.65625
|
||||
270,
|
||||
82
|
||||
],
|
||||
"flags": {},
|
||||
"order": 4,
|
||||
"order": 1,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "INT",
|
||||
"type": "INT",
|
||||
"links": [
|
||||
508
|
||||
]
|
||||
}
|
||||
],
|
||||
"title": "Texture Size",
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.19.3",
|
||||
"Node name for S&R": "PrimitiveInt"
|
||||
},
|
||||
"widgets_values": [
|
||||
2048,
|
||||
"fixed"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 194,
|
||||
"type": "Trellis2PreProcessImage",
|
||||
"pos": [
|
||||
-1208.174423642917,
|
||||
385.7358016085273
|
||||
],
|
||||
"size": [
|
||||
281.7837890625,
|
||||
106
|
||||
],
|
||||
"flags": {},
|
||||
"order": 5,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "pipeline",
|
||||
"type": "TRELLIS2PIPELINE",
|
||||
"link": 1
|
||||
},
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"link": 19
|
||||
},
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"link": 8
|
||||
"link": 344
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"links": [
|
||||
11
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "base_color_texture",
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"links": [
|
||||
9
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "metallic_roughness_texture",
|
||||
"type": "IMAGE",
|
||||
"links": [
|
||||
10
|
||||
500
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "20651320d20ed56a52168c1bd3f29d6886c4be06",
|
||||
"Node name for S&R": "Trellis2MeshTexturing",
|
||||
"widget_ue_connectable": {}
|
||||
"ver": "7ce26deae425d114f3deb78e802d6196e5987a4a",
|
||||
"Node name for S&R": "Trellis2PreProcessImage"
|
||||
},
|
||||
"widgets_values": [
|
||||
810478905,
|
||||
"randomize",
|
||||
12,
|
||||
3,
|
||||
0.2,
|
||||
3,
|
||||
1024,
|
||||
4096,
|
||||
"OPAQUE",
|
||||
true,
|
||||
0,
|
||||
0.9,
|
||||
4,
|
||||
10,
|
||||
false,
|
||||
false,
|
||||
60
|
||||
1024
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"type": "PreviewImage",
|
||||
"id": 261,
|
||||
"type": "Trellis2MeshTexturing",
|
||||
"pos": [
|
||||
1571.9379630780118,
|
||||
2084.7201337705405
|
||||
-888.2213736686743,
|
||||
116.2308532718417
|
||||
],
|
||||
"size": [
|
||||
371.03125,
|
||||
275.75
|
||||
419.15234375,
|
||||
602
|
||||
],
|
||||
"flags": {},
|
||||
"order": 6,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "images",
|
||||
"name": "pipeline",
|
||||
"type": "TRELLIS2PIPELINE",
|
||||
"link": 526
|
||||
},
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"link": 9
|
||||
"link": 500
|
||||
},
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"link": 528
|
||||
},
|
||||
{
|
||||
"name": "texture_size",
|
||||
"type": "INT",
|
||||
"widget": {
|
||||
"name": "texture_size"
|
||||
},
|
||||
"link": 508
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"links": [
|
||||
502
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "base_color_texture",
|
||||
"type": "IMAGE",
|
||||
"links": null
|
||||
},
|
||||
{
|
||||
"name": "metallic_roughness_texture",
|
||||
"type": "IMAGE",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.5.1",
|
||||
"Node name for S&R": "PreviewImage",
|
||||
"widget_ue_connectable": {}
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "9d1f80ec9b4d5c4b966e7595ee99e01a1d0c9f19",
|
||||
"Node name for S&R": "Trellis2MeshTexturing"
|
||||
},
|
||||
"widgets_values": []
|
||||
"widgets_values": [
|
||||
12345,
|
||||
"fixed",
|
||||
12,
|
||||
5,
|
||||
0.05,
|
||||
3,
|
||||
1024,
|
||||
2048,
|
||||
"OPAQUE",
|
||||
false,
|
||||
0,
|
||||
0.99,
|
||||
4,
|
||||
false,
|
||||
false,
|
||||
60,
|
||||
"heun",
|
||||
"telea",
|
||||
false,
|
||||
0,
|
||||
4,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"type": "Preview3D",
|
||||
"id": 262,
|
||||
"type": "Trellis2ExportMesh",
|
||||
"pos": [
|
||||
2434.8718248184696,
|
||||
1320.1591362771344
|
||||
-416.7657094952575,
|
||||
129.1425828262007
|
||||
],
|
||||
"size": [
|
||||
844.875,
|
||||
826.0625
|
||||
270,
|
||||
102
|
||||
],
|
||||
"flags": {},
|
||||
"order": 7,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"link": 502
|
||||
},
|
||||
{
|
||||
"name": "filename_prefix",
|
||||
"type": "STRING",
|
||||
"widget": {
|
||||
"name": "filename_prefix"
|
||||
},
|
||||
"link": 527
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "glb_path",
|
||||
"type": "STRING",
|
||||
"links": [
|
||||
503
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "relative_path",
|
||||
"type": "STRING",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "ef2286b47ce0ef0e681dffe0209aadd96de50f72",
|
||||
"Node name for S&R": "Trellis2ExportMesh"
|
||||
},
|
||||
"widgets_values": [
|
||||
"Test",
|
||||
"glb"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 263,
|
||||
"type": "Preview3D",
|
||||
"pos": [
|
||||
-442.8173364514051,
|
||||
292.64840010239254
|
||||
],
|
||||
"size": [
|
||||
893.4374971800978,
|
||||
964.1087296962992
|
||||
],
|
||||
"flags": {},
|
||||
"order": 8,
|
||||
@@ -187,20 +293,20 @@
|
||||
},
|
||||
{
|
||||
"name": "model_file",
|
||||
"type": "STRING",
|
||||
"type": "STRING,FILE_3D_GLB,FILE_3D_GLTF,FILE_3D_FBX,FILE_3D_OBJ,FILE_3D_STL,FILE_3D_USDZ,FILE_3D",
|
||||
"widget": {
|
||||
"name": "model_file"
|
||||
},
|
||||
"link": 12
|
||||
"link": 503
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.5.1",
|
||||
"ver": "0.16.4",
|
||||
"Node name for S&R": "Preview3D",
|
||||
"widget_ue_connectable": {},
|
||||
"Last Time Model File": "TexturedMesh_00001_.glb",
|
||||
"Last Time Model File": "C:/Git/ComfyUI/output/Tower_00001_.glb",
|
||||
"Resource Folder": "Git/ComfyUI/output",
|
||||
"Scene Config": {
|
||||
"showGrid": true,
|
||||
"backgroundColor": "#282828",
|
||||
@@ -212,14 +318,14 @@
|
||||
"fov": 35,
|
||||
"state": {
|
||||
"position": {
|
||||
"x": -0.1760179925373424,
|
||||
"y": 7.556479375501969,
|
||||
"z": 6.940407508674209
|
||||
"x": 7.40962749875979,
|
||||
"y": 4.597048002760341,
|
||||
"z": 6.563498084427726
|
||||
},
|
||||
"target": {
|
||||
"x": 0,
|
||||
"y": 2.5,
|
||||
"z": 0
|
||||
"x": 0.01192413674304426,
|
||||
"y": 2.400108551931419,
|
||||
"z": 0.01837531975156183
|
||||
},
|
||||
"zoom": 1,
|
||||
"cameraType": "perspective"
|
||||
@@ -227,61 +333,28 @@
|
||||
},
|
||||
"Light Config": {
|
||||
"intensity": 3
|
||||
},
|
||||
"Model Config": {
|
||||
"upDirection": "original",
|
||||
"materialMode": "original",
|
||||
"showSkeleton": false
|
||||
}
|
||||
},
|
||||
"widgets_values": [
|
||||
"TexturedMesh_00001_.glb",
|
||||
"C:/Git/ComfyUI/output/Tower_00001_.glb",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"type": "Trellis2LoadModel",
|
||||
"id": 6,
|
||||
"type": "Trellis2LoadImageWithTransparency",
|
||||
"pos": [
|
||||
1059.2676133611621,
|
||||
1150.7603358557099
|
||||
-1938.3986918443484,
|
||||
498.59522715431825
|
||||
],
|
||||
"size": [
|
||||
362.0625,
|
||||
207.328125
|
||||
],
|
||||
"flags": {},
|
||||
"order": 1,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "pipeline",
|
||||
"type": "TRELLIS2PIPELINE",
|
||||
"links": [
|
||||
1
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "c5d66aa46bf1bbf903fd4fe9ff086ac774bb7e03",
|
||||
"Node name for S&R": "Trellis2LoadModel",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"TRELLIS.2-4B",
|
||||
"flash_attn",
|
||||
"cuda",
|
||||
true,
|
||||
false
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"type": "Trellis2LoadMesh",
|
||||
"pos": [
|
||||
954.9310336408487,
|
||||
2139.1348802280054
|
||||
],
|
||||
"size": [
|
||||
514.34375,
|
||||
83.328125
|
||||
657.6262101878383,
|
||||
765.9737728955563
|
||||
],
|
||||
"flags": {},
|
||||
"order": 2,
|
||||
@@ -289,216 +362,211 @@
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"links": [
|
||||
8
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "20651320d20ed56a52168c1bd3f29d6886c4be06",
|
||||
"Node name for S&R": "Trellis2LoadMesh",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"C:\\Git\\ComfyUI\\output\\DwarfSorcerer_Hy20_Hy3D_00001_.obj"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"type": "PreviewImage",
|
||||
"pos": [
|
||||
2002.8182577158457,
|
||||
2067.2225148250195
|
||||
],
|
||||
"size": [
|
||||
379.34375,
|
||||
274.25
|
||||
],
|
||||
"flags": {},
|
||||
"order": 7,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "images",
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"link": 10
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.5.1",
|
||||
"Node name for S&R": "PreviewImage",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": []
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"type": "Trellis2ExportMesh",
|
||||
"pos": [
|
||||
2025.4304267482246,
|
||||
1460.1946946799014
|
||||
],
|
||||
"size": [
|
||||
324,
|
||||
146
|
||||
],
|
||||
"flags": {},
|
||||
"order": 5,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
"links": null
|
||||
},
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"link": 11
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
"name": "mask",
|
||||
"type": "MASK",
|
||||
"links": null
|
||||
},
|
||||
{
|
||||
"name": "glb_path",
|
||||
"type": "STRING",
|
||||
"name": "image_with_alpha",
|
||||
"type": "IMAGE",
|
||||
"links": [
|
||||
12
|
||||
344
|
||||
]
|
||||
}
|
||||
],
|
||||
"title": "Image with Transparency",
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "20651320d20ed56a52168c1bd3f29d6886c4be06",
|
||||
"Node name for S&R": "Trellis2ExportMesh",
|
||||
"ver": "e7f9b30df7a09bcedf1c955e176754c73f983254",
|
||||
"Node name for S&R": "Trellis2LoadImageWithTransparency",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"TexturedMesh",
|
||||
"glb",
|
||||
true
|
||||
"Tower04_6Views_Hy20_SourceImage_00001_.png",
|
||||
"image"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"type": "Trellis2PreProcessImage",
|
||||
"id": 219,
|
||||
"type": "PrimitiveString",
|
||||
"pos": [
|
||||
1189.9333547330602,
|
||||
1507.6866688560513
|
||||
-1879.908257415271,
|
||||
106.80098905509897
|
||||
],
|
||||
"size": [
|
||||
281.78125,
|
||||
79.328125
|
||||
270,
|
||||
58
|
||||
],
|
||||
"flags": {},
|
||||
"order": 3,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"link": 18
|
||||
}
|
||||
],
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"name": "STRING",
|
||||
"type": "STRING",
|
||||
"links": [
|
||||
19
|
||||
527
|
||||
]
|
||||
}
|
||||
],
|
||||
"title": "Name",
|
||||
"properties": {
|
||||
"widget_ue_connectable": {},
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a354e8c4fead5c152d58b50eae2935cb2923cd72",
|
||||
"Node name for S&R": "Trellis2PreProcessImage"
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.16.4",
|
||||
"Node name for S&R": "PrimitiveString"
|
||||
},
|
||||
"widgets_values": [
|
||||
25
|
||||
"Tower"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 268,
|
||||
"type": "Trellis2LoadMesh",
|
||||
"pos": [
|
||||
-1883.220870920183,
|
||||
235.75914980178976
|
||||
],
|
||||
"size": [
|
||||
270,
|
||||
58
|
||||
],
|
||||
"flags": {},
|
||||
"order": 4,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"links": [
|
||||
528
|
||||
]
|
||||
}
|
||||
],
|
||||
"title": "Mesh to Texture",
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "9d1f80ec9b4d5c4b966e7595ee99e01a1d0c9f19",
|
||||
"Node name for S&R": "Trellis2LoadMesh"
|
||||
},
|
||||
"widgets_values": [
|
||||
"C:\\Git\\ComfyUI\\output\\3D\\Tower04_6Views_Hy20\\Tower04_6Views_Hy20_WhiteMesh_HighPoly_00001_.glb"
|
||||
]
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
[
|
||||
1,
|
||||
344,
|
||||
6,
|
||||
2,
|
||||
0,
|
||||
3,
|
||||
0,
|
||||
"TRELLIS2PIPELINE"
|
||||
],
|
||||
[
|
||||
8,
|
||||
8,
|
||||
0,
|
||||
3,
|
||||
2,
|
||||
"TRIMESH"
|
||||
],
|
||||
[
|
||||
9,
|
||||
3,
|
||||
1,
|
||||
9,
|
||||
194,
|
||||
0,
|
||||
"IMAGE"
|
||||
],
|
||||
[
|
||||
10,
|
||||
3,
|
||||
2,
|
||||
10,
|
||||
500,
|
||||
194,
|
||||
0,
|
||||
261,
|
||||
1,
|
||||
"IMAGE"
|
||||
],
|
||||
[
|
||||
11,
|
||||
3,
|
||||
502,
|
||||
261,
|
||||
0,
|
||||
11,
|
||||
262,
|
||||
0,
|
||||
"TRIMESH"
|
||||
],
|
||||
[
|
||||
12,
|
||||
11,
|
||||
503,
|
||||
262,
|
||||
0,
|
||||
12,
|
||||
263,
|
||||
2,
|
||||
"STRING"
|
||||
],
|
||||
[
|
||||
18,
|
||||
1,
|
||||
2,
|
||||
13,
|
||||
508,
|
||||
260,
|
||||
0,
|
||||
"IMAGE"
|
||||
261,
|
||||
3,
|
||||
"INT"
|
||||
],
|
||||
[
|
||||
19,
|
||||
13,
|
||||
526,
|
||||
39,
|
||||
0,
|
||||
3,
|
||||
261,
|
||||
0,
|
||||
"TRELLIS2PIPELINE"
|
||||
],
|
||||
[
|
||||
527,
|
||||
219,
|
||||
0,
|
||||
262,
|
||||
1,
|
||||
"IMAGE"
|
||||
"STRING"
|
||||
],
|
||||
[
|
||||
528,
|
||||
268,
|
||||
0,
|
||||
261,
|
||||
2,
|
||||
"TRIMESH"
|
||||
]
|
||||
],
|
||||
"groups": [],
|
||||
"groups": [
|
||||
{
|
||||
"id": 2,
|
||||
"title": "Configuration",
|
||||
"bounding": [
|
||||
-1963.9391875601236,
|
||||
26.440740456795428,
|
||||
701.3865401112473,
|
||||
1252.3667177085042
|
||||
],
|
||||
"color": "#3f789e",
|
||||
"font_size": 24,
|
||||
"flags": {}
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"title": "Texturing",
|
||||
"bounding": [
|
||||
-1235.323779258147,
|
||||
23.74726822503463,
|
||||
1709.8835112121144,
|
||||
1259.8828335264047
|
||||
],
|
||||
"color": "#3f789e",
|
||||
"font_size": 24,
|
||||
"flags": {}
|
||||
}
|
||||
],
|
||||
"config": {},
|
||||
"extra": {
|
||||
"workflowRendererVersion": "Vue",
|
||||
"workflowRendererVersion": "LG",
|
||||
"ue_links": [],
|
||||
"ds": {
|
||||
"scale": 0.6303940863128702,
|
||||
"scale": 0.5709797729819551,
|
||||
"offset": [
|
||||
-519.4532595217203,
|
||||
-1005.3553299723907
|
||||
2230.433003559318,
|
||||
196.9062149677335
|
||||
]
|
||||
},
|
||||
"links_added_by_ue": [],
|
||||
"frontendVersion": "1.37.11",
|
||||
"frontendVersion": "1.42.11",
|
||||
"VHS_latentpreview": false,
|
||||
"VHS_latentpreviewrate": 0,
|
||||
"VHS_MetadataImage": true,
|
||||
+632
-443
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+1121
-1152
File diff suppressed because it is too large
Load Diff
+1187
-1103
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,588 +0,0 @@
|
||||
{
|
||||
"id": "440427ce-0c6a-4462-af51-639ed2f16dec",
|
||||
"revision": 0,
|
||||
"last_node_id": 50,
|
||||
"last_link_id": 103,
|
||||
"nodes": [
|
||||
{
|
||||
"id": 39,
|
||||
"type": "Trellis2LoadModel",
|
||||
"pos": [
|
||||
217.26891553515722,
|
||||
664.9117591988434
|
||||
],
|
||||
"size": [
|
||||
362.0625,
|
||||
207.328125
|
||||
],
|
||||
"flags": {},
|
||||
"order": 0,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "pipeline",
|
||||
"type": "TRELLIS2PIPELINE",
|
||||
"links": [
|
||||
87
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "c5d66aa46bf1bbf903fd4fe9ff086ac774bb7e03",
|
||||
"Node name for S&R": "Trellis2LoadModel",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"TRELLIS.2-4B",
|
||||
"flash_attn",
|
||||
"cuda",
|
||||
true,
|
||||
false
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"type": "Preview3D",
|
||||
"pos": [
|
||||
1211.0446353840794,
|
||||
1013.6644820212222
|
||||
],
|
||||
"size": [
|
||||
752.25,
|
||||
669.90625
|
||||
],
|
||||
"flags": {},
|
||||
"order": 9,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "camera_info",
|
||||
"shape": 7,
|
||||
"type": "LOAD3D_CAMERA",
|
||||
"link": null
|
||||
},
|
||||
{
|
||||
"name": "bg_image",
|
||||
"shape": 7,
|
||||
"type": "IMAGE",
|
||||
"link": null
|
||||
},
|
||||
{
|
||||
"name": "model_file",
|
||||
"type": "STRING",
|
||||
"widget": {
|
||||
"name": "model_file"
|
||||
},
|
||||
"link": 22
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.4.0",
|
||||
"Node name for S&R": "Preview3D",
|
||||
"widget_ue_connectable": {},
|
||||
"Last Time Model File": "Cyborg_NoTexture_00001_.glb",
|
||||
"Scene Config": {
|
||||
"showGrid": true,
|
||||
"backgroundColor": "#282828",
|
||||
"backgroundImage": "",
|
||||
"backgroundRenderMode": "tiled"
|
||||
},
|
||||
"Camera Config": {
|
||||
"cameraType": "perspective",
|
||||
"fov": 35,
|
||||
"state": {
|
||||
"position": {
|
||||
"x": 1.5940872974312115,
|
||||
"y": 8.300916247283151,
|
||||
"z": 9.675558475883504
|
||||
},
|
||||
"target": {
|
||||
"x": 0,
|
||||
"y": 2.5,
|
||||
"z": 0
|
||||
},
|
||||
"zoom": 1,
|
||||
"cameraType": "perspective"
|
||||
}
|
||||
},
|
||||
"Light Config": {
|
||||
"intensity": 3
|
||||
}
|
||||
},
|
||||
"widgets_values": [
|
||||
"Cyborg_NoTexture_00001_.glb",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 43,
|
||||
"type": "Trellis2MeshWithVoxelToTrimesh",
|
||||
"pos": [
|
||||
2052.534856345812,
|
||||
858.9148979525742
|
||||
],
|
||||
"size": [
|
||||
403.8125,
|
||||
82
|
||||
],
|
||||
"flags": {},
|
||||
"order": 7,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 99
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"links": [
|
||||
84
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a28d6cf93b0cf24aa9e7d3dccfd14f406227fbd0",
|
||||
"Node name for S&R": "Trellis2MeshWithVoxelToTrimesh",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"90 degrees"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"type": "Trellis2LoadImageWithTransparency",
|
||||
"pos": [
|
||||
155.19860981422082,
|
||||
1115.0081906575829
|
||||
],
|
||||
"size": [
|
||||
454.3125,
|
||||
436.03125
|
||||
],
|
||||
"flags": {},
|
||||
"order": 1,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"links": null
|
||||
},
|
||||
{
|
||||
"name": "mask",
|
||||
"type": "MASK",
|
||||
"links": null
|
||||
},
|
||||
{
|
||||
"name": "image_with_alpha",
|
||||
"type": "IMAGE",
|
||||
"links": [
|
||||
100
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "e7f9b30df7a09bcedf1c955e176754c73f983254",
|
||||
"Node name for S&R": "Trellis2LoadImageWithTransparency",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"Image_4096_00003_.png",
|
||||
"image"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 45,
|
||||
"type": "Trellis2MeshWithVoxelAdvancedGenerator",
|
||||
"pos": [
|
||||
676.0217411697733,
|
||||
666.413786132539
|
||||
],
|
||||
"size": [
|
||||
495.8125,
|
||||
866
|
||||
],
|
||||
"flags": {},
|
||||
"order": 3,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "pipeline",
|
||||
"type": "TRELLIS2PIPELINE",
|
||||
"link": 87
|
||||
},
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"link": 101
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
102
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bvh",
|
||||
"type": "BVH",
|
||||
"links": []
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a28d6cf93b0cf24aa9e7d3dccfd14f406227fbd0",
|
||||
"Node name for S&R": "Trellis2MeshWithVoxelAdvancedGenerator",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
363877961,
|
||||
"randomize",
|
||||
"1024_cascade",
|
||||
12,
|
||||
6.5,
|
||||
0.2,
|
||||
4,
|
||||
12,
|
||||
6.5,
|
||||
0.2,
|
||||
4,
|
||||
12,
|
||||
3,
|
||||
0.2,
|
||||
3,
|
||||
999999,
|
||||
4,
|
||||
32,
|
||||
false,
|
||||
0.1,
|
||||
1,
|
||||
0.1,
|
||||
1,
|
||||
0,
|
||||
0.9,
|
||||
true
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"type": "Trellis2ExportMesh",
|
||||
"pos": [
|
||||
2074.10746221146,
|
||||
1068.7461290181727
|
||||
],
|
||||
"size": [
|
||||
324,
|
||||
146
|
||||
],
|
||||
"flags": {},
|
||||
"order": 8,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"link": 84
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "glb_path",
|
||||
"type": "STRING",
|
||||
"links": [
|
||||
22
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "e7f9b30df7a09bcedf1c955e176754c73f983254",
|
||||
"Node name for S&R": "Trellis2ExportMesh",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"Helmet",
|
||||
"glb",
|
||||
true
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 42,
|
||||
"type": "Trellis2SimplifyMesh",
|
||||
"pos": [
|
||||
1627.8357847395862,
|
||||
662.87588748443
|
||||
],
|
||||
"size": [
|
||||
324,
|
||||
114
|
||||
],
|
||||
"flags": {},
|
||||
"order": 5,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 103
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
98
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a28d6cf93b0cf24aa9e7d3dccfd14f406227fbd0",
|
||||
"Node name for S&R": "Trellis2SimplifyMesh",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
2000000,
|
||||
"Cumesh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 48,
|
||||
"type": "Trellis2FillHolesWithMeshlib",
|
||||
"pos": [
|
||||
2049.694526173582,
|
||||
665.7413910219719
|
||||
],
|
||||
"size": [
|
||||
249.28125,
|
||||
71.328125
|
||||
],
|
||||
"flags": {},
|
||||
"order": 6,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 98
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
99
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "holes_filled",
|
||||
"type": "INT",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a354e8c4fead5c152d58b50eae2935cb2923cd72",
|
||||
"Node name for S&R": "Trellis2FillHolesWithMeshlib",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": []
|
||||
},
|
||||
{
|
||||
"id": 49,
|
||||
"type": "Trellis2PreProcessImage",
|
||||
"pos": [
|
||||
280.1418643269891,
|
||||
950.2196621439567
|
||||
],
|
||||
"size": [
|
||||
281.78125,
|
||||
79.328125
|
||||
],
|
||||
"flags": {},
|
||||
"order": 2,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"link": 100
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"links": [
|
||||
101
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a354e8c4fead5c152d58b50eae2935cb2923cd72",
|
||||
"Node name for S&R": "Trellis2PreProcessImage",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
25
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 50,
|
||||
"type": "Trellis2Remesh",
|
||||
"pos": [
|
||||
1233.6238854002822,
|
||||
663.1067078802098
|
||||
],
|
||||
"size": [
|
||||
316.625,
|
||||
262
|
||||
],
|
||||
"flags": {},
|
||||
"order": 4,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 102
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
103
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"widget_ue_connectable": {},
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a354e8c4fead5c152d58b50eae2935cb2923cd72",
|
||||
"Node name for S&R": "Trellis2Remesh"
|
||||
},
|
||||
"widgets_values": [
|
||||
1,
|
||||
0,
|
||||
false,
|
||||
0.03,
|
||||
"1024",
|
||||
true,
|
||||
true
|
||||
]
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
[
|
||||
22,
|
||||
19,
|
||||
0,
|
||||
10,
|
||||
2,
|
||||
"STRING"
|
||||
],
|
||||
[
|
||||
84,
|
||||
43,
|
||||
0,
|
||||
19,
|
||||
0,
|
||||
"TRIMESH"
|
||||
],
|
||||
[
|
||||
87,
|
||||
39,
|
||||
0,
|
||||
45,
|
||||
0,
|
||||
"TRELLIS2PIPELINE"
|
||||
],
|
||||
[
|
||||
98,
|
||||
42,
|
||||
0,
|
||||
48,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
99,
|
||||
48,
|
||||
0,
|
||||
43,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
100,
|
||||
6,
|
||||
2,
|
||||
49,
|
||||
0,
|
||||
"IMAGE"
|
||||
],
|
||||
[
|
||||
101,
|
||||
49,
|
||||
0,
|
||||
45,
|
||||
1,
|
||||
"IMAGE"
|
||||
],
|
||||
[
|
||||
102,
|
||||
45,
|
||||
0,
|
||||
50,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
103,
|
||||
50,
|
||||
0,
|
||||
42,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
]
|
||||
],
|
||||
"groups": [],
|
||||
"config": {},
|
||||
"extra": {
|
||||
"workflowRendererVersion": "Vue",
|
||||
"ue_links": [],
|
||||
"ds": {
|
||||
"scale": 0.6303940863128564,
|
||||
"offset": [
|
||||
17.026760146572748,
|
||||
-331.5589586642717
|
||||
]
|
||||
},
|
||||
"links_added_by_ue": [],
|
||||
"frontendVersion": "1.37.11",
|
||||
"VHS_latentpreview": false,
|
||||
"VHS_latentpreviewrate": 0,
|
||||
"VHS_MetadataImage": true,
|
||||
"VHS_KeepIntermediate": true
|
||||
},
|
||||
"version": 0.4
|
||||
}
|
||||
@@ -1,573 +0,0 @@
|
||||
{
|
||||
"id": "440427ce-0c6a-4462-af51-639ed2f16dec",
|
||||
"revision": 0,
|
||||
"last_node_id": 49,
|
||||
"last_link_id": 99,
|
||||
"nodes": [
|
||||
{
|
||||
"id": 10,
|
||||
"type": "Preview3D",
|
||||
"pos": [
|
||||
661.5378666719415,
|
||||
1029.2740203054677
|
||||
],
|
||||
"size": [
|
||||
752.25,
|
||||
699.90625
|
||||
],
|
||||
"flags": {},
|
||||
"order": 9,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "camera_info",
|
||||
"shape": 7,
|
||||
"type": "LOAD3D_CAMERA",
|
||||
"link": null
|
||||
},
|
||||
{
|
||||
"name": "bg_image",
|
||||
"shape": 7,
|
||||
"type": "IMAGE",
|
||||
"link": null
|
||||
},
|
||||
{
|
||||
"name": "model_file",
|
||||
"type": "STRING",
|
||||
"widget": {
|
||||
"name": "model_file"
|
||||
},
|
||||
"link": 22
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.4.0",
|
||||
"Node name for S&R": "Preview3D",
|
||||
"widget_ue_connectable": {},
|
||||
"Last Time Model File": "OrcShaman_OnlyMesh_00003_.glb",
|
||||
"Scene Config": {
|
||||
"showGrid": true,
|
||||
"backgroundColor": "#282828",
|
||||
"backgroundImage": "",
|
||||
"backgroundRenderMode": "tiled"
|
||||
},
|
||||
"Camera Config": {
|
||||
"cameraType": "perspective",
|
||||
"fov": 35,
|
||||
"state": {
|
||||
"position": {
|
||||
"x": -0.19116400345772733,
|
||||
"y": 4.145193779904209,
|
||||
"z": 8.909632339388065
|
||||
},
|
||||
"target": {
|
||||
"x": 0,
|
||||
"y": 2.5,
|
||||
"z": 0
|
||||
},
|
||||
"zoom": 1,
|
||||
"cameraType": "perspective"
|
||||
}
|
||||
},
|
||||
"Light Config": {
|
||||
"intensity": 3
|
||||
}
|
||||
},
|
||||
"widgets_values": [
|
||||
"OrcShaman_OnlyMesh_00003_.glb",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"type": "Trellis2LoadImageWithTransparency",
|
||||
"pos": [
|
||||
89.7989861858199,
|
||||
1036.3030919628422
|
||||
],
|
||||
"size": [
|
||||
454.3125,
|
||||
466.03125
|
||||
],
|
||||
"flags": {},
|
||||
"order": 0,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"links": null
|
||||
},
|
||||
{
|
||||
"name": "mask",
|
||||
"type": "MASK",
|
||||
"links": null
|
||||
},
|
||||
{
|
||||
"name": "image_with_alpha",
|
||||
"type": "IMAGE",
|
||||
"links": [
|
||||
96
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "e7f9b30df7a09bcedf1c955e176754c73f983254",
|
||||
"Node name for S&R": "Trellis2LoadImageWithTransparency",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"a_stylized_orc_sorcerer_3d_game_asset.png",
|
||||
"image"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"type": "Trellis2LoadModel",
|
||||
"pos": [
|
||||
112.25445464990881,
|
||||
579.7661445482282
|
||||
],
|
||||
"size": [
|
||||
362.0625,
|
||||
207.328125
|
||||
],
|
||||
"flags": {},
|
||||
"order": 1,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "pipeline",
|
||||
"type": "TRELLIS2PIPELINE",
|
||||
"links": [
|
||||
79
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "c5d66aa46bf1bbf903fd4fe9ff086ac774bb7e03",
|
||||
"Node name for S&R": "Trellis2LoadModel",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"TRELLIS.2-4B",
|
||||
"flash_attn",
|
||||
"cuda",
|
||||
true,
|
||||
false
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 43,
|
||||
"type": "Trellis2MeshWithVoxelToTrimesh",
|
||||
"pos": [
|
||||
1583.6373860127533,
|
||||
962.7784209219674
|
||||
],
|
||||
"size": [
|
||||
347.28125,
|
||||
82
|
||||
],
|
||||
"flags": {},
|
||||
"order": 7,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 95
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"links": [
|
||||
84
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a28d6cf93b0cf24aa9e7d3dccfd14f406227fbd0",
|
||||
"Node name for S&R": "Trellis2MeshWithVoxelToTrimesh",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"90 degrees"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"type": "Trellis2ExportMesh",
|
||||
"pos": [
|
||||
1576.5891438694878,
|
||||
1164.1187920527402
|
||||
],
|
||||
"size": [
|
||||
324,
|
||||
146
|
||||
],
|
||||
"flags": {},
|
||||
"order": 8,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"link": 84
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "glb_path",
|
||||
"type": "STRING",
|
||||
"links": [
|
||||
22
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "e7f9b30df7a09bcedf1c955e176754c73f983254",
|
||||
"Node name for S&R": "Trellis2ExportMesh",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"OnlyMesh",
|
||||
"glb",
|
||||
true
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 42,
|
||||
"type": "Trellis2SimplifyMesh",
|
||||
"pos": [
|
||||
1596.7449927354012,
|
||||
588.463447863252
|
||||
],
|
||||
"size": [
|
||||
324,
|
||||
114
|
||||
],
|
||||
"flags": {},
|
||||
"order": 5,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 99
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
94
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a28d6cf93b0cf24aa9e7d3dccfd14f406227fbd0",
|
||||
"Node name for S&R": "Trellis2SimplifyMesh",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
2000000,
|
||||
"Cumesh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 41,
|
||||
"type": "Trellis2MeshWithVoxelGenerator",
|
||||
"pos": [
|
||||
617.6070474606216,
|
||||
585.0312918725468
|
||||
],
|
||||
"size": [
|
||||
410.71875,
|
||||
386
|
||||
],
|
||||
"flags": {},
|
||||
"order": 3,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "pipeline",
|
||||
"type": "TRELLIS2PIPELINE",
|
||||
"link": 79
|
||||
},
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"link": 97
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
98
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bvh",
|
||||
"type": "BVH",
|
||||
"links": []
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a28d6cf93b0cf24aa9e7d3dccfd14f406227fbd0",
|
||||
"Node name for S&R": "Trellis2MeshWithVoxelGenerator",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
1751130007,
|
||||
"fixed",
|
||||
"1024_cascade",
|
||||
12,
|
||||
12,
|
||||
12,
|
||||
999999,
|
||||
4,
|
||||
32,
|
||||
false,
|
||||
true
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 47,
|
||||
"type": "Trellis2FillHolesWithMeshlib",
|
||||
"pos": [
|
||||
1621.231560866816,
|
||||
803.5976226088751
|
||||
],
|
||||
"size": [
|
||||
249.28125,
|
||||
71.328125
|
||||
],
|
||||
"flags": {},
|
||||
"order": 6,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 94
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
95
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "holes_filled",
|
||||
"type": "INT",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a354e8c4fead5c152d58b50eae2935cb2923cd72",
|
||||
"Node name for S&R": "Trellis2FillHolesWithMeshlib",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": []
|
||||
},
|
||||
{
|
||||
"id": 48,
|
||||
"type": "Trellis2PreProcessImage",
|
||||
"pos": [
|
||||
189.61982603636818,
|
||||
863.9035513602834
|
||||
],
|
||||
"size": [
|
||||
281.78125,
|
||||
79.328125
|
||||
],
|
||||
"flags": {},
|
||||
"order": 2,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"link": 96
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"links": [
|
||||
97
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a354e8c4fead5c152d58b50eae2935cb2923cd72",
|
||||
"Node name for S&R": "Trellis2PreProcessImage",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
0
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 49,
|
||||
"type": "Trellis2Remesh",
|
||||
"pos": [
|
||||
1091.952337866758,
|
||||
586.1658651292023
|
||||
],
|
||||
"size": [
|
||||
316.625,
|
||||
262
|
||||
],
|
||||
"flags": {},
|
||||
"order": 4,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 98
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
99
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"widget_ue_connectable": {},
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a354e8c4fead5c152d58b50eae2935cb2923cd72",
|
||||
"Node name for S&R": "Trellis2Remesh"
|
||||
},
|
||||
"widgets_values": [
|
||||
1,
|
||||
0,
|
||||
false,
|
||||
0.03,
|
||||
"1024",
|
||||
true,
|
||||
true
|
||||
]
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
[
|
||||
22,
|
||||
19,
|
||||
0,
|
||||
10,
|
||||
2,
|
||||
"STRING"
|
||||
],
|
||||
[
|
||||
79,
|
||||
39,
|
||||
0,
|
||||
41,
|
||||
0,
|
||||
"TRELLIS2PIPELINE"
|
||||
],
|
||||
[
|
||||
84,
|
||||
43,
|
||||
0,
|
||||
19,
|
||||
0,
|
||||
"TRIMESH"
|
||||
],
|
||||
[
|
||||
94,
|
||||
42,
|
||||
0,
|
||||
47,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
95,
|
||||
47,
|
||||
0,
|
||||
43,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
96,
|
||||
6,
|
||||
2,
|
||||
48,
|
||||
0,
|
||||
"IMAGE"
|
||||
],
|
||||
[
|
||||
97,
|
||||
48,
|
||||
0,
|
||||
41,
|
||||
1,
|
||||
"IMAGE"
|
||||
],
|
||||
[
|
||||
98,
|
||||
41,
|
||||
0,
|
||||
49,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
99,
|
||||
49,
|
||||
0,
|
||||
42,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
]
|
||||
],
|
||||
"groups": [],
|
||||
"config": {},
|
||||
"extra": {
|
||||
"workflowRendererVersion": "Vue",
|
||||
"ue_links": [],
|
||||
"ds": {
|
||||
"scale": 0.5730855330116875,
|
||||
"offset": [
|
||||
116.72837260075312,
|
||||
-328.2481181238407
|
||||
]
|
||||
},
|
||||
"links_added_by_ue": [],
|
||||
"frontendVersion": "1.37.11",
|
||||
"VHS_latentpreview": false,
|
||||
"VHS_latentpreviewrate": 0,
|
||||
"VHS_MetadataImage": true,
|
||||
"VHS_KeepIntermediate": true
|
||||
},
|
||||
"version": 0.4
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
+3194
-4079
File diff suppressed because it is too large
Load Diff
+8032
-8125
File diff suppressed because it is too large
Load Diff
+12942
-6218
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
-9296
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,810 +0,0 @@
|
||||
{
|
||||
"id": "cd6e2e00-83cc-4795-abf1-09b46428c270",
|
||||
"revision": 0,
|
||||
"last_node_id": 233,
|
||||
"last_link_id": 480,
|
||||
"nodes": [
|
||||
{
|
||||
"id": 226,
|
||||
"type": "Trellis2LoadMesh",
|
||||
"pos": [
|
||||
-385.0735510204828,
|
||||
158.88137472879367
|
||||
],
|
||||
"size": [
|
||||
270,
|
||||
58
|
||||
],
|
||||
"flags": {},
|
||||
"order": 0,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"links": [
|
||||
460
|
||||
]
|
||||
}
|
||||
],
|
||||
"title": "Original Mesh",
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a5242473f68fe91d5ef0b188f8658ae0da540237",
|
||||
"Node name for S&R": "Trellis2LoadMesh"
|
||||
},
|
||||
"widgets_values": [
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 119,
|
||||
"type": "Trellis2PreProcessImage",
|
||||
"pos": [
|
||||
432.4981118440155,
|
||||
-182.40504275448276
|
||||
],
|
||||
"size": [
|
||||
281.8229166666667,
|
||||
106
|
||||
],
|
||||
"flags": {},
|
||||
"order": 5,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"link": 241
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"links": [
|
||||
461
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "15854282a73cf231b81d52ada22e652f414a078b",
|
||||
"Node name for S&R": "Trellis2PreProcessImage",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
10,
|
||||
false,
|
||||
1024
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"type": "Trellis2LoadModel",
|
||||
"pos": [
|
||||
418.8462464575081,
|
||||
-492.4195525023097
|
||||
],
|
||||
"size": [
|
||||
301.71875,
|
||||
202
|
||||
],
|
||||
"flags": {},
|
||||
"order": 1,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "pipeline",
|
||||
"type": "TRELLIS2PIPELINE",
|
||||
"links": [
|
||||
469
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "c5d66aa46bf1bbf903fd4fe9ff086ac774bb7e03",
|
||||
"Node name for S&R": "Trellis2LoadModel",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"microsoft/TRELLIS.2-4B",
|
||||
"flash_attn",
|
||||
"cuda",
|
||||
true,
|
||||
false,
|
||||
"flex_gemm",
|
||||
"flash_attn"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 227,
|
||||
"type": "Trellis2ReconstructMeshWithQuad",
|
||||
"pos": [
|
||||
1190.2002753188488,
|
||||
-496.8180011267565
|
||||
],
|
||||
"size": [
|
||||
331.5878996659427,
|
||||
142.11360851901668
|
||||
],
|
||||
"flags": {},
|
||||
"order": 8,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 470
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
472
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "d4d66cfc9f1ce5b1c3b9a2e504ee4b24ffad48a5",
|
||||
"Node name for S&R": "Trellis2ReconstructMeshWithQuad",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
1,
|
||||
1024,
|
||||
true,
|
||||
true
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 231,
|
||||
"type": "Trellis2FillHolesWithCuMesh",
|
||||
"pos": [
|
||||
1203.103220151927,
|
||||
-621.2330460050034
|
||||
],
|
||||
"size": [
|
||||
312.4361328125,
|
||||
58
|
||||
],
|
||||
"flags": {},
|
||||
"order": 7,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 474
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
470
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "dc66f263e832b103a81a021bf6cd53eec8ff28af",
|
||||
"Node name for S&R": "Trellis2FillHolesWithCuMesh"
|
||||
},
|
||||
"widgets_values": [
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 229,
|
||||
"type": "Trellis2SimplifyMesh",
|
||||
"pos": [
|
||||
1194.8431366936325,
|
||||
-292.14794928709534
|
||||
],
|
||||
"size": [
|
||||
270,
|
||||
82
|
||||
],
|
||||
"flags": {},
|
||||
"order": 9,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 472
|
||||
},
|
||||
{
|
||||
"name": "target_face_num",
|
||||
"type": "INT",
|
||||
"widget": {
|
||||
"name": "target_face_num"
|
||||
},
|
||||
"link": 475
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
471
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "5d4c1474ceb477f40bbd6d437f7da90f3d6d9229",
|
||||
"Node name for S&R": "Trellis2SimplifyMesh"
|
||||
},
|
||||
"widgets_values": [
|
||||
500000,
|
||||
"Cumesh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 228,
|
||||
"type": "Trellis2FillHolesWithMeshlib",
|
||||
"pos": [
|
||||
1198.1583617137858,
|
||||
-151.8665797237854
|
||||
],
|
||||
"size": [
|
||||
249.284765625,
|
||||
46
|
||||
],
|
||||
"flags": {},
|
||||
"order": 10,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 471
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
476
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "holes_filled",
|
||||
"type": "INT",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "e8098f5641702e74133c2dea0b45a13a3ab19985",
|
||||
"Node name for S&R": "Trellis2FillHolesWithMeshlib"
|
||||
},
|
||||
"widgets_values": []
|
||||
},
|
||||
{
|
||||
"id": 232,
|
||||
"type": "Trellis2UnWrapAndRasterizer",
|
||||
"pos": [
|
||||
1195.383895062337,
|
||||
-50.23863923208595
|
||||
],
|
||||
"size": [
|
||||
419.15234375,
|
||||
314
|
||||
],
|
||||
"flags": {},
|
||||
"order": 11,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 476
|
||||
},
|
||||
{
|
||||
"name": "bvh",
|
||||
"type": "BVH",
|
||||
"link": 477
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"links": [
|
||||
478
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "base_color_texture",
|
||||
"type": "IMAGE",
|
||||
"links": null
|
||||
},
|
||||
{
|
||||
"name": "metallic_roughness_texture",
|
||||
"type": "IMAGE",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a5242473f68fe91d5ef0b188f8658ae0da540237",
|
||||
"Node name for S&R": "Trellis2UnWrapAndRasterizer"
|
||||
},
|
||||
"widgets_values": [
|
||||
60,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
2048,
|
||||
"OPAQUE",
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
"telea"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 233,
|
||||
"type": "Trellis2ExportMesh",
|
||||
"pos": [
|
||||
1672.6947901006665,
|
||||
-49.057670650420995
|
||||
],
|
||||
"size": [
|
||||
270,
|
||||
102
|
||||
],
|
||||
"flags": {},
|
||||
"order": 12,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"link": 478
|
||||
},
|
||||
{
|
||||
"name": "filename_prefix",
|
||||
"type": "STRING",
|
||||
"widget": {
|
||||
"name": "filename_prefix"
|
||||
},
|
||||
"link": 479
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "glb_path",
|
||||
"type": "STRING",
|
||||
"links": [
|
||||
480
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "relative_path",
|
||||
"type": "STRING",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a5242473f68fe91d5ef0b188f8658ae0da540237",
|
||||
"Node name for S&R": "Trellis2ExportMesh"
|
||||
},
|
||||
"widgets_values": [
|
||||
"3D/Trellis2",
|
||||
"glb"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 202,
|
||||
"type": "Preview3D",
|
||||
"pos": [
|
||||
369.6388214873717,
|
||||
332.92876516342716
|
||||
],
|
||||
"size": [
|
||||
868.8731050199159,
|
||||
920.1382602693357
|
||||
],
|
||||
"flags": {},
|
||||
"order": 13,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "camera_info",
|
||||
"shape": 7,
|
||||
"type": "LOAD3D_CAMERA",
|
||||
"link": null
|
||||
},
|
||||
{
|
||||
"name": "bg_image",
|
||||
"shape": 7,
|
||||
"type": "IMAGE",
|
||||
"link": null
|
||||
},
|
||||
{
|
||||
"name": "model_file",
|
||||
"type": "STRING,FILE_3D_GLB,FILE_3D_GLTF,FILE_3D_FBX,FILE_3D_OBJ,FILE_3D_STL,FILE_3D_USDZ,FILE_3D",
|
||||
"widget": {
|
||||
"name": "model_file"
|
||||
},
|
||||
"link": 480
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.18.1",
|
||||
"Node name for S&R": "Preview3D"
|
||||
},
|
||||
"widgets_values": [
|
||||
"",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 69,
|
||||
"type": "Trellis2LoadImageWithTransparency",
|
||||
"pos": [
|
||||
-383.4145219550909,
|
||||
310.9862093076388
|
||||
],
|
||||
"size": [
|
||||
717.521556382955,
|
||||
915.5313594325766
|
||||
],
|
||||
"flags": {},
|
||||
"order": 2,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"links": []
|
||||
},
|
||||
{
|
||||
"name": "mask",
|
||||
"type": "MASK",
|
||||
"links": []
|
||||
},
|
||||
{
|
||||
"name": "image_with_alpha",
|
||||
"type": "IMAGE",
|
||||
"links": [
|
||||
241
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "e7f9b30df7a09bcedf1c955e176754c73f983254",
|
||||
"Node name for S&R": "Trellis2LoadImageWithTransparency",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"Image_1024_00101_.png",
|
||||
"image"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 203,
|
||||
"type": "PrimitiveInt",
|
||||
"pos": [
|
||||
-379.85391723715725,
|
||||
7.869022281792564
|
||||
],
|
||||
"size": [
|
||||
270,
|
||||
82
|
||||
],
|
||||
"flags": {},
|
||||
"order": 3,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "INT",
|
||||
"type": "INT",
|
||||
"links": [
|
||||
475
|
||||
]
|
||||
}
|
||||
],
|
||||
"title": "Target Face Number",
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.18.1",
|
||||
"Node name for S&R": "PrimitiveInt"
|
||||
},
|
||||
"widgets_values": [
|
||||
300000,
|
||||
"fixed"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 204,
|
||||
"type": "PrimitiveString",
|
||||
"pos": [
|
||||
-388.041436029903,
|
||||
-125.57562894305721
|
||||
],
|
||||
"size": [
|
||||
270,
|
||||
58
|
||||
],
|
||||
"flags": {},
|
||||
"order": 4,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "STRING",
|
||||
"type": "STRING",
|
||||
"links": [
|
||||
479
|
||||
]
|
||||
}
|
||||
],
|
||||
"title": "Name",
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.18.1",
|
||||
"Node name for S&R": "PrimitiveString"
|
||||
},
|
||||
"widgets_values": [
|
||||
"Tank"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 225,
|
||||
"type": "Trellis2MeshRefiner",
|
||||
"pos": [
|
||||
753.899038005419,
|
||||
-389.13958558695583
|
||||
],
|
||||
"size": [
|
||||
340.390625,
|
||||
578
|
||||
],
|
||||
"flags": {},
|
||||
"order": 6,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "pipeline",
|
||||
"type": "TRELLIS2PIPELINE",
|
||||
"link": 469
|
||||
},
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"link": 460
|
||||
},
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"link": 461
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
474
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bvh",
|
||||
"type": "BVH",
|
||||
"links": [
|
||||
477
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a5242473f68fe91d5ef0b188f8658ae0da540237",
|
||||
"Node name for S&R": "Trellis2MeshRefiner"
|
||||
},
|
||||
"widgets_values": [
|
||||
12345,
|
||||
"fixed",
|
||||
1024,
|
||||
12,
|
||||
7.5,
|
||||
0.01,
|
||||
3,
|
||||
12,
|
||||
3,
|
||||
0.01,
|
||||
3,
|
||||
999999,
|
||||
true,
|
||||
16,
|
||||
0.1,
|
||||
1,
|
||||
0,
|
||||
0.9,
|
||||
true,
|
||||
1,
|
||||
"heun"
|
||||
]
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
[
|
||||
241,
|
||||
69,
|
||||
2,
|
||||
119,
|
||||
0,
|
||||
"IMAGE"
|
||||
],
|
||||
[
|
||||
460,
|
||||
226,
|
||||
0,
|
||||
225,
|
||||
1,
|
||||
"TRIMESH"
|
||||
],
|
||||
[
|
||||
461,
|
||||
119,
|
||||
0,
|
||||
225,
|
||||
2,
|
||||
"IMAGE"
|
||||
],
|
||||
[
|
||||
469,
|
||||
39,
|
||||
0,
|
||||
225,
|
||||
0,
|
||||
"TRELLIS2PIPELINE"
|
||||
],
|
||||
[
|
||||
470,
|
||||
231,
|
||||
0,
|
||||
227,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
471,
|
||||
229,
|
||||
0,
|
||||
228,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
472,
|
||||
227,
|
||||
0,
|
||||
229,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
474,
|
||||
225,
|
||||
0,
|
||||
231,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
475,
|
||||
203,
|
||||
0,
|
||||
229,
|
||||
1,
|
||||
"INT"
|
||||
],
|
||||
[
|
||||
476,
|
||||
228,
|
||||
0,
|
||||
232,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
477,
|
||||
225,
|
||||
1,
|
||||
232,
|
||||
1,
|
||||
"BVH"
|
||||
],
|
||||
[
|
||||
478,
|
||||
232,
|
||||
0,
|
||||
233,
|
||||
0,
|
||||
"TRIMESH"
|
||||
],
|
||||
[
|
||||
479,
|
||||
204,
|
||||
0,
|
||||
233,
|
||||
1,
|
||||
"STRING"
|
||||
],
|
||||
[
|
||||
480,
|
||||
233,
|
||||
0,
|
||||
202,
|
||||
2,
|
||||
"STRING"
|
||||
]
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"id": 1,
|
||||
"title": "Configuration",
|
||||
"bounding": [
|
||||
-414.5659226642583,
|
||||
-213.34811694305725,
|
||||
764.6855244821979,
|
||||
1466.2928336195214
|
||||
],
|
||||
"color": "#3f789e",
|
||||
"font_size": 24,
|
||||
"flags": {}
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"title": "Generation",
|
||||
"bounding": [
|
||||
374.5341225783577,
|
||||
-726.2357215927766,
|
||||
1820.8266085195564,
|
||||
1004.7525102622308
|
||||
],
|
||||
"color": "#3f789e",
|
||||
"font_size": 24,
|
||||
"flags": {}
|
||||
}
|
||||
],
|
||||
"config": {},
|
||||
"extra": {
|
||||
"workflowRendererVersion": "LG",
|
||||
"ue_links": [],
|
||||
"ds": {
|
||||
"scale": 0.6830134553650716,
|
||||
"offset": [
|
||||
111.46261093344825,
|
||||
859.8232012529436
|
||||
]
|
||||
},
|
||||
"links_added_by_ue": [],
|
||||
"frontendVersion": "1.42.8",
|
||||
"VHS_latentpreview": false,
|
||||
"VHS_latentpreviewrate": 0,
|
||||
"VHS_MetadataImage": true,
|
||||
"VHS_KeepIntermediate": true
|
||||
},
|
||||
"version": 0.4
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,754 +0,0 @@
|
||||
{
|
||||
"id": "cd6e2e00-83cc-4795-abf1-09b46428c270",
|
||||
"revision": 0,
|
||||
"last_node_id": 205,
|
||||
"last_link_id": 413,
|
||||
"nodes": [
|
||||
{
|
||||
"id": 69,
|
||||
"type": "Trellis2LoadImageWithTransparency",
|
||||
"pos": [
|
||||
-377.72410571388025,
|
||||
328.4870830026766
|
||||
],
|
||||
"size": [
|
||||
717.521556382955,
|
||||
915.5313594325766
|
||||
],
|
||||
"flags": {},
|
||||
"order": 0,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"links": []
|
||||
},
|
||||
{
|
||||
"name": "mask",
|
||||
"type": "MASK",
|
||||
"links": []
|
||||
},
|
||||
{
|
||||
"name": "image_with_alpha",
|
||||
"type": "IMAGE",
|
||||
"links": [
|
||||
241
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "e7f9b30df7a09bcedf1c955e176754c73f983254",
|
||||
"Node name for S&R": "Trellis2LoadImageWithTransparency",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"Image_1024_00101_.png",
|
||||
"image"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 119,
|
||||
"type": "Trellis2PreProcessImage",
|
||||
"pos": [
|
||||
398.0246741688026,
|
||||
149.83708875416676
|
||||
],
|
||||
"size": [
|
||||
281.8229166666667,
|
||||
106
|
||||
],
|
||||
"flags": {},
|
||||
"order": 4,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"link": 241
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"links": [
|
||||
391
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "15854282a73cf231b81d52ada22e652f414a078b",
|
||||
"Node name for S&R": "Trellis2PreProcessImage",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
10,
|
||||
false,
|
||||
1024
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"type": "Trellis2LoadModel",
|
||||
"pos": [
|
||||
388.892170207283,
|
||||
-228.80616406738957
|
||||
],
|
||||
"size": [
|
||||
301.71875,
|
||||
202
|
||||
],
|
||||
"flags": {},
|
||||
"order": 1,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "pipeline",
|
||||
"type": "TRELLIS2PIPELINE",
|
||||
"links": [
|
||||
390
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "c5d66aa46bf1bbf903fd4fe9ff086ac774bb7e03",
|
||||
"Node name for S&R": "Trellis2LoadModel",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
"microsoft/TRELLIS.2-4B",
|
||||
"flash_attn",
|
||||
"cuda",
|
||||
true,
|
||||
false,
|
||||
"flex_gemm",
|
||||
"flash_attn"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 196,
|
||||
"type": "Trellis2FillHolesWithCuMesh",
|
||||
"pos": [
|
||||
1117.157533597802,
|
||||
-362.86738879994687
|
||||
],
|
||||
"size": [
|
||||
312.4361328125,
|
||||
58
|
||||
],
|
||||
"flags": {},
|
||||
"order": 6,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 396
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
392
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "dc66f263e832b103a81a021bf6cd53eec8ff28af",
|
||||
"Node name for S&R": "Trellis2FillHolesWithCuMesh"
|
||||
},
|
||||
"widgets_values": [
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 197,
|
||||
"type": "Trellis2ReconstructMeshWithQuad",
|
||||
"pos": [
|
||||
1124.8153675662377,
|
||||
-239.75157745064854
|
||||
],
|
||||
"size": [
|
||||
331.5878996659427,
|
||||
142.11360851901668
|
||||
],
|
||||
"flags": {},
|
||||
"order": 7,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 392
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
393
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "d4d66cfc9f1ce5b1c3b9a2e504ee4b24ffad48a5",
|
||||
"Node name for S&R": "Trellis2ReconstructMeshWithQuad",
|
||||
"widget_ue_connectable": {}
|
||||
},
|
||||
"widgets_values": [
|
||||
1,
|
||||
1024,
|
||||
true,
|
||||
true
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 198,
|
||||
"type": "Trellis2SimplifyMesh",
|
||||
"pos": [
|
||||
1134.132576655357,
|
||||
-43.60066335397867
|
||||
],
|
||||
"size": [
|
||||
270,
|
||||
82
|
||||
],
|
||||
"flags": {},
|
||||
"order": 8,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 393
|
||||
},
|
||||
{
|
||||
"name": "target_face_num",
|
||||
"type": "INT",
|
||||
"widget": {
|
||||
"name": "target_face_num"
|
||||
},
|
||||
"link": 409
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
394
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "5d4c1474ceb477f40bbd6d437f7da90f3d6d9229",
|
||||
"Node name for S&R": "Trellis2SimplifyMesh"
|
||||
},
|
||||
"widgets_values": [
|
||||
500000,
|
||||
"Cumesh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 203,
|
||||
"type": "PrimitiveInt",
|
||||
"pos": [
|
||||
-373.0898096413628,
|
||||
163.12227474974895
|
||||
],
|
||||
"size": [
|
||||
270,
|
||||
82
|
||||
],
|
||||
"flags": {},
|
||||
"order": 2,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "INT",
|
||||
"type": "INT",
|
||||
"links": [
|
||||
409
|
||||
]
|
||||
}
|
||||
],
|
||||
"title": "Target Face Number",
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.18.1",
|
||||
"Node name for S&R": "PrimitiveInt"
|
||||
},
|
||||
"widgets_values": [
|
||||
300000,
|
||||
"fixed"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 204,
|
||||
"type": "PrimitiveString",
|
||||
"pos": [
|
||||
-368.2858630795249,
|
||||
34.401714106564214
|
||||
],
|
||||
"size": [
|
||||
270,
|
||||
58
|
||||
],
|
||||
"flags": {},
|
||||
"order": 3,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "STRING",
|
||||
"type": "STRING",
|
||||
"links": [
|
||||
410
|
||||
]
|
||||
}
|
||||
],
|
||||
"title": "Name",
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.18.1",
|
||||
"Node name for S&R": "PrimitiveString"
|
||||
},
|
||||
"widgets_values": [
|
||||
"Tank"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 202,
|
||||
"type": "Preview3D",
|
||||
"pos": [
|
||||
376.48890096546415,
|
||||
331.2515281089069
|
||||
],
|
||||
"size": [
|
||||
868.8731050199159,
|
||||
920.1382602693357
|
||||
],
|
||||
"flags": {},
|
||||
"order": 12,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "camera_info",
|
||||
"shape": 7,
|
||||
"type": "LOAD3D_CAMERA",
|
||||
"link": null
|
||||
},
|
||||
{
|
||||
"name": "bg_image",
|
||||
"shape": 7,
|
||||
"type": "IMAGE",
|
||||
"link": null
|
||||
},
|
||||
{
|
||||
"name": "model_file",
|
||||
"type": "STRING,FILE_3D_GLB,FILE_3D_GLTF,FILE_3D_FBX,FILE_3D_OBJ,FILE_3D_STL,FILE_3D_USDZ,FILE_3D",
|
||||
"widget": {
|
||||
"name": "model_file"
|
||||
},
|
||||
"link": 398
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.18.1",
|
||||
"Node name for S&R": "Preview3D"
|
||||
},
|
||||
"widgets_values": [
|
||||
"",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 199,
|
||||
"type": "Trellis2FillHolesWithMeshlib",
|
||||
"pos": [
|
||||
1132.506716841996,
|
||||
89.90828212755481
|
||||
],
|
||||
"size": [
|
||||
249.284765625,
|
||||
46
|
||||
],
|
||||
"flags": {},
|
||||
"order": 9,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 394
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
411
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "holes_filled",
|
||||
"type": "INT",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "e8098f5641702e74133c2dea0b45a13a3ab19985",
|
||||
"Node name for S&R": "Trellis2FillHolesWithMeshlib"
|
||||
},
|
||||
"widgets_values": []
|
||||
},
|
||||
{
|
||||
"id": 195,
|
||||
"type": "Trellis2MeshWithVoxelGenerator",
|
||||
"pos": [
|
||||
746.136770520365,
|
||||
-107.27192057879526
|
||||
],
|
||||
"size": [
|
||||
342.2818359375,
|
||||
342
|
||||
],
|
||||
"flags": {},
|
||||
"order": 5,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "pipeline",
|
||||
"type": "TRELLIS2PIPELINE",
|
||||
"link": 390
|
||||
},
|
||||
{
|
||||
"name": "image",
|
||||
"type": "IMAGE",
|
||||
"link": 391
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"links": [
|
||||
396
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bvh",
|
||||
"type": "BVH",
|
||||
"links": [
|
||||
412
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a5242473f68fe91d5ef0b188f8658ae0da540237",
|
||||
"Node name for S&R": "Trellis2MeshWithVoxelGenerator"
|
||||
},
|
||||
"widgets_values": [
|
||||
12345,
|
||||
"fixed",
|
||||
"1024_cascade",
|
||||
12,
|
||||
12,
|
||||
12,
|
||||
999999,
|
||||
1,
|
||||
32,
|
||||
true,
|
||||
true,
|
||||
"euler"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 205,
|
||||
"type": "Trellis2UnWrapAndRasterizer",
|
||||
"pos": [
|
||||
1509.48883255403,
|
||||
-231.18851954550428
|
||||
],
|
||||
"size": [
|
||||
419.15234375,
|
||||
314
|
||||
],
|
||||
"flags": {},
|
||||
"order": 10,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "mesh",
|
||||
"type": "MESHWITHVOXEL",
|
||||
"link": 411
|
||||
},
|
||||
{
|
||||
"name": "bvh",
|
||||
"type": "BVH",
|
||||
"link": 412
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"links": [
|
||||
413
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "base_color_texture",
|
||||
"type": "IMAGE",
|
||||
"links": null
|
||||
},
|
||||
{
|
||||
"name": "metallic_roughness_texture",
|
||||
"type": "IMAGE",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a5242473f68fe91d5ef0b188f8658ae0da540237",
|
||||
"Node name for S&R": "Trellis2UnWrapAndRasterizer"
|
||||
},
|
||||
"widgets_values": [
|
||||
60,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
2048,
|
||||
"OPAQUE",
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
"telea"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 201,
|
||||
"type": "Trellis2ExportMesh",
|
||||
"pos": [
|
||||
1517.3851156356834,
|
||||
145.96275340737535
|
||||
],
|
||||
"size": [
|
||||
270,
|
||||
102
|
||||
],
|
||||
"flags": {},
|
||||
"order": 11,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "trimesh",
|
||||
"type": "TRIMESH",
|
||||
"link": 413
|
||||
},
|
||||
{
|
||||
"name": "filename_prefix",
|
||||
"type": "STRING",
|
||||
"widget": {
|
||||
"name": "filename_prefix"
|
||||
},
|
||||
"link": 410
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "glb_path",
|
||||
"type": "STRING",
|
||||
"links": [
|
||||
398
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "relative_path",
|
||||
"type": "STRING",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"aux_id": "visualbruno/ComfyUI-Trellis2",
|
||||
"ver": "a5242473f68fe91d5ef0b188f8658ae0da540237",
|
||||
"Node name for S&R": "Trellis2ExportMesh"
|
||||
},
|
||||
"widgets_values": [
|
||||
"3D/Trellis2",
|
||||
"glb"
|
||||
]
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
[
|
||||
241,
|
||||
69,
|
||||
2,
|
||||
119,
|
||||
0,
|
||||
"IMAGE"
|
||||
],
|
||||
[
|
||||
390,
|
||||
39,
|
||||
0,
|
||||
195,
|
||||
0,
|
||||
"TRELLIS2PIPELINE"
|
||||
],
|
||||
[
|
||||
391,
|
||||
119,
|
||||
0,
|
||||
195,
|
||||
1,
|
||||
"IMAGE"
|
||||
],
|
||||
[
|
||||
392,
|
||||
196,
|
||||
0,
|
||||
197,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
393,
|
||||
197,
|
||||
0,
|
||||
198,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
394,
|
||||
198,
|
||||
0,
|
||||
199,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
396,
|
||||
195,
|
||||
0,
|
||||
196,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
398,
|
||||
201,
|
||||
0,
|
||||
202,
|
||||
2,
|
||||
"STRING"
|
||||
],
|
||||
[
|
||||
409,
|
||||
203,
|
||||
0,
|
||||
198,
|
||||
1,
|
||||
"INT"
|
||||
],
|
||||
[
|
||||
410,
|
||||
204,
|
||||
0,
|
||||
201,
|
||||
1,
|
||||
"STRING"
|
||||
],
|
||||
[
|
||||
411,
|
||||
199,
|
||||
0,
|
||||
205,
|
||||
0,
|
||||
"MESHWITHVOXEL"
|
||||
],
|
||||
[
|
||||
412,
|
||||
195,
|
||||
1,
|
||||
205,
|
||||
1,
|
||||
"BVH"
|
||||
],
|
||||
[
|
||||
413,
|
||||
205,
|
||||
0,
|
||||
201,
|
||||
0,
|
||||
"TRIMESH"
|
||||
]
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"id": 1,
|
||||
"title": "Configuration",
|
||||
"bounding": [
|
||||
-387.72410571388025,
|
||||
-53.37077389343578,
|
||||
737.521556382955,
|
||||
1307.389216328689
|
||||
],
|
||||
"color": "#3f789e",
|
||||
"font_size": 24,
|
||||
"flags": {}
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"title": "Generation",
|
||||
"bounding": [
|
||||
378.892170207283,
|
||||
-436.46738879994683,
|
||||
1706.6665797550602,
|
||||
727.1063315541132
|
||||
],
|
||||
"color": "#3f789e",
|
||||
"font_size": 24,
|
||||
"flags": {}
|
||||
}
|
||||
],
|
||||
"config": {},
|
||||
"extra": {
|
||||
"workflowRendererVersion": "LG",
|
||||
"ue_links": [],
|
||||
"ds": {
|
||||
"scale": 0.5644739300537773,
|
||||
"offset": [
|
||||
683.341395587175,
|
||||
735.5254552429528
|
||||
]
|
||||
},
|
||||
"links_added_by_ue": [],
|
||||
"frontendVersion": "1.42.8",
|
||||
"VHS_latentpreview": false,
|
||||
"VHS_latentpreviewrate": 0,
|
||||
"VHS_MetadataImage": true,
|
||||
"VHS_KeepIntermediate": true
|
||||
},
|
||||
"version": 0.4
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,6 @@
|
||||
import os
|
||||
import torch
|
||||
import torch.nn as nn
|
||||
import torch.nn.functional as F
|
||||
import torchvision.transforms as transforms
|
||||
from PIL import Image, ImageSequence, ImageOps
|
||||
@@ -5609,7 +5610,816 @@ class Trellis2MaxTokensCalculator:
|
||||
print(f"Error, cannot get VRAM size : {e}")
|
||||
max_tokens = default_max_tokens
|
||||
|
||||
return (max_tokens,)
|
||||
return (max_tokens,)
|
||||
|
||||
class Trellis2ImageCondMultiViewGenerator:
|
||||
@classmethod
|
||||
def INPUT_TYPES(s):
|
||||
return {
|
||||
"required": {
|
||||
"pipeline": ("TRELLIS2PIPELINE",),
|
||||
"front_image": ("IMAGE",)
|
||||
},
|
||||
"optional": {
|
||||
"back_image": ("IMAGE",),
|
||||
"left_image": ("IMAGE",),
|
||||
"right_image": ("IMAGE",),
|
||||
},
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("IMAGE_CONDS", "IMAGE_CONDS", "VIEWS_LIST", "TRELLIS2PIPELINE",)
|
||||
RETURN_NAMES = ("conds_512", "conds_1024", "views_list", "pipeline",)
|
||||
FUNCTION = "process"
|
||||
CATEGORY = "Trellis2Wrapper"
|
||||
OUTPUT_NODE = True
|
||||
|
||||
def process(self,
|
||||
pipeline,
|
||||
front_image,
|
||||
back_image = None,
|
||||
left_image = None,
|
||||
right_image = None):
|
||||
|
||||
front_pil = tensor2pil(front_image)
|
||||
|
||||
# Convert optional view image tensors to PIL
|
||||
back_pil = tensor2pil(back_image) if back_image is not None else None
|
||||
left_pil = tensor2pil(left_image) if left_image is not None else None
|
||||
right_pil = tensor2pil(right_image) if right_image is not None else None
|
||||
|
||||
# Collect views
|
||||
views_dict = {'front': front_pil}
|
||||
if back_pil is not None: views_dict['back'] = back_pil
|
||||
if left_pil is not None: views_dict['left'] = left_pil
|
||||
if right_pil is not None: views_dict['right'] = right_pil
|
||||
|
||||
views_list = list(views_dict.keys())
|
||||
|
||||
# Calculate conditioning per view
|
||||
conds_512 = {}
|
||||
conds_1024 = {}
|
||||
|
||||
pipeline.load_image_cond_model()
|
||||
|
||||
for v, img in views_dict.items():
|
||||
c512 = pipeline.get_cond([img], 512)
|
||||
c1024 = pipeline.get_cond([img], 1024)
|
||||
conds_512[v] = c512
|
||||
conds_1024[v] = c1024
|
||||
|
||||
if not pipeline.keep_models_loaded:
|
||||
pipeline.unload_image_cond_model()
|
||||
|
||||
return (conds_512, conds_1024, views_list, pipeline,)
|
||||
|
||||
class Trellis2SparseMultiViewGenerator:
|
||||
@classmethod
|
||||
def INPUT_TYPES(s):
|
||||
return {
|
||||
"required": {
|
||||
"pipeline": ("TRELLIS2PIPELINE",),
|
||||
"image_conds": ("IMAGE_CONDS",),
|
||||
"views_list": ("VIEWS_LIST",),
|
||||
"seed": ("INT", {"default": 0, "min": 0, "max": 0x7fffffff}),
|
||||
"sparse_structure_steps": ("INT",{"default":12, "min":1, "max":100},),
|
||||
"sparse_structure_guidance_strength": ("FLOAT",{"default":6.50,"min":0.00,"max":99.99,"step":0.01}),
|
||||
"sparse_structure_guidance_rescale": ("FLOAT",{"default":0.05,"min":0.00,"max":1.00,"step":0.01}),
|
||||
"sparse_structure_rescale_t": ("FLOAT",{"default":4.00,"min":0.00,"max":9.99,"step":0.01}),
|
||||
"sparse_structure_sampler": (["euler", "heun", "rk4", "rk5"], {"default": "euler"}),
|
||||
"sparse_structure_resolution": ("INT", {"default":32,"min":32,"max":128,"step":4}),
|
||||
"sparse_structure_guidance_interval_start": ("FLOAT",{"default":0.10,"min":0.00,"max":1.00,"step":0.01}),
|
||||
"sparse_structure_guidance_interval_end": ("FLOAT",{"default":1.00,"min":0.00,"max":1.00,"step":0.01}),
|
||||
"fill_holes":("BOOLEAN",{"default":True}),
|
||||
"hole_iterations": ("INT",{"default":1,"min":1,"max":9,"step":1}),
|
||||
"verbose": ("BOOLEAN",{"default":False}),
|
||||
"dino_lock": ("FLOAT",{"default":0.00,"min":0.00,"max":1.00,"step":0.01}),
|
||||
"dino_substeps": ("INT",{"default":4,"min":1,"max":99,"step":1}),
|
||||
"hole_fill_algorithm": (["morphological_closing","flood_fill","remove_small_holes"],{"default":"flood_fill"}),
|
||||
"dino_foundation_cap": ("FLOAT",{"default":1.00,"min":0.01,"max":1.00,"step":0.01}),
|
||||
"keep_only_shell": ("BOOLEAN",{"default":True}),
|
||||
"front_axis": (["z", "x"], {"default": "z"}),
|
||||
"blend_temperature": ("FLOAT", {"default": 1.0, "min": 0.1, "max": 10.0, "step": 0.1}),
|
||||
},
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("COORDS", "INT", "VIEWS_LIST", "TRELLIS2PIPELINE",)
|
||||
RETURN_NAMES = ("coords", "sparse_structure_resolution", "views_list", "pipeline",)
|
||||
FUNCTION = "process"
|
||||
CATEGORY = "Trellis2Wrapper"
|
||||
OUTPUT_NODE = True
|
||||
|
||||
def process(self, pipeline, image_conds, views_list, seed,
|
||||
# sparse
|
||||
sparse_structure_steps,
|
||||
sparse_structure_guidance_strength,
|
||||
sparse_structure_guidance_rescale,
|
||||
sparse_structure_rescale_t,
|
||||
sparse_structure_sampler,
|
||||
sparse_structure_resolution,
|
||||
sparse_structure_guidance_interval_start,
|
||||
sparse_structure_guidance_interval_end,
|
||||
fill_holes,
|
||||
hole_iterations,
|
||||
verbose,
|
||||
dino_lock,
|
||||
dino_substeps,
|
||||
hole_fill_algorithm,
|
||||
dino_foundation_cap,
|
||||
keep_only_shell,
|
||||
front_axis,
|
||||
blend_temperature
|
||||
):
|
||||
|
||||
self.seed_all(seed)
|
||||
|
||||
sparse_structure_guidance_interval = [sparse_structure_guidance_interval_start,sparse_structure_guidance_interval_end]
|
||||
sparse_structure_sampler_params = {"steps":sparse_structure_steps,"guidance_strength":sparse_structure_guidance_strength,"guidance_rescale":sparse_structure_guidance_rescale,"guidance_interval":sparse_structure_guidance_interval,"rescale_t":sparse_structure_rescale_t}
|
||||
|
||||
sparse_sampler_prefix = pipeline.GetSamplerName(sparse_structure_sampler)
|
||||
pipeline.load_sparse_structure_model()
|
||||
|
||||
if pipeline.low_vram:
|
||||
for v in image_conds:
|
||||
image_conds[v] = pipeline._cond_to(image_conds[v], pipeline.device)
|
||||
|
||||
# Sample sparse structure latent
|
||||
flow_model = pipeline.models['sparse_structure_flow_model']
|
||||
reso = flow_model.resolution
|
||||
in_channels = flow_model.in_channels
|
||||
noise = torch.randn(1, in_channels, reso, reso, reso).to(pipeline.device)
|
||||
|
||||
sampler_class = getattr(samplers, f"Flow{sparse_sampler_prefix}MultiViewGuidanceIntervalSampler", samplers.FlowEulerMultiViewGuidanceIntervalSampler)
|
||||
sampler = sampler_class(
|
||||
sigma_min=1e-5,
|
||||
resolution=flow_model.resolution if hasattr(flow_model, 'resolution') else flow_model[0].resolution
|
||||
)
|
||||
|
||||
sparse_structure_sampler_params = {**pipeline.sparse_structure_sampler_params, **sparse_structure_sampler_params}
|
||||
|
||||
if pipeline.low_vram:
|
||||
flow_model.to(pipeline.device)
|
||||
|
||||
z_s = sampler.sample(
|
||||
flow_model,
|
||||
noise,
|
||||
conds=image_conds,
|
||||
**sparse_structure_sampler_params,
|
||||
views=views_list,
|
||||
front_axis=front_axis,
|
||||
blend_temperature=blend_temperature,
|
||||
verbose=verbose,
|
||||
dino_lock=dino_lock,
|
||||
dino_substeps=dino_substeps,
|
||||
dino_foundation_cap=dino_foundation_cap,
|
||||
tqdm_desc="Sampling sparse structure (MultiView)",
|
||||
).samples
|
||||
|
||||
if pipeline.low_vram:
|
||||
flow_model.cpu()
|
||||
pipeline._cleanup_cuda()
|
||||
|
||||
# Decode sparse structure latent
|
||||
decoder = pipeline.models['sparse_structure_decoder']
|
||||
if pipeline.low_vram:
|
||||
decoder.to(pipeline.device)
|
||||
|
||||
# Standard decoding logic from sample_sparse_structure
|
||||
decoded = decoder(z_s) > 0
|
||||
|
||||
if pipeline.low_vram:
|
||||
decoder.cpu()
|
||||
pipeline._cleanup_cuda()
|
||||
|
||||
# if resolution != decoded.shape[2]:
|
||||
# ratio = decoded.shape[2] // resolution
|
||||
# decoded = torch.nn.functional.max_pool3d(decoded.float(), ratio, ratio, 0) > 0.5
|
||||
if sparse_structure_resolution != decoded.shape[2]:
|
||||
if sparse_structure_resolution < decoded.shape[2]:
|
||||
ratio = decoded.shape[2] // sparse_structure_resolution
|
||||
decoded = torch.nn.functional.max_pool3d(decoded.float(), ratio, ratio, 0) > 0.5
|
||||
else:
|
||||
decoded = torch.nn.functional.interpolate(decoded.float(), size=(sparse_structure_resolution, sparse_structure_resolution, sparse_structure_resolution), mode='nearest') > 0.5
|
||||
|
||||
# Optionally fill holes in the sparse voxel grid using the selected algorithm
|
||||
if fill_holes:
|
||||
hole_structure = 1
|
||||
try:
|
||||
from scipy.ndimage import binary_closing, label, binary_fill_holes
|
||||
arr = decoded.cpu().numpy()
|
||||
if arr.ndim == 5:
|
||||
arr = arr[:, 0]
|
||||
closed = np.zeros_like(arr)
|
||||
for b in range(arr.shape[0]):
|
||||
filled = arr[b].astype(np.bool_)
|
||||
inv = ~filled
|
||||
labeled, num_features = label(inv)
|
||||
border_mask = np.zeros_like(inv)
|
||||
border_mask[0,:,:] = border_mask[-1,:,:] = 1
|
||||
border_mask[:,0,:] = border_mask[:,-1,:] = 1
|
||||
border_mask[:,:,0] = border_mask[:,:,-1] = 1
|
||||
border_labels = np.unique(labeled[border_mask==1])
|
||||
holes = np.isin(labeled, border_labels, invert=True) & (labeled > 0)
|
||||
n_holes = np.unique(labeled[holes]).size
|
||||
print(f"[Sparse HoleFill] Batch {b}: Found {n_holes} holes before filling.")
|
||||
if hole_fill_algorithm == "morphological_closing":
|
||||
closed[b] = binary_closing(arr[b], structure=np.ones((hole_structure,)*3), iterations=hole_iterations)
|
||||
elif hole_fill_algorithm == "flood_fill":
|
||||
# Robust structure-preserving hole filling:
|
||||
# 1. Morphological closing to connect small gaps
|
||||
# 2. Fill internal holes
|
||||
# 3. Keep only the largest connected component
|
||||
from scipy.ndimage import binary_closing, label, binary_fill_holes
|
||||
# Step 1: Morphological closing (small structure, 1 iter)
|
||||
closed1 = binary_closing(arr[b], structure=np.ones((hole_structure,)*3), iterations=hole_iterations)
|
||||
# Step 2: Fill internal holes
|
||||
filled = binary_fill_holes(closed1)
|
||||
# Step 3: Keep only the largest connected component
|
||||
labeled, num = label(filled)
|
||||
if num > 0:
|
||||
sizes = np.bincount(labeled.ravel())
|
||||
sizes[0] = 0 # background
|
||||
largest = sizes.argmax()
|
||||
closed[b] = (labeled == largest)
|
||||
else:
|
||||
closed[b] = filled
|
||||
elif hole_fill_algorithm == "remove_small_holes":
|
||||
# Remove small holes by area (2D slices)
|
||||
from skimage.morphology import remove_small_holes
|
||||
# Apply per-slice (z axis)
|
||||
temp = np.copy(arr[b])
|
||||
for z in range(temp.shape[0]):
|
||||
temp[z] = remove_small_holes(temp[z].astype(bool), area_threshold=hole_structure**2)
|
||||
closed[b] = temp
|
||||
else:
|
||||
print(f"[Sparse HoleFill] Unknown algorithm: {hole_fill_algorithm}, skipping.")
|
||||
closed[b] = arr[b]
|
||||
# Count holes after filling
|
||||
filled2 = closed[b].astype(np.bool_)
|
||||
inv2 = ~filled2
|
||||
labeled2, num_features2 = label(inv2)
|
||||
border_labels2 = np.unique(labeled2[border_mask==1])
|
||||
holes2 = np.isin(labeled2, border_labels2, invert=True) & (labeled2 > 0)
|
||||
n_holes2 = np.unique(labeled2[holes2]).size
|
||||
print(f"[Sparse HoleFill] Batch {b}: {n_holes-n_holes2} holes filled, {n_holes2} remain after filling.")
|
||||
|
||||
# Optionally remove deeply interior voxels, keeping surface and near-surface structure
|
||||
if keep_only_shell:
|
||||
from scipy.ndimage import binary_erosion
|
||||
|
||||
filled = closed[b].astype(np.bool_)
|
||||
before_count = int(filled.sum())
|
||||
struct = np.ones((3, 3, 3), dtype=bool)
|
||||
# Erode twice: only voxels surviving 2 erosion passes are >=2 layers deep
|
||||
# This preserves thin structures (e.g. necks with 3x3 cross-section)
|
||||
eroded = binary_erosion(filled, structure=struct, border_value=0)
|
||||
eroded = binary_erosion(eroded, structure=struct, border_value=0)
|
||||
# Remove only deeply interior voxels (>=2 layers from any surface)
|
||||
shell = filled & ~eroded
|
||||
closed[b] = shell
|
||||
after_count = int(shell.sum())
|
||||
if verbose:
|
||||
print(f"[Sparse Shell] Batch {b}: {before_count} -> {after_count} voxels (removed {before_count - after_count} deeply interior)")
|
||||
|
||||
decoded = torch.from_numpy(closed).to(decoded.device)
|
||||
|
||||
|
||||
# Debug: print tensor info before extracting coordinates
|
||||
if verbose:
|
||||
print(f"[Sparse HoleFill] decoded shape: {decoded.shape}, dtype: {decoded.dtype}, device: {decoded.device}")
|
||||
print(f"[Sparse HoleFill] decoded min: {decoded.min().item()}, max: {decoded.max().item()}, unique: {torch.unique(decoded)}")
|
||||
# Safety: ensure tensor is contiguous and on CPU for argwhere
|
||||
decoded = decoded.contiguous().cpu()
|
||||
|
||||
except ImportError:
|
||||
print("[Warning] scipy or skimage not installed, skipping hole filling.")
|
||||
except Exception as e:
|
||||
print(f"[Warning] Hole filling failed: {e}")
|
||||
|
||||
try:
|
||||
coords = torch.argwhere(decoded)[:, [0, 1, 2, 3]].int()
|
||||
except Exception as e:
|
||||
print(f"[Sparse HoleFill] Error in torch.argwhere: {e}")
|
||||
raise
|
||||
|
||||
if verbose:
|
||||
print(f"[Sparse HoleFill] coords shape: {coords.shape}, min: {coords.min(dim=0).values.tolist() if coords.numel()>0 else 'empty'}, max: {coords.max(dim=0).values.tolist() if coords.numel()>0 else 'empty'}")
|
||||
|
||||
if coords.numel() == 0:
|
||||
raise RuntimeError("No voxels remain after hole filling/shell extraction. The mask is empty. Adjust your input, mask, or hole filling parameters.")
|
||||
else:
|
||||
coords = torch.argwhere(decoded)[:, [0, 2, 3, 4]].int()
|
||||
|
||||
coords = coords.cpu()
|
||||
|
||||
del decoded
|
||||
del z_s
|
||||
if pipeline.low_vram:
|
||||
for v in image_conds:
|
||||
image_conds[v] = pipeline._cond_cpu(image_conds[v])
|
||||
pipeline._cleanup_cuda()
|
||||
|
||||
return (coords, sparse_structure_resolution, views_list, pipeline,)
|
||||
|
||||
def seed_all(self, seed: int = 0):
|
||||
import random
|
||||
"""
|
||||
Set random seeds of all components.
|
||||
"""
|
||||
random.seed(seed)
|
||||
np.random.seed(seed)
|
||||
torch.manual_seed(seed)
|
||||
torch.cuda.manual_seed_all(seed)
|
||||
|
||||
class Trellis2ShapeMultiViewGenerator:
|
||||
@classmethod
|
||||
def INPUT_TYPES(s):
|
||||
return {
|
||||
"required": {
|
||||
"pipeline": ("TRELLIS2PIPELINE",),
|
||||
"image_conds": ("IMAGE_CONDS",),
|
||||
"views_list": ("VIEWS_LIST",),
|
||||
"coords": ("COORDS",),
|
||||
"resolution": ([512,1024],{"default":1024}),
|
||||
"shape_steps": ("INT",{"default":12, "min":1, "max":100},),
|
||||
"shape_guidance_strength": ("FLOAT",{"default":6.50,"min":0.00,"max":99.99,"step":0.01}),
|
||||
"shape_guidance_rescale": ("FLOAT",{"default":0.05,"min":0.00,"max":1.00,"step":0.01}),
|
||||
"shape_rescale_t": ("FLOAT",{"default":4.00,"min":0.00,"max":9.99,"step":0.01}),
|
||||
"shape_sampler": (["euler", "heun", "rk4", "rk5"], {"default": "euler"}),
|
||||
"shape_guidance_interval_start": ("FLOAT",{"default":0.10,"min":0.00,"max":1.00,"step":0.01}),
|
||||
"shape_guidance_interval_end": ("FLOAT",{"default":1.00,"min":0.00,"max":1.00,"step":0.01}),
|
||||
"verbose": ("BOOLEAN",{"default":False}),
|
||||
"dino_lock": ("FLOAT",{"default":0.00,"min":0.00,"max":1.00,"step":0.01}),
|
||||
"dino_substeps": ("INT",{"default":4,"min":1,"max":99,"step":1}),
|
||||
"dino_foundation_cap": ("FLOAT",{"default":1.00,"min":0.01,"max":1.00,"step":0.01}),
|
||||
"front_axis": (["z", "x"], {"default": "z"}),
|
||||
"blend_temperature": ("FLOAT", {"default": 1.0, "min": 0.1, "max": 10.0, "step": 0.1}),
|
||||
},
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("SHAPE_SLAT", "INT", "VIEWS_LIST", "TRELLIS2PIPELINE",)
|
||||
RETURN_NAMES = ("shape_slat", "resolution", "views_list", "pipeline",)
|
||||
FUNCTION = "process"
|
||||
CATEGORY = "Trellis2Wrapper"
|
||||
OUTPUT_NODE = True
|
||||
|
||||
def process(self, pipeline, image_conds, views_list, coords, resolution,
|
||||
# shape
|
||||
shape_steps,
|
||||
shape_guidance_strength,
|
||||
shape_guidance_rescale,
|
||||
shape_rescale_t,
|
||||
shape_sampler,
|
||||
shape_guidance_interval_start,
|
||||
shape_guidance_interval_end,
|
||||
verbose,
|
||||
dino_lock,
|
||||
dino_substeps,
|
||||
dino_foundation_cap,
|
||||
front_axis,
|
||||
blend_temperature
|
||||
):
|
||||
|
||||
shape_guidance_interval = [shape_guidance_interval_start, shape_guidance_interval_end]
|
||||
shape_slat_sampler_params = {"steps":shape_steps,"guidance_strength":shape_guidance_strength,"guidance_rescale":shape_guidance_rescale,"guidance_interval":shape_guidance_interval,"rescale_t":shape_rescale_t}
|
||||
|
||||
if resolution == 512:
|
||||
pipeline.load_shape_slat_flow_model_512()
|
||||
shape_slat = self.sample(
|
||||
pipeline, shape_sampler,
|
||||
image_conds, views_list,
|
||||
pipeline.models['shape_slat_flow_model_512'],
|
||||
coords, shape_slat_sampler_params,
|
||||
front_axis=front_axis,
|
||||
blend_temperature=blend_temperature,
|
||||
verbose=verbose,
|
||||
dino_lock=dino_lock,
|
||||
dino_substeps=dino_substeps,
|
||||
dino_foundation_cap=dino_foundation_cap
|
||||
)
|
||||
if not pipeline.keep_models_loaded:
|
||||
pipeline.unload_shape_slat_flow_model_512()
|
||||
|
||||
elif resolution == 1024:
|
||||
pipeline.load_shape_slat_flow_model_1024()
|
||||
shape_slat = self.sample(
|
||||
pipeline, shape_sampler,
|
||||
image_conds, views_list,
|
||||
pipeline.models['shape_slat_flow_model_1024'],
|
||||
coords, shape_slat_sampler_params,
|
||||
front_axis=front_axis,
|
||||
blend_temperature=blend_temperature,
|
||||
verbose=verbose,
|
||||
dino_lock=dino_lock,
|
||||
dino_substeps=dino_substeps,
|
||||
dino_foundation_cap=dino_foundation_cap
|
||||
)
|
||||
if not pipeline.keep_models_loaded:
|
||||
pipeline.unload_shape_slat_flow_model_1024()
|
||||
|
||||
return (shape_slat, resolution, views_list, pipeline,)
|
||||
|
||||
def sample(
|
||||
self,
|
||||
pipeline,
|
||||
shape_sampler,
|
||||
conds: dict,
|
||||
views: list,
|
||||
flow_model,
|
||||
coords: torch.Tensor,
|
||||
sampler_params: dict = {},
|
||||
front_axis: str = 'z',
|
||||
blend_temperature: float = 2.0,
|
||||
verbose: bool = False,
|
||||
dino_lock: float = 0.00,
|
||||
dino_substeps: int = 4,
|
||||
dino_foundation_cap: float = 0.92
|
||||
) -> SparseTensor:
|
||||
if pipeline.low_vram:
|
||||
for v in conds:
|
||||
conds[v] = pipeline._cond_to(conds[v], pipeline.device)
|
||||
|
||||
coords_dev = coords.to(pipeline.device)
|
||||
noise = SparseTensor(
|
||||
feats=torch.randn(coords.shape[0], flow_model.in_channels, device=pipeline.device),
|
||||
coords=coords_dev,
|
||||
)
|
||||
|
||||
# sampler = samplers.FlowEulerMultiViewGuidanceIntervalSampler(
|
||||
# sigma_min=1e-5,
|
||||
# resolution=flow_model.resolution,
|
||||
# )
|
||||
sampler_class = getattr(samplers, f"Flow{shape_sampler}MultiViewGuidanceIntervalSampler", samplers.FlowEulerMultiViewGuidanceIntervalSampler)
|
||||
sampler = sampler_class(
|
||||
sigma_min=1e-5,
|
||||
resolution=flow_model.resolution if hasattr(flow_model, 'resolution') else flow_model[0].resolution
|
||||
)
|
||||
|
||||
sampler_params = {**pipeline.shape_slat_sampler_params, **sampler_params}
|
||||
|
||||
if pipeline.low_vram:
|
||||
flow_model.to(pipeline.device)
|
||||
|
||||
slat = sampler.sample(
|
||||
flow_model,
|
||||
noise,
|
||||
conds=conds,
|
||||
**sampler_params,
|
||||
views=views,
|
||||
front_axis=front_axis,
|
||||
blend_temperature=blend_temperature,
|
||||
verbose=verbose,
|
||||
dino_lock = dino_lock,
|
||||
dino_substeps = dino_substeps,
|
||||
dino_foundation_cap = dino_foundation_cap,
|
||||
tqdm_desc="Sampling shape SLat (MultiView)",
|
||||
).samples
|
||||
|
||||
if pipeline.low_vram:
|
||||
flow_model.cpu()
|
||||
pipeline._cleanup_cuda()
|
||||
|
||||
std = torch.tensor(pipeline.shape_slat_normalization['std'])[None].to(slat.device)
|
||||
mean = torch.tensor(pipeline.shape_slat_normalization['mean'])[None].to(slat.device)
|
||||
slat = slat * std + mean
|
||||
|
||||
del coords_dev
|
||||
if pipeline.low_vram:
|
||||
for v in conds:
|
||||
conds[v] = pipeline._cond_cpu(conds[v])
|
||||
pipeline._cleanup_cuda()
|
||||
|
||||
return slat
|
||||
|
||||
class Trellis2ShapeCascadeMultiViewGenerator:
|
||||
@classmethod
|
||||
def INPUT_TYPES(s):
|
||||
return {
|
||||
"required": {
|
||||
"pipeline": ("TRELLIS2PIPELINE",),
|
||||
"image_conds": ("IMAGE_CONDS",),
|
||||
"views_list": ("VIEWS_LIST",),
|
||||
"shape_slat": ("SHAPE_SLAT",),
|
||||
"from_resolution": ("INT",),
|
||||
"to_resolution": ([1024,1536,2048,2560,3072,3584,4096],{"default":1024}),
|
||||
"sparse_structure_resolution": ("INT", {"default":32,"min":32,"max":128,"step":4}),
|
||||
"max_num_tokens": ("INT",{"default":999999,"min":0,"max":999999}),
|
||||
"shape_steps": ("INT",{"default":12, "min":1, "max":100},),
|
||||
"shape_guidance_strength": ("FLOAT",{"default":6.50,"min":0.00,"max":99.99,"step":0.01}),
|
||||
"shape_guidance_rescale": ("FLOAT",{"default":0.05,"min":0.00,"max":1.00,"step":0.01}),
|
||||
"shape_rescale_t": ("FLOAT",{"default":4.00,"min":0.00,"max":9.99,"step":0.01}),
|
||||
"shape_sampler": (["euler", "heun", "rk4", "rk5"], {"default": "euler"}),
|
||||
"shape_guidance_interval_start": ("FLOAT",{"default":0.10,"min":0.00,"max":1.00,"step":0.01}),
|
||||
"shape_guidance_interval_end": ("FLOAT",{"default":1.00,"min":0.00,"max":1.00,"step":0.01}),
|
||||
"verbose": ("BOOLEAN",{"default":False}),
|
||||
"dino_lock": ("FLOAT",{"default":0.00,"min":0.00,"max":1.00,"step":0.01}),
|
||||
"dino_substeps": ("INT",{"default":4,"min":1,"max":99,"step":1}),
|
||||
"dino_foundation_cap": ("FLOAT",{"default":1.00,"min":0.01,"max":1.00,"step":0.01}),
|
||||
"front_axis": (["z", "x"], {"default": "z"}),
|
||||
"blend_temperature": ("FLOAT", {"default": 1.0, "min": 0.1, "max": 10.0, "step": 0.1}),
|
||||
},
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("SHAPE_SLAT","INT","VIEWS_LIST", "TRELLIS2PIPELINE","INT",)
|
||||
RETURN_NAMES = ("shape_slat","resolution","views_list", "pipeline","num_tokens")
|
||||
FUNCTION = "process"
|
||||
CATEGORY = "Trellis2Wrapper"
|
||||
OUTPUT_NODE = True
|
||||
|
||||
def process(self, pipeline, image_conds, views_list, shape_slat, from_resolution, to_resolution, sparse_structure_resolution, max_num_tokens,
|
||||
# shape
|
||||
shape_steps,
|
||||
shape_guidance_strength,
|
||||
shape_guidance_rescale,
|
||||
shape_rescale_t,
|
||||
shape_sampler,
|
||||
shape_guidance_interval_start,
|
||||
shape_guidance_interval_end,
|
||||
verbose,
|
||||
dino_lock,
|
||||
dino_substeps,
|
||||
dino_foundation_cap,
|
||||
front_axis,
|
||||
blend_temperature
|
||||
):
|
||||
|
||||
shape_guidance_interval = [shape_guidance_interval_start, shape_guidance_interval_end]
|
||||
shape_slat_sampler_params = {"steps":shape_steps,"guidance_strength":shape_guidance_strength,"guidance_rescale":shape_guidance_rescale,"guidance_interval":shape_guidance_interval,"rescale_t":shape_rescale_t}
|
||||
|
||||
args = pipeline._pretrained_args
|
||||
shape_sampler_prefix = pipeline.GetSamplerName(shape_sampler)
|
||||
|
||||
pipeline.load_shape_slat_flow_model_1024()
|
||||
flow_model = pipeline.models['shape_slat_flow_model_1024']
|
||||
|
||||
sampler_class = getattr(samplers, f"Flow{shape_sampler_prefix}MultiViewGuidanceIntervalSampler", samplers.FlowEulerMultiViewGuidanceIntervalSampler)
|
||||
sampler = sampler_class(
|
||||
sigma_min=1e-5,
|
||||
resolution=flow_model.resolution if hasattr(flow_model, 'resolution') else flow_model[0].resolution
|
||||
)
|
||||
|
||||
pipeline.shape_slat_sampler = sampler
|
||||
|
||||
slat, hr_resolution, num_tokens = self.sample(pipeline, shape_slat, from_resolution, to_resolution, sparse_structure_resolution, max_num_tokens, image_conds, shape_slat_sampler_params, flow_model, verbose, dino_lock, dino_substeps, dino_foundation_cap, views_list, front_axis, blend_temperature)
|
||||
|
||||
if not pipeline.keep_models_loaded:
|
||||
pipeline.unload_shape_slat_flow_model_1024()
|
||||
|
||||
return (slat, hr_resolution, views_list, pipeline, num_tokens,)
|
||||
|
||||
def sample(self, pipeline, slat, lr_resolution, resolution, sparse_structure_resolution, max_num_tokens, conds, sampler_params, flow_model, verbose, dino_lock, dino_substeps, dino_foundation_cap, views, front_axis, blend_temperature):
|
||||
# Upsample
|
||||
pipeline.load_shape_slat_decoder()
|
||||
if pipeline.low_vram:
|
||||
pipeline.models['shape_slat_decoder'].to(pipeline.device)
|
||||
pipeline.models['shape_slat_decoder'].low_vram = True
|
||||
hr_coords = pipeline.models['shape_slat_decoder'].upsample(slat, upsample_times=4)
|
||||
if pipeline.low_vram:
|
||||
pipeline.models['shape_slat_decoder'].cpu()
|
||||
pipeline.models['shape_slat_decoder'].low_vram = False
|
||||
|
||||
if not pipeline.keep_models_loaded:
|
||||
pipeline.unload_shape_slat_decoder()
|
||||
|
||||
hr_resolution = resolution
|
||||
ratio = (sparse_structure_resolution / 32)
|
||||
|
||||
while True:
|
||||
quant_coords = torch.cat([
|
||||
hr_coords[:, :1],
|
||||
((hr_coords[:, 1:] + 0.5) / (lr_resolution * ratio) * (hr_resolution // 16)).int(),
|
||||
], dim=1)
|
||||
coords = quant_coords.unique(dim=0)
|
||||
num_tokens = coords.shape[0]
|
||||
if num_tokens < max_num_tokens:
|
||||
if hr_resolution != resolution:
|
||||
print(f"Due to the limited number of tokens, the resolution is reduced to {hr_resolution}.")
|
||||
print(f"Num Tokens: {num_tokens}")
|
||||
break
|
||||
hr_resolution -= 128
|
||||
if hr_resolution < 1024 and resolution >= 1024:
|
||||
print(f"Num Tokens: {num_tokens}")
|
||||
hr_resolution = 1024
|
||||
break
|
||||
if hr_resolution < 512:
|
||||
print(f"Num Tokens: {num_tokens}")
|
||||
hr_resolution = 512
|
||||
break
|
||||
|
||||
if pipeline.low_vram:
|
||||
for v in conds:
|
||||
conds[v] = pipeline._cond_to(conds[v], pipeline.device)
|
||||
|
||||
coords_dev = coords.to(pipeline.device)
|
||||
# Sample structured latent
|
||||
noise = SparseTensor(
|
||||
feats=torch.randn(coords.shape[0], flow_model.in_channels, device=pipeline.device),
|
||||
coords=coords_dev,
|
||||
)
|
||||
sampler_params = {**pipeline.shape_slat_sampler_params, **sampler_params}
|
||||
if pipeline.low_vram:
|
||||
flow_model.to(pipeline.device)
|
||||
slat = pipeline.shape_slat_sampler.sample(
|
||||
flow_model,
|
||||
noise,
|
||||
conds=conds,
|
||||
**sampler_params,
|
||||
views=views,
|
||||
front_axis=front_axis,
|
||||
blend_temperature=blend_temperature,
|
||||
verbose=verbose,
|
||||
dino_lock=dino_lock,
|
||||
dino_substeps=dino_substeps,
|
||||
dino_foundation_cap=dino_foundation_cap,
|
||||
tqdm_desc="Sampling shape SLat (MultiView HR)",
|
||||
).samples
|
||||
|
||||
if pipeline.low_vram:
|
||||
flow_model.cpu()
|
||||
pipeline._cleanup_cuda()
|
||||
|
||||
std = torch.tensor(pipeline.shape_slat_normalization['std'])[None].to(slat.device)
|
||||
mean = torch.tensor(pipeline.shape_slat_normalization['mean'])[None].to(slat.device)
|
||||
slat = slat * std + mean
|
||||
|
||||
del coords_dev
|
||||
if pipeline.low_vram:
|
||||
for v in conds:
|
||||
conds[v] = pipeline._cond_cpu(conds[v])
|
||||
pipeline._cleanup_cuda()
|
||||
|
||||
return slat, hr_resolution, num_tokens
|
||||
|
||||
class Trellis2TexSlatMultiViewGenerator:
|
||||
@classmethod
|
||||
def INPUT_TYPES(s):
|
||||
return {
|
||||
"required": {
|
||||
"pipeline": ("TRELLIS2PIPELINE",),
|
||||
"image_conds": ("IMAGE_CONDS",),
|
||||
"views_list": ("VIEWS_LIST",),
|
||||
"shape_slat": ("SHAPE_SLAT",),
|
||||
"resolution": ([512,1024],{"default":1024}),
|
||||
"texture_steps": ("INT",{"default":12, "min":1, "max":100},),
|
||||
"texture_guidance_strength": ("FLOAT",{"default":6.50,"min":0.00,"max":99.99,"step":0.01}),
|
||||
"texture_guidance_rescale": ("FLOAT",{"default":0.05,"min":0.00,"max":1.00,"step":0.01}),
|
||||
"texture_rescale_t": ("FLOAT",{"default":4.00,"min":0.00,"max":9.99,"step":0.01}),
|
||||
"texture_sampler": (["euler", "heun", "rk4", "rk5"], {"default": "euler"}),
|
||||
"texture_guidance_interval_start": ("FLOAT",{"default":0.00,"min":0.00,"max":1.00,"step":0.01}),
|
||||
"texture_guidance_interval_end": ("FLOAT",{"default":0.90,"min":0.00,"max":1.00,"step":0.01}),
|
||||
"verbose": ("BOOLEAN",{"default":False}),
|
||||
"dino_lock": ("FLOAT",{"default":0.00,"min":0.00,"max":1.00,"step":0.01}),
|
||||
"dino_substeps": ("INT",{"default":4,"min":1,"max":99,"step":1}),
|
||||
"dino_foundation_cap": ("FLOAT",{"default":1.00,"min":0.01,"max":1.00,"step":0.01}),
|
||||
"front_axis": (["z", "x"], {"default": "z"}),
|
||||
"blend_temperature": ("FLOAT", {"default": 1.0, "min": 0.1, "max": 10.0, "step": 0.1}),
|
||||
},
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("TEXTURE_SLAT", "VIEWS_LIST", "TRELLIS2PIPELINE",)
|
||||
RETURN_NAMES = ("texture_slat", "views_list", "pipeline",)
|
||||
FUNCTION = "process"
|
||||
CATEGORY = "Trellis2Wrapper"
|
||||
OUTPUT_NODE = True
|
||||
|
||||
def process(self, pipeline, image_conds, views_list, shape_slat, resolution,
|
||||
# shape
|
||||
texture_steps,
|
||||
texture_guidance_strength,
|
||||
texture_guidance_rescale,
|
||||
texture_rescale_t,
|
||||
texture_sampler,
|
||||
texture_guidance_interval_start,
|
||||
texture_guidance_interval_end,
|
||||
verbose,
|
||||
dino_lock,
|
||||
dino_substeps,
|
||||
dino_foundation_cap,
|
||||
front_axis,
|
||||
blend_temperature
|
||||
):
|
||||
|
||||
texture_guidance_interval = [texture_guidance_interval_start,texture_guidance_interval_end]
|
||||
tex_slat_sampler_params = {"steps":texture_steps,"guidance_strength":texture_guidance_strength,"guidance_rescale":texture_guidance_rescale,"guidance_interval":texture_guidance_interval,"rescale_t":texture_rescale_t}
|
||||
|
||||
if resolution == 512:
|
||||
pipeline.load_tex_slat_flow_model_512()
|
||||
flow_model = pipeline.models['tex_slat_flow_model_512']
|
||||
else:
|
||||
pipeline.load_tex_slat_flow_model_1024()
|
||||
flow_model = pipeline.models['tex_slat_flow_model_1024']
|
||||
|
||||
tex_slat = self.sample(
|
||||
pipeline,
|
||||
texture_sampler,
|
||||
image_conds, views_list,
|
||||
shape_slat=shape_slat,
|
||||
flow_model=flow_model,
|
||||
sampler_params=tex_slat_sampler_params,
|
||||
front_axis=front_axis,
|
||||
blend_temperature=blend_temperature,
|
||||
verbose=verbose,
|
||||
dino_lock=dino_lock,
|
||||
dino_substeps=dino_substeps,
|
||||
dino_foundation_cap=dino_foundation_cap
|
||||
)
|
||||
|
||||
if not pipeline.keep_models_loaded:
|
||||
if resolution == 512:
|
||||
pipeline.unload_tex_slat_flow_model_512()
|
||||
else:
|
||||
pipeline.unload_tex_slat_flow_model_1024()
|
||||
|
||||
return (tex_slat, views_list, pipeline,)
|
||||
|
||||
def sample(
|
||||
self,
|
||||
pipeline,
|
||||
sampler,
|
||||
conds: dict,
|
||||
views: list,
|
||||
shape_slat: SparseTensor,
|
||||
flow_model,
|
||||
sampler_params: dict = {},
|
||||
front_axis: str = 'z',
|
||||
blend_temperature: float = 2.0,
|
||||
verbose: bool = False,
|
||||
dino_lock: float = 0.00,
|
||||
dino_substeps: int = 4,
|
||||
dino_foundation_cap: float = 0.92
|
||||
) -> SparseTensor:
|
||||
"""
|
||||
Sample structured latent for texture with multi-view blending.
|
||||
"""
|
||||
if pipeline.low_vram:
|
||||
for v in conds:
|
||||
conds[v] = pipeline._cond_to(conds[v], pipeline.device)
|
||||
|
||||
# Normalize shape slat for conditioning
|
||||
std = torch.tensor(pipeline.shape_slat_normalization['std'])[None].to(shape_slat.device)
|
||||
mean = torch.tensor(pipeline.shape_slat_normalization['mean'])[None].to(shape_slat.device)
|
||||
shape_slat_normalized = (shape_slat - mean) / std
|
||||
|
||||
#coords = shape_slat.coords
|
||||
#coords_dev = coords.to(pipeline.device)
|
||||
|
||||
# Calculate noise channels: total input - concat cond channels
|
||||
in_channels = flow_model.in_channels if isinstance(flow_model, nn.Module) else flow_model[0].in_channels
|
||||
noise_channels = in_channels - shape_slat.feats.shape[1]
|
||||
|
||||
# noise = SparseTensor(
|
||||
# feats=torch.randn(coords.shape[0], noise_channels, device=pipeline.device),
|
||||
# coords=coords_dev,
|
||||
# )
|
||||
noise = shape_slat.replace(feats=torch.randn(shape_slat.coords.shape[0], in_channels - shape_slat.feats.shape[1]).to(pipeline.device))
|
||||
|
||||
sampler_params = {**pipeline.tex_slat_sampler_params, **sampler_params}
|
||||
|
||||
# sampler = samplers.FlowEulerMultiViewGuidanceIntervalSampler(
|
||||
# sigma_min=1e-5,
|
||||
# resolution=flow_model.resolution,
|
||||
# )
|
||||
tex_sampler_prefix = pipeline.GetSamplerName(sampler)
|
||||
|
||||
sampler_class = getattr(samplers, f"Flow{tex_sampler_prefix}MultiViewGuidanceIntervalSampler", samplers.FlowEulerMultiViewGuidanceIntervalSampler)
|
||||
sampler = sampler_class(
|
||||
sigma_min=1e-5,
|
||||
resolution=flow_model.resolution if hasattr(flow_model, 'resolution') else flow_model[0].resolution
|
||||
)
|
||||
|
||||
if pipeline.low_vram:
|
||||
flow_model.to(pipeline.device)
|
||||
|
||||
slat = sampler.sample(
|
||||
flow_model,
|
||||
noise,
|
||||
conds=conds,
|
||||
**sampler_params,
|
||||
views=views,
|
||||
front_axis=front_axis,
|
||||
blend_temperature=blend_temperature,
|
||||
concat_cond=shape_slat_normalized,
|
||||
verbose=verbose,
|
||||
dino_lock=dino_lock,
|
||||
dino_substeps=dino_substeps,
|
||||
dino_foundation_cap=dino_foundation_cap,
|
||||
tqdm_desc="Sampling texture SLat (MultiView)",
|
||||
).samples
|
||||
|
||||
if pipeline.low_vram:
|
||||
flow_model.cpu()
|
||||
pipeline._cleanup_cuda()
|
||||
|
||||
std = torch.tensor(pipeline.tex_slat_normalization['std'])[None].to(slat.device)
|
||||
mean = torch.tensor(pipeline.tex_slat_normalization['mean'])[None].to(slat.device)
|
||||
slat = slat * std + mean
|
||||
|
||||
#del coords_dev
|
||||
if pipeline.low_vram:
|
||||
for v in conds:
|
||||
conds[v] = pipeline._cond_cpu(conds[v])
|
||||
pipeline._cleanup_cuda()
|
||||
|
||||
return slat
|
||||
|
||||
NODE_CLASS_MAPPINGS = {
|
||||
"Trellis2LoadModel": Trellis2LoadModel,
|
||||
@@ -5671,6 +6481,11 @@ NODE_CLASS_MAPPINGS = {
|
||||
"Trellis2ExtractImagesFromVideo": Trellis2ExtractImagesFromVideo,
|
||||
"Trellis2MaxTokensCalculator": Trellis2MaxTokensCalculator,
|
||||
"Trellis2FillHolesNicelyWithMeshlib": Trellis2FillHolesNicelyWithMeshlib,
|
||||
"Trellis2SparseMultiViewGenerator": Trellis2SparseMultiViewGenerator,
|
||||
"Trellis2ImageCondMultiViewGenerator": Trellis2ImageCondMultiViewGenerator,
|
||||
"Trellis2ShapeMultiViewGenerator": Trellis2ShapeMultiViewGenerator,
|
||||
"Trellis2ShapeCascadeMultiViewGenerator": Trellis2ShapeCascadeMultiViewGenerator,
|
||||
"Trellis2TexSlatMultiViewGenerator": Trellis2TexSlatMultiViewGenerator,
|
||||
}
|
||||
|
||||
|
||||
@@ -5734,4 +6549,9 @@ NODE_DISPLAY_NAME_MAPPINGS = {
|
||||
"Trellis2ExtractImagesFromVideo": "Trellis2 - Extract Images from Video",
|
||||
"Trellis2MaxTokensCalculator": "Trellis2 - Max Tokens Calculator",
|
||||
"Trellis2FillHolesNicelyWithMeshlib": "Trellis2 - Fill Holes Nicely With Meshlib",
|
||||
"Trellis2SparseMultiViewGenerator": "Trellis2 - Sparse MultiView Generator",
|
||||
"Trellis2ImageCondMultiViewGenerator": "Trellis2 - ImageCond MultiView Generator",
|
||||
"Trellis2ShapeMultiViewGenerator": "Trellis2 - Shape MultiView Generator",
|
||||
"Trellis2ShapeCascadeMultiViewGenerator": "Trellis2 - Shape Cascade MultiView Generator",
|
||||
"Trellis2TexSlatMultiViewGenerator": "Trellis2 - Tex Slat MultiView Generator",
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ class DinoLockMixin:
|
||||
tqdm_desc: str = "Sampling",
|
||||
dino_lock: float = 0.0,
|
||||
dino_substeps: int = 4,
|
||||
dino_foundation_cap: float = 0.92,
|
||||
dino_foundation_cap: float = 0.92,
|
||||
**kwargs
|
||||
):
|
||||
# Strip keys that must not reach the model
|
||||
@@ -183,7 +183,10 @@ class DinoLockMixin:
|
||||
**kwargs)
|
||||
|
||||
if dino_lock <= 0.0:
|
||||
return super().sample(model, noise, cond, steps, rescale_t, verbose,
|
||||
return super().sample(model, noise, cond,
|
||||
steps = steps,
|
||||
rescale_t = rescale_t,
|
||||
verbose = verbose,
|
||||
tqdm_desc=tqdm_desc,
|
||||
neg_cond=neg_cond,
|
||||
guidance_strength=guidance_strength,
|
||||
|
||||
Reference in New Issue
Block a user