ComfyPilotComfyPilot
工作流 / 3D 模型 / 从单张图像生成3D模型
从单张图像生成3D模型

从单张图像生成3D模型

Generate 3D Model From Single Image

输入单张图像,自动生成三视图。使用这些多视图与Meshy创建带纹理的3D模型。

3D 模型 12 个节点 1 个输入 17 次使用 ComfyUI ≥ 0.35.1 Julien | MJM 15 KB

下载工作流 JSON 查看官方来源

下载后把文件拖进 ComfyUI 窗口即可打开。

节点构成

GeminiNanoBanana2 × 3
SaveImage × 3
BatchImagesNode × 1
MarkdownNote × 1
LoadImage × 1
Preview3D × 1
TripoImageToModelNode × 1
SaveGLB × 1

官方标注的模型

MeshyNano Banana 2

工作流 JSON

和上面「下载工作流 JSON」是同一份文件。

1{
2 "id": "e49510e3-d099-4e2b-80d1-9aa713ab98b9",
3 "revision": 0,
4 "last_node_id": 28,
5 "last_link_id": 33,
6 "nodes": [
7 {
8 "id": 6,
9 "type": "BatchImagesNode",
10 "pos": [
11 610,
12 730
13 ],
14 "size": [
15 225,
16 144
17 ],
18 "flags": [],
19 "order": 7,
20 "mode": 0,
21 "inputs": [
22 {
23 "label": "image0",
24 "name": "images.image0",
25 "type": "IMAGE",
26 "link": 28
27 },
28 {
29 "label": "image1",
30 "name": "images.image1",
31 "type": "IMAGE",
32 "link": 9
33 },
34 {
35 "label": "image2",
36 "name": "images.image2",
37 "shape": 7,
38 "type": "IMAGE",
39 "link": 10
40 },
41 {
42 "label": "image3",
43 "name": "images.image3",
44 "shape": 7,
45 "type": "IMAGE",
46 "link": null
47 }
48 ],
49 "outputs": [
50 {
51 "name": "IMAGE",
52 "type": "IMAGE",
53 "links": [
54 5
55 ]
56 }
57 ],
58 "properties": {
59 "cnr_id": "comfy-core",
60 "ver": "0.16.3",
61 "Node name for S&R": "BatchImagesNode",
62 "ue_properties": {
63 "widget_ue_connectable": [],
64 "version": "7.7",
65 "input_ue_unconnectable": []
66 }
67 },
68 "widgets_values": []
69 },
70 {
71 "id": 21,
72 "type": "MarkdownNote",
73 "pos": [
74 -1560,
75 730
76 ],
77 "size": [
78 499.546875,
79 256.78125
80 ],
81 "flags": [],
82 "order": 0,
83 "mode": 0,
84 "inputs": [],
85 "outputs": [],
86 "title": "Image To 3D - How it works!",
87 "properties": {
88 "ue_properties": {
89 "widget_ue_connectable": [],
90 "version": "7.7",
91 "input_ue_unconnectable": []
92 }
93 },
94 "widgets_values": [
95 "Turn a **single image** into a 3D model.\n\n## How It Works\n\n1. **Upload an image**\n2. **Start the workflow and it will generate the required side and rear shots to create a 3D model from your input**\n\nEnjoy!"
96 ],
97 "color": "#222",
98 "bgcolor": "#000"
99 },
100 {
101 "id": 1,
102 "type": "LoadImage",
103 "pos": [
104 -1010,
105 730
106 ],
107 "size": [
108 478.734375,
109 489.109375
110 ],
111 "flags": [],
112 "order": 1,
113 "mode": 0,
114 "inputs": [],
115 "outputs": [
116 {
117 "name": "IMAGE",
118 "type": "IMAGE",
119 "links": [
120 22,
121 23,
122 27
123 ]
124 },
125 {
126 "name": "MASK",
127 "type": "MASK",
128 "links": null
129 }
130 ],
131 "properties": {
132 "cnr_id": "comfy-core",
133 "ver": "0.5.1",
134 "Node name for S&R": "LoadImage",
135 "ue_properties": {
136 "widget_ue_connectable": [],
137 "version": "7.7",
138 "input_ue_unconnectable": []
139 }
140 },
141 "widgets_values": [
142 "templates_mjm_image_to_3d.png",
143 "image"
144 ]
145 },
146 {
147 "id": 23,
148 "type": "GeminiNanoBanana2",
149 "pos": [
150 -440,
151 730
152 ],
153 "size": [
154 480,
155 470.390625
156 ],
157 "flags": [],
158 "order": 4,
159 "mode": 0,
160 "inputs": [
161 {
162 "name": "images",
163 "shape": 7,
164 "type": "IMAGE",
165 "link": 27
166 },
167 {
168 "name": "files",
169 "shape": 7,
170 "type": "GEMINI_INPUT_FILES",
171 "link": null
172 }
173 ],
174 "outputs": [
175 {
176 "name": "IMAGE",
177 "type": "IMAGE",
178 "links": [
179 28,
180 29
181 ]
182 },
183 {
184 "name": "STRING",
185 "type": "STRING",
186 "links": null
187 }
188 ],
189 "properties": {
190 "cnr_id": "comfy-core",
191 "ver": "0.17.0",
192 "Node name for S&R": "GeminiNanoBanana2",
193 "ue_properties": {
194 "widget_ue_connectable": [],
195 "version": "7.7",
196 "input_ue_unconnectable": []
197 }
198 },
199 "widgets_values": [
200 "Remove the background",
201 "Nano Banana 2 (Gemini 3.1 Flash Image)",
202 80526614165305,
203 "randomize",
204 "1:1",
205 "2K",
206 "IMAGE",
207 "HIGH",
208 "You are an expert image-generation engine. You must ALWAYS produce an image.\nInterpret all user input—regardless of format, intent, or abstraction—as literal visual directives for image composition.\nIf a prompt is conversational or lacks specific visual details, you must creatively invent a concrete visual scenario that depicts the concept.\nPrioritize generating the visual representation above any text, formatting, or conversational requests."
209 ],
210 "color": "#432",
211 "bgcolor": "#653"
212 },
213 {
214 "id": 25,
215 "type": "SaveImage",
216 "pos": [
217 90,
218 730
219 ],
220 "size": [
221 432,
222 456
223 ],
224 "flags": [],
225 "order": 8,
226 "mode": 0,
227 "inputs": [
228 {
229 "name": "images",
230 "type": "IMAGE",
231 "link": 29
232 }
233 ],
234 "outputs": [],
235 "properties": {
236 "cnr_id": "comfy-core",
237 "ver": "0.17.0",
238 "ue_properties": {
239 "widget_ue_connectable": [],
240 "version": "7.7",
241 "input_ue_unconnectable": []
242 }
243 },
244 "widgets_values": [
245 "ComfyUI"
246 ]
247 },
248 {
249 "id": 2,
250 "type": "GeminiNanoBanana2",
251 "pos": [
252 -445.5828789612473,
253 1276.3512566656195
254 ],
255 "size": [
256 480,
257 470.390625
258 ],
259 "flags": [],
260 "order": 2,
261 "mode": 0,
262 "inputs": [
263 {
264 "name": "images",
265 "shape": 7,
266 "type": "IMAGE",
267 "link": 22
268 },
269 {
270 "name": "files",
271 "shape": 7,
272 "type": "GEMINI_INPUT_FILES",
273 "link": null
274 }
275 ],
276 "outputs": [
277 {
278 "name": "IMAGE",
279 "type": "IMAGE",
280 "links": [
281 9,
282 30
283 ]
284 },
285 {
286 "name": "STRING",
287 "type": "STRING",
288 "links": null
289 }
290 ],
291 "properties": {
292 "cnr_id": "comfy-core",
293 "ver": "0.17.0",
294 "Node name for S&R": "GeminiNanoBanana2",
295 "ue_properties": {
296 "widget_ue_connectable": [],
297 "version": "7.7",
298 "input_ue_unconnectable": []
299 }
300 },
301 "widgets_values": [
302 "Create a side shot from this image, do not change the pose and lighting\n\nNo background",
303 "Nano Banana 2 (Gemini 3.1 Flash Image)",
304 138687889823595,
305 "randomize",
306 "1:1",
307 "2K",
308 "IMAGE",
309 "HIGH",
310 "You are an expert image-generation engine. You must ALWAYS produce an image.\nInterpret all user input—regardless of format, intent, or abstraction—as literal visual directives for image composition.\nIf a prompt is conversational or lacks specific visual details, you must creatively invent a concrete visual scenario that depicts the concept.\nPrioritize generating the visual representation above any text, formatting, or conversational requests."
311 ],
312 "color": "#432",
313 "bgcolor": "#653"
314 },
315 {
316 "id": 26,
317 "type": "SaveImage",
318 "pos": [
319 87.8374220543285,
320 1276.3512566656195
321 ],
322 "size": [
323 432,
324 456
325 ],
326 "flags": [],
327 "order": 5,
328 "mode": 0,
329 "inputs": [
330 {
331 "name": "images",
332 "type": "IMAGE",
333 "link": 30
334 }
335 ],
336 "outputs": [],
337 "properties": {
338 "cnr_id": "comfy-core",
339 "ver": "0.17.0",
340 "ue_properties": {
341 "widget_ue_connectable": [],
342 "version": "7.7",
343 "input_ue_unconnectable": []
344 }
345 },
346 "widgets_values": [
347 "ComfyUI"
348 ]
349 },
350 {
351 "id": 27,
352 "type": "SaveImage",
353 "pos": [
354 90.33339836452001,
355 1851.3332802205773
356 ],
357 "size": [
358 432,
359 456
360 ],
361 "flags": [],
362 "order": 6,
363 "mode": 0,
364 "inputs": [
365 {
366 "name": "images",
367 "type": "IMAGE",
368 "link": 31
369 }
370 ],
371 "outputs": [],
372 "properties": {
373 "cnr_id": "comfy-core",
374 "ver": "0.17.0",
375 "ue_properties": {
376 "widget_ue_connectable": [],
377 "version": "7.7",
378 "input_ue_unconnectable": []
379 }
380 },
381 "widgets_values": [
382 "ComfyUI"
383 ]
384 },
385 {
386 "id": 4,
387 "type": "GeminiNanoBanana2",
388 "pos": [
389 -449.6666322294983,
390 1851.3332802205773
391 ],
392 "size": [
393 480,
394 470.390625
395 ],
396 "flags": [],
397 "order": 3,
398 "mode": 0,
399 "inputs": [
400 {
401 "name": "images",
402 "shape": 7,
403 "type": "IMAGE",
404 "link": 23
405 },
406 {
407 "name": "files",
408 "shape": 7,
409 "type": "GEMINI_INPUT_FILES",
410 "link": null
411 }
412 ],
413 "outputs": [
414 {
415 "name": "IMAGE",
416 "type": "IMAGE",
417 "links": [
418 10,
419 31
420 ]
421 },
422 {
423 "name": "STRING",
424 "type": "STRING",
425 "links": null
426 }
427 ],
428 "properties": {
429 "cnr_id": "comfy-core",
430 "ver": "0.17.0",
431 "Node name for S&R": "GeminiNanoBanana2",
432 "ue_properties": {
433 "widget_ue_connectable": [],
434 "version": "7.7",
435 "input_ue_unconnectable": []
436 }
437 },
438 "widgets_values": [
439 "Create a rear shot from this image, do not change the pose and lighting\n\nNo background",
440 "Nano Banana 2 (Gemini 3.1 Flash Image)",
441 226226946819998,
442 "randomize",
443 "1:1",
444 "2K",
445 "IMAGE",
446 "HIGH",
447 "You are an expert image-generation engine. You must ALWAYS produce an image.\nInterpret all user input—regardless of format, intent, or abstraction—as literal visual directives for image composition.\nIf a prompt is conversational or lacks specific visual details, you must creatively invent a concrete visual scenario that depicts the concept.\nPrioritize generating the visual representation above any text, formatting, or conversational requests."
448 ],
449 "color": "#432",
450 "bgcolor": "#653"
451 },
452 {
453 "id": 24,
454 "type": "Preview3D",
455 "pos": [
456 1250,
457 730
458 ],
459 "size": [
460 780,
461 924
462 ],
463 "flags": [],
464 "order": 10,
465 "mode": 0,
466 "inputs": [
467 {
468 "name": "camera_info",
469 "shape": 7,
470 "type": "LOAD3D_CAMERA",
471 "link": null
472 },
473 {
474 "name": "bg_image",
475 "shape": 7,
476 "type": "IMAGE",
477 "link": null
478 },
479 {
480 "name": "model_file",
481 "type": "STRING,FILE_3D_GLB,FILE_3D_GLTF,FILE_3D_FBX,FILE_3D_OBJ,FILE_3D_STL,FILE_3D_USDZ,FILE_3D",
482 "widget": {
483 "name": "model_file"
484 },
485 "link": 32
486 }
487 ],
488 "outputs": [],
489 "properties": {
490 "cnr_id": "comfy-core",
491 "ver": "0.17.0",
492 "Node name for S&R": "Preview3D",
493 "ue_properties": {
494 "widget_ue_connectable": [],
495 "version": "7.7",
496 "input_ue_unconnectable": []
497 }
498 },
499 "widgets_values": [
500 "",
501 ""
502 ]
503 },
504 {
505 "id": 7,
506 "type": "TripoImageToModelNode",
507 "pos": [
508 850,
509 730
510 ],
511 "size": [
512 350,
513 518.390625
514 ],
515 "flags": [],
516 "order": 9,
517 "mode": 0,
518 "inputs": [
519 {
520 "name": "image",
521 "type": "IMAGE",
522 "link": 5
523 }
524 ],
525 "outputs": [
526 {
527 "name": "model_file",
528 "type": "STRING",
529 "links": [
530 32
531 ]
532 },
533 {
534 "name": "model task_id",
535 "type": "MODEL_TASK_ID",
536 "links": null
537 },
538 {
539 "name": "GLB",
540 "type": "FILE_3D_GLB",
541 "links": [
542 33
543 ]
544 }
545 ],
546 "properties": {
547 "cnr_id": "comfy-core",
548 "ver": "0.5.1",
549 "Node name for S&R": "TripoImageToModelNode",
550 "ue_properties": {
551 "widget_ue_connectable": [],
552 "version": "7.7",
553 "input_ue_unconnectable": []
554 }
555 },
556 "widgets_values": [
557 "v3.0-20250812",
558 "person:person2cartoon",
559 true,
560 true,
561 42,
562 "default",
563 42,
564 "detailed",
565 "geometry",
566 -1,
567 false,
568 "standard"
569 ],
570 "color": "#432",
571 "bgcolor": "#653"
572 },
573 {
574 "id": 28,
575 "type": "SaveGLB",
576 "pos": [
577 2110,
578 750
579 ],
580 "size": [
581 780,
582 900
583 ],
584 "flags": [],
585 "order": 11,
586 "mode": 0,
587 "inputs": [
588 {
589 "name": "mesh",
590 "type": "MESH,FILE_3D_GLB,FILE_3D_GLTF,FILE_3D_OBJ,FILE_3D_FBX,FILE_3D_STL,FILE_3D_USDZ,FILE_3D",
591 "link": 33
592 }
593 ],
594 "outputs": [],
595 "properties": {
596 "cnr_id": "comfy-core",
597 "ver": "0.17.0",
598 "ue_properties": {
599 "widget_ue_connectable": [],
600 "input_ue_unconnectable": []
601 }
602 },
603 "widgets_values": [
604 "3d/tripo_image2model",
605 ""
606 ]
607 }
608 ],
609 "links": [
610 [
611 5,
612 6,
613 0,
614 7,
615 0,
616 "IMAGE"
617 ],
618 [
619 9,
620 2,
621 0,
622 6,
623 1,
624 "IMAGE"
625 ],
626 [
627 10,
628 4,
629 0,
630 6,
631 2,
632 "IMAGE"
633 ],
634 [
635 22,
636 1,
637 0,
638 2,
639 0,
640 "IMAGE"
641 ],
642 [
643 23,
644 1,
645 0,
646 4,
647 0,
648 "IMAGE"
649 ],
650 [
651 27,
652 1,
653 0,
654 23,
655 0,
656 "IMAGE"
657 ],
658 [
659 28,
660 23,
661 0,
662 6,
663 0,
664 "IMAGE"
665 ],
666 [
667 29,
668 23,
669 0,
670 25,
671 0,
672 "IMAGE"
673 ],
674 [
675 30,
676 2,
677 0,
678 26,
679 0,
680 "IMAGE"
681 ],
682 [
683 31,
684 4,
685 0,
686 27,
687 0,
688 "IMAGE"
689 ],
690 [
691 32,
692 7,
693 0,
694 24,
695 2,
696 "STRING"
697 ],
698 [
699 33,
700 7,
701 2,
702 28,
703 0,
704 "FILE_3D_GLB"
705 ]
706 ],
707 "groups": [
708 {
709 "id": 2,
710 "title": "Shots creation",
711 "bounding": [
712 -464.1626878558161,
713 653.8605216162233,
714 1020,
715 1716
716 ],
717 "color": "#3f789e",
718 "font_size": 24,
719 "flags": []
720 },
721 {
722 "id": 3,
723 "title": "3D Model creation",
724 "bounding": [
725 603.8373121441837,
726 653.8605216162233,
727 2341.2708236241074,
728 1081.724556359999
729 ],
730 "color": "#3f789e",
731 "font_size": 24,
732 "flags": []
733 }
734 ],
735 "config": [],
736 "extra": {
737 "workflowRendererVersion": "Vue",
738 "ds": {
739 "scale": 0.2750764338702098,
740 "offset": [
741 2114.583665970122,
742 359.6578549867025
743 ]
744 },
745 "frontendVersion": "1.41.20",
746 "VHS_latentpreview": false,
747 "VHS_latentpreviewrate": 0,
748 "VHS_MetadataImage": true,
749 "VHS_KeepIntermediate": true,
750 "linearData": {
751 "inputs": [
752 [
753 1,
754 "image"
755 ]
756 ],
757 "outputs": [
758 22
759 ]
760 },
761 "linearMode": false,
762 "ue_links": []
763 },
764 "version": 0.4
765}