工作流 /
图像工具 /
深度估计: MoGe

深度估计: MoGe
Depth Estimation: MoGe
上传一张RGB图像,调整推理分辨率和批次大小。生成彩色深度预览和原始深度图。
图像工具
7 个节点 1 个输入 13 次使用 ComfyUI ≥ 0.22.0 ComfyUI 39 KB
需要的权重
这个工作流引用了 1 个权重文件,其中 1 个能在本站模型库里找到。
moge_2_vitl_normal_fp16.safetensors
在模型库查看
节点构成
MarkdownNote
× 2
PreviewImage
× 2
LoadImage
× 1
ca1fac5f-abe5-4729-b7fe-2299f6630a65
× 1
MaskPreview
× 1
官方标注的模型
MoGe
工作流 JSON
和上面「下载工作流 JSON」是同一份文件。
1{
2 "id": "b8855bb2-4ecb-4d67-94cc-c373b4db93dd",
3 "revision": 0,
4 "last_node_id": 70,
5 "last_link_id": 92,
6 "nodes": [
7 {
8 "id": 9,
9 "type": "LoadImage",
10 "pos": [
11 -4390,
12 5000
13 ],
14 "size": [
15 390,
16 440
17 ],
18 "flags": [],
19 "order": 0,
20 "mode": 0,
21 "inputs": [],
22 "outputs": [
23 {
24 "name": "IMAGE",
25 "type": "IMAGE",
26 "links": [
27 65
28 ]
29 },
30 {
31 "name": "MASK",
32 "type": "MASK",
33 "links": null
34 }
35 ],
36 "properties": {
37 "Node name for S&R": "LoadImage",
38 "cnr_id": "comfy-core",
39 "ver": "0.21.1",
40 "enableTabs": false,
41 "tabWidth": 65,
42 "tabXOffset": 10,
43 "hasSecondTab": false,
44 "secondTabText": "Send Back",
45 "secondTabOffset": 80,
46 "secondTabWidth": 65
47 },
48 "widgets_values": [
49 "alien_world.png",
50 "image"
51 ],
52 "widgets_values_named": {
53 "image": "alien_world.png",
54 "upload": "image"
55 }
56 },
57 {
58 "id": 49,
59 "type": "ca1fac5f-abe5-4729-b7fe-2299f6630a65",
60 "pos": [
61 -3970,
62 5000
63 ],
64 "size": [
65 430,
66 330
67 ],
68 "flags": [],
69 "order": 3,
70 "mode": 0,
71 "inputs": [
72 {
73 "name": "source_image",
74 "type": "IMAGE",
75 "link": 65
76 },
77 {
78 "label": "auto_resize_input",
79 "name": "switch",
80 "type": "BOOLEAN",
81 "widget": {
82 "name": "switch"
83 },
84 "link": null
85 }
86 ],
87 "outputs": [
88 {
89 "name": "depth_colored",
90 "type": "IMAGE",
91 "links": [
92 67
93 ]
94 },
95 {
96 "name": "depth",
97 "type": "IMAGE",
98 "links": [
99 68
100 ]
101 },
102 {
103 "name": "MASK",
104 "type": "MASK",
105 "links": [
106 90
107 ]
108 }
109 ],
110 "properties": {
111 "cnr_id": "comfy-core",
112 "ver": "0.21.1",
113 "enableTabs": false,
114 "tabWidth": 65,
115 "tabXOffset": 10,
116 "hasSecondTab": false,
117 "secondTabText": "Send Back",
118 "secondTabOffset": 80,
119 "secondTabWidth": 65,
120 "previewExposures": []
121 },
122 "widgets_values": [
123 2,
124 4,
125 "moge_2_vitl_normal_fp16.safetensors",
126 true
127 ],
128 "widgets_values_named": {
129 "inference_resolution": 2,
130 "inference_batch_size": 4,
131 "moge_model": "moge_2_vitl_normal_fp16.safetensors",
132 "switch": true
133 }
134 },
135 {
136 "id": 50,
137 "type": "MarkdownNote",
138 "pos": [
139 -4940,
140 5000
141 ],
142 "size": [
143 490,
144 1440
145 ],
146 "flags": [],
147 "order": 1,
148 "mode": 0,
149 "inputs": [],
150 "outputs": [],
151 "properties": [],
152 "widgets_values": [
153 "## moge_depth_estimation\n\n**Single perspective photo -> depth previews + mask**\n\n`Load Image` -> `Depth Estimation (MoGe)`\n\n### Main flow\n- Runs MoGe inference on one source image\n- Renders both colored depth and raw depth previews\n- Converts the rendered `mask` image into a real `MASK` output\n\n### Inputs\n| Control | Meaning |\n|--------|--------|\n| `source_image` | Input RGB image |\n| `inference_resolution` | MoGe detail level `0-9`; higher is slower but keeps more detail |\n| `inference_batch_size` | Passed to `MoGeInference` batch size; use `1` for a single still image |\n| `moge_model` | Model checkpoint loaded by `LoadMoGeModel`; see `Model Link` |\n| `auto_resize_input` | Enables pre-inference resize logic for large images |\n\n### Auto-resize logic\nWhen `auto_resize_input` is enabled, the subgraph checks image width first:\n- width `> 2048`: resize by longer edge to `2048` before inference\n- width `<= 2048`: keep the original image\n\nWhen `auto_resize_input` is disabled, the original image always goes into inference.\n\n### Outputs\n- `depth_colored`: colorized depth preview from `MoGeRender`\n- `depth`: raw depth preview from `MoGeRender`\n- `MASK`: mask rendered by `MoGeRender` and converted through `ImageToMask`\n\n### What `MASK` means\nAccording to the official MoGe repo, `mask` is a **binary mask for valid pixels**.\n\nIn practice, it marks image regions where MoGe believes the geometry is defined and reliable enough to use for downstream geometry results. Regions with undefined geometry, such as sky or other ambiguous areas, are typically excluded.\n\nThis is **not** a foreground segmentation or object cutout mask. It is better understood as a **valid geometry mask**."
154 ],
155 "widgets_values_named": {
156 "text": "## moge_depth_estimation\n\n**Single perspective photo -> depth previews + mask**\n\n`Load Image` -> `Depth Estimation (MoGe)`\n\n### Main flow\n- Runs MoGe inference on one source image\n- Renders both colored depth and raw depth previews\n- Converts the rendered `mask` image into a real `MASK` output\n\n### Inputs\n| Control | Meaning |\n|--------|--------|\n| `source_image` | Input RGB image |\n| `inference_resolution` | MoGe detail level `0-9`; higher is slower but keeps more detail |\n| `inference_batch_size` | Passed to `MoGeInference` batch size; use `1` for a single still image |\n| `moge_model` | Model checkpoint loaded by `LoadMoGeModel`; see `Model Link` |\n| `auto_resize_input` | Enables pre-inference resize logic for large images |\n\n### Auto-resize logic\nWhen `auto_resize_input` is enabled, the subgraph checks image width first:\n- width `> 2048`: resize by longer edge to `2048` before inference\n- width `<= 2048`: keep the original image\n\nWhen `auto_resize_input` is disabled, the original image always goes into inference.\n\n### Outputs\n- `depth_colored`: colorized depth preview from `MoGeRender`\n- `depth`: raw depth preview from `MoGeRender`\n- `MASK`: mask rendered by `MoGeRender` and converted through `ImageToMask`\n\n### What `MASK` means\nAccording to the official MoGe repo, `mask` is a **binary mask for valid pixels**.\n\nIn practice, it marks image regions where MoGe believes the geometry is defined and reliable enough to use for downstream geometry results. Regions with undefined geometry, such as sky or other ambiguous areas, are typically excluded.\n\nThis is **not** a foreground segmentation or object cutout mask. It is better understood as a **valid geometry mask**."
157 },
158 "color": "#222",
159 "bgcolor": "#000"
160 },
161 {
162 "id": 17,
163 "type": "PreviewImage",
164 "pos": [
165 -3110,
166 5000
167 ],
168 "size": [
169 340,
170 440
171 ],
172 "flags": [],
173 "order": 4,
174 "mode": 0,
175 "inputs": [
176 {
177 "name": "images",
178 "type": "IMAGE",
179 "link": 67
180 }
181 ],
182 "outputs": [
183 {
184 "name": "images",
185 "type": "IMAGE",
186 "links": null
187 }
188 ],
189 "title": "Preview Image (depth_colored)",
190 "properties": {
191 "Node name for S&R": "PreviewImage (depth_colored)",
192 "cnr_id": "comfy-core",
193 "ver": "0.21.1",
194 "enableTabs": false,
195 "tabWidth": 65,
196 "tabXOffset": 10,
197 "hasSecondTab": false,
198 "secondTabText": "Send Back",
199 "secondTabOffset": 80,
200 "secondTabWidth": 65
201 }
202 },
203 {
204 "id": 26,
205 "type": "PreviewImage",
206 "pos": [
207 -3490,
208 5000
209 ],
210 "size": [
211 340,
212 440
213 ],
214 "flags": [],
215 "order": 5,
216 "mode": 0,
217 "inputs": [
218 {
219 "name": "images",
220 "type": "IMAGE",
221 "link": 68
222 }
223 ],
224 "outputs": [
225 {
226 "name": "images",
227 "type": "IMAGE",
228 "links": null
229 }
230 ],
231 "title": "Preview Image (depth)",
232 "properties": {
233 "Node name for S&R": "PreviewImage (depth)",
234 "cnr_id": "comfy-core",
235 "ver": "0.21.1",
236 "enableTabs": false,
237 "tabWidth": 65,
238 "tabXOffset": 10,
239 "hasSecondTab": false,
240 "secondTabText": "Send Back",
241 "secondTabOffset": 80,
242 "secondTabWidth": 65
243 }
244 },
245 {
246 "id": 52,
247 "type": "MarkdownNote",
248 "pos": [
249 -5680,
250 5000
251 ],
252 "size": [
253 690,
254 1010
255 ],
256 "flags": [],
257 "order": 2,
258 "mode": 0,
259 "inputs": [],
260 "outputs": [],
261 "title": "Model Link",
262 "properties": [],
263 "widgets_values": [
264 "Guide: [Subgraph](https://docs.comfy.org/interface/features/subgraph)\n\n## Input Asset\n\n- [alien_world.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/alien_world.png)\n\n## MoGe — models & downloads\n\n- [ModelScope:Comfy-Org/MoGe](https://modelscope.cn/models/Comfy-Org/MoGe)\n\nResearch repo: [microsoft/MoGe](https://github.com/microsoft/MoGe) (CVPR'25, monocular geometry from a single image).\n\nComfyUI weights: [Comfy-Org/MoGe](https://huggingface.co/Comfy-Org/MoGe) → `models/geometry_estimation/`\n\n### Which checkpoint to use\n\n| File | Version | Use when |\n|------|---------|----------|\n| `moge_1_vitl_fp16` | **MoGe-1** | Point map + depth + mask; relative scale. Lighter baseline. |\n| `moge_2_vitl_normal_fp16` | **MoGe-2** | **Recommended.** Metric-scale depth/points, sharper detail, **normal maps** (needed for normal previews & better mesh edges). |\n\nMoGe-2 adds metric scale and normals in one forward pass; MoGe-1 does not predict normals (normals in previews may be derived from points).\n\n### Downloads\n- [moge_1_vitl_fp16.safetensors](https://huggingface.co/Comfy-Org/MoGe/resolve/main/geometry_estimation/moge_1_vitl_fp16.safetensors) (599.3 MB)\n- [moge_2_vitl_normal_fp16.safetensors](https://huggingface.co/Comfy-Org/MoGe/resolve/main/geometry_estimation/moge_2_vitl_normal_fp16.safetensors) (631.2 MB)\n\n\n## Model Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ └── 📂 geometry_estimation/\n│ ├── moge_2_vitl_normal_fp16.safetensors\n│ └── moge_1_vitl_fp16.safetensors\n```\n\nGuide: [Subgraph](https://docs.comfy.org/interface/features/subgraph)\n\n### Issues\nUpdate ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)), then install models.\n- Runtime: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n"
265 ],
266 "widgets_values_named": {
267 "text": "Guide: [Subgraph](https://docs.comfy.org/interface/features/subgraph)\n\n## Input Asset\n\n- [alien_world.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/alien_world.png)\n\n## MoGe — models & downloads\n\n- [ModelScope:Comfy-Org/MoGe](https://modelscope.cn/models/Comfy-Org/MoGe)\n\nResearch repo: [microsoft/MoGe](https://github.com/microsoft/MoGe) (CVPR'25, monocular geometry from a single image).\n\nComfyUI weights: [Comfy-Org/MoGe](https://huggingface.co/Comfy-Org/MoGe) → `models/geometry_estimation/`\n\n### Which checkpoint to use\n\n| File | Version | Use when |\n|------|---------|----------|\n| `moge_1_vitl_fp16` | **MoGe-1** | Point map + depth + mask; relative scale. Lighter baseline. |\n| `moge_2_vitl_normal_fp16` | **MoGe-2** | **Recommended.** Metric-scale depth/points, sharper detail, **normal maps** (needed for normal previews & better mesh edges). |\n\nMoGe-2 adds metric scale and normals in one forward pass; MoGe-1 does not predict normals (normals in previews may be derived from points).\n\n### Downloads\n- [moge_1_vitl_fp16.safetensors](https://huggingface.co/Comfy-Org/MoGe/resolve/main/geometry_estimation/moge_1_vitl_fp16.safetensors) (599.3 MB)\n- [moge_2_vitl_normal_fp16.safetensors](https://huggingface.co/Comfy-Org/MoGe/resolve/main/geometry_estimation/moge_2_vitl_normal_fp16.safetensors) (631.2 MB)\n\n\n## Model Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ └── 📂 geometry_estimation/\n│ ├── moge_2_vitl_normal_fp16.safetensors\n│ └── moge_1_vitl_fp16.safetensors\n```\n\nGuide: [Subgraph](https://docs.comfy.org/interface/features/subgraph)\n\n### Issues\nUpdate ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)), then install models.\n- Runtime: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n"
268 },
269 "color": "#222",
270 "bgcolor": "#000"
271 },
272 {
273 "id": 69,
274 "type": "MaskPreview",
275 "pos": [
276 -2740,
277 5000
278 ],
279 "size": [
280 400,
281 430
282 ],
283 "flags": [],
284 "order": 6,
285 "mode": 0,
286 "inputs": [
287 {
288 "name": "mask",
289 "type": "MASK",
290 "link": 90
291 }
292 ],
293 "outputs": [
294 {
295 "name": "mask",
296 "type": "MASK",
297 "links": null
298 }
299 ],
300 "properties": {
301 "Node name for S&R": "MaskPreview",
302 "cnr_id": "comfy-core",
303 "ver": "0.22.0",
304 "enableTabs": false,
305 "tabWidth": 65,
306 "tabXOffset": 10,
307 "hasSecondTab": false,
308 "secondTabText": "Send Back",
309 "secondTabOffset": 80,
310 "secondTabWidth": 65
311 }
312 }
313 ],
314 "links": [
315 [
316 65,
317 9,
318 0,
319 49,
320 0,
321 "IMAGE"
322 ],
323 [
324 67,
325 49,
326 0,
327 17,
328 0,
329 "IMAGE"
330 ],
331 [
332 68,
333 49,
334 1,
335 26,
336 0,
337 "IMAGE"
338 ],
339 [
340 90,
341 49,
342 2,
343 69,
344 0,
345 "MASK"
346 ]
347 ],
348 "groups": [],
349 "definitions": {
350 "subgraphs": [
351 {
352 "id": "ca1fac5f-abe5-4729-b7fe-2299f6630a65",
353 "version": 1,
354 "state": {
355 "lastGroupId": 1,
356 "lastNodeId": 70,
357 "lastLinkId": 92,
358 "lastRerouteId": 0
359 },
360 "revision": 0,
361 "config": [],
362 "name": "Depth Estimation (MoGe)",
363 "inputNode": {
364 "id": -10,
365 "bounding": [
366 -5130,
367 5320,
368 167.337890625,
369 148
370 ]
371 },
372 "outputNode": {
373 "id": -20,
374 "bounding": [
375 -3090,
376 4966,
377 129,
378 108
379 ]
380 },
381 "inputs": [
382 {
383 "id": "cc8ce79d-ba20-4a25-a51c-c2afcd35e520",
384 "name": "source_image",
385 "type": "IMAGE",
386 "linkIds": [
387 48,
388 56,
389 82,
390 92
391 ],
392 "localized_name": "source_image",
393 "pos": [
394 -4986.662109375,
395 5344
396 ]
397 },
398 {
399 "id": "06eefa21-8e60-49f3-9a34-35b081f4ae52",
400 "name": "inference_resolution",
401 "type": "INT",
402 "linkIds": [
403 73
404 ],
405 "localized_name": "inference_resolution",
406 "pos": [
407 -4986.662109375,
408 5364
409 ]
410 },
411 {
412 "id": "616638fe-f603-4d10-bae9-fc87c134380f",
413 "name": "inference_batch_size",
414 "type": "INT",
415 "linkIds": [
416 74
417 ],
418 "localized_name": "inference_batch_size",
419 "pos": [
420 -4986.662109375,
421 5384
422 ]
423 },
424 {
425 "id": "65694805-186e-4181-a721-df8b5af49d31",
426 "name": "moge_model",
427 "type": "COMBO",
428 "linkIds": [
429 79
430 ],
431 "localized_name": "moge_model",
432 "pos": [
433 -4986.662109375,
434 5404
435 ]
436 },
437 {
438 "id": "badf1be1-53c6-4fc1-b5cd-79ad3daf1674",
439 "name": "switch",
440 "type": "BOOLEAN",
441 "linkIds": [
442 83
443 ],
444 "label": "auto_resize_input",
445 "pos": [
446 -4986.662109375,
447 5424
448 ]
449 }
450 ],
451 "outputs": [
452 {
453 "id": "59c37b52-074f-49fc-9731-483f899c12c4",
454 "name": "depth_colored",
455 "type": "IMAGE",
456 "linkIds": [
457 36
458 ],
459 "localized_name": "depth_colored",
460 "pos": [
461 -3066,
462 4990
463 ]
464 },
465 {
466 "id": "f583e936-da5c-4630-9901-391fa605c1f8",
467 "name": "depth",
468 "type": "IMAGE",
469 "linkIds": [
470 40
471 ],
472 "localized_name": "depth",
473 "pos": [
474 -3066,
475 5010
476 ]
477 },
478 {
479 "id": "6845b6a1-1980-454a-9451-314f24495c1d",
480 "name": "MASK",
481 "type": "MASK",
482 "linkIds": [
483 86
484 ],
485 "pos": [
486 -3066,
487 5030
488 ]
489 }
490 ],
491 "widgets": [],
492 "nodes": [
493 {
494 "id": 13,
495 "type": "MoGeInference",
496 "pos": [
497 -3790,
498 5180
499 ],
500 "size": [
501 270,
502 230
503 ],
504 "flags": [],
505 "order": 0,
506 "mode": 0,
507 "inputs": [
508 {
509 "localized_name": "moge_model",
510 "name": "moge_model",
511 "type": "MOGE_MODEL",
512 "link": 58
513 },
514 {
515 "localized_name": "image",
516 "name": "image",
517 "type": "IMAGE",
518 "link": 81
519 },
520 {
521 "localized_name": "resolution_level",
522 "name": "resolution_level",
523 "type": "INT",
524 "widget": {
525 "name": "resolution_level"
526 },
527 "link": 73
528 },
529 {
530 "localized_name": "batch_size",
531 "name": "batch_size",
532 "type": "INT",
533 "widget": {
534 "name": "batch_size"
535 },
536 "link": 74
537 }
538 ],
539 "outputs": [
540 {
541 "localized_name": "moge_geometry",
542 "name": "moge_geometry",
543 "type": "MOGE_GEOMETRY",
544 "links": [
545 35,
546 39,
547 61
548 ]
549 }
550 ],
551 "properties": {
552 "Node name for S&R": "MoGeInference",
553 "cnr_id": "comfy-core",
554 "ver": "0.21.1",
555 "enableTabs": false,
556 "tabWidth": 65,
557 "tabXOffset": 10,
558 "hasSecondTab": false,
559 "secondTabText": "Send Back",
560 "secondTabOffset": 80,
561 "secondTabWidth": 65
562 },
563 "widgets_values": [
564 2,
565 0,
566 4,
567 true,
568 true
569 ],
570 "widgets_values_named": {
571 "resolution_level": 2,
572 "fov_x_degrees": 0,
573 "batch_size": 4,
574 "force_projection": true,
575 "apply_mask": true
576 }
577 },
578 {
579 "id": 23,
580 "type": "MoGeRender",
581 "pos": [
582 -3430,
583 4870
584 ],
585 "size": [
586 270,
587 110
588 ],
589 "flags": [],
590 "order": 1,
591 "mode": 0,
592 "inputs": [
593 {
594 "localized_name": "moge_geometry",
595 "name": "moge_geometry",
596 "type": "MOGE_GEOMETRY",
597 "link": 35
598 }
599 ],
600 "outputs": [
601 {
602 "localized_name": "IMAGE",
603 "name": "IMAGE",
604 "type": "IMAGE",
605 "links": [
606 36
607 ]
608 }
609 ],
610 "properties": {
611 "Node name for S&R": "MoGeRender",
612 "cnr_id": "comfy-core",
613 "ver": "0.21.1",
614 "enableTabs": false,
615 "tabWidth": 65,
616 "tabXOffset": 10,
617 "hasSecondTab": false,
618 "secondTabText": "Send Back",
619 "secondTabOffset": 80,
620 "secondTabWidth": 65
621 },
622 "widgets_values": [
623 "depth_colored"
624 ],
625 "widgets_values_named": {
626 "output": "depth_colored"
627 }
628 },
629 {
630 "id": 25,
631 "type": "MoGeRender",
632 "pos": [
633 -3430,
634 5030
635 ],
636 "size": [
637 270,
638 110
639 ],
640 "flags": [],
641 "order": 2,
642 "mode": 0,
643 "inputs": [
644 {
645 "localized_name": "moge_geometry",
646 "name": "moge_geometry",
647 "type": "MOGE_GEOMETRY",
648 "link": 39
649 }
650 ],
651 "outputs": [
652 {
653 "localized_name": "IMAGE",
654 "name": "IMAGE",
655 "type": "IMAGE",
656 "links": [
657 40
658 ]
659 }
660 ],
661 "properties": {
662 "Node name for S&R": "MoGeRender",
663 "cnr_id": "comfy-core",
664 "ver": "0.21.1",
665 "enableTabs": false,
666 "tabWidth": 65,
667 "tabXOffset": 10,
668 "hasSecondTab": false,
669 "secondTabText": "Send Back",
670 "secondTabOffset": 80,
671 "secondTabWidth": 65
672 },
673 "widgets_values": [
674 "depth"
675 ],
676 "widgets_values_named": {
677 "output": "depth"
678 }
679 },
680 {
681 "id": 32,
682 "type": "LoadMoGeModel",
683 "pos": [
684 -4180,
685 4880
686 ],
687 "size": [
688 270,
689 140
690 ],
691 "flags": [],
692 "order": 3,
693 "mode": 0,
694 "inputs": [
695 {
696 "localized_name": "model_name",
697 "name": "model_name",
698 "type": "COMBO",
699 "widget": {
700 "name": "model_name"
701 },
702 "link": 79
703 }
704 ],
705 "outputs": [
706 {
707 "localized_name": "MOGE_MODEL",
708 "name": "MOGE_MODEL",
709 "type": "MOGE_MODEL",
710 "links": [
711 58
712 ]
713 }
714 ],
715 "properties": {
716 "Node name for S&R": "LoadMoGeModel",
717 "cnr_id": "comfy-core",
718 "ver": "0.21.1",
719 "models": [
720 {
721 "name": "moge_2_vitl_normal_fp16.safetensors",
722 "url": "https://huggingface.co/Comfy-Org/MoGe/resolve/main/geometry_estimation/moge_2_vitl_normal_fp16.safetensors",
723 "directory": "geometry_estimation"
724 }
725 ],
726 "enableTabs": false,
727 "tabWidth": 65,
728 "tabXOffset": 10,
729 "hasSecondTab": false,
730 "secondTabText": "Send Back",
731 "secondTabOffset": 80,
732 "secondTabWidth": 65
733 },
734 "widgets_values": [
735 "moge_2_vitl_normal_fp16.safetensors"
736 ],
737 "widgets_values_named": {
738 "model_name": "moge_2_vitl_normal_fp16.safetensors"
739 }
740 },
741 {
742 "id": 36,
743 "type": "ComfyMathExpression",
744 "pos": [
745 -4720,
746 4910
747 ],
748 "size": [
749 400,
750 200
751 ],
752 "flags": [],
753 "order": 4,
754 "mode": 0,
755 "inputs": [
756 {
757 "label": "a",
758 "localized_name": "a",
759 "name": "values.a",
760 "type": "FLOAT,INT,BOOLEAN",
761 "link": 49
762 },
763 {
764 "localized_name": "b",
765 "name": "values.b",
766 "shape": 7,
767 "type": "FLOAT,INT,BOOLEAN",
768 "link": null
769 }
770 ],
771 "outputs": [
772 {
773 "localized_name": "FLOAT",
774 "name": "FLOAT",
775 "type": "FLOAT",
776 "links": null
777 },
778 {
779 "localized_name": "INT",
780 "name": "INT",
781 "type": "INT",
782 "links": null
783 },
784 {
785 "localized_name": "BOOL",
786 "name": "BOOL",
787 "type": "BOOLEAN",
788 "links": [
789 53
790 ]
791 }
792 ],
793 "properties": {
794 "Node name for S&R": "ComfyMathExpression",
795 "cnr_id": "comfy-core",
796 "ver": "0.21.1",
797 "enableTabs": false,
798 "tabWidth": 65,
799 "tabXOffset": 10,
800 "hasSecondTab": false,
801 "secondTabText": "Send Back",
802 "secondTabOffset": 80,
803 "secondTabWidth": 65
804 },
805 "widgets_values": [
806 "a > 2048"
807 ],
808 "widgets_values_named": {
809 "expression": "a > 2048"
810 }
811 },
812 {
813 "id": 37,
814 "type": "GetImageSize",
815 "pos": [
816 -4980,
817 4910
818 ],
819 "size": [
820 230,
821 160
822 ],
823 "flags": [],
824 "order": 5,
825 "mode": 0,
826 "inputs": [
827 {
828 "localized_name": "image",
829 "name": "image",
830 "type": "IMAGE",
831 "link": 48
832 }
833 ],
834 "outputs": [
835 {
836 "localized_name": "width",
837 "name": "width",
838 "type": "INT",
839 "links": [
840 49
841 ]
842 },
843 {
844 "localized_name": "height",
845 "name": "height",
846 "type": "INT",
847 "links": null
848 },
849 {
850 "localized_name": "batch_size",
851 "name": "batch_size",
852 "type": "INT",
853 "links": null
854 }
855 ],
856 "properties": {
857 "Node name for S&R": "GetImageSize",
858 "cnr_id": "comfy-core",
859 "ver": "0.21.1",
860 "enableTabs": false,
861 "tabWidth": 65,
862 "tabXOffset": 10,
863 "hasSecondTab": false,
864 "secondTabText": "Send Back",
865 "secondTabOffset": 80,
866 "secondTabWidth": 65
867 }
868 },
869 {
870 "id": 42,
871 "type": "ComfySwitchNode",
872 "pos": [
873 -4180,
874 5060
875 ],
876 "size": [
877 270,
878 130
879 ],
880 "flags": [],
881 "order": 6,
882 "mode": 0,
883 "inputs": [
884 {
885 "localized_name": "on_false",
886 "name": "on_false",
887 "shape": 7,
888 "type": "IMAGE",
889 "link": 56
890 },
891 {
892 "localized_name": "on_true",
893 "name": "on_true",
894 "shape": 7,
895 "type": "IMAGE",
896 "link": 91
897 },
898 {
899 "localized_name": "switch",
900 "name": "switch",
901 "type": "BOOLEAN",
902 "widget": {
903 "name": "switch"
904 },
905 "link": 53
906 }
907 ],
908 "outputs": [
909 {
910 "localized_name": "output",
911 "name": "output",
912 "type": "IMAGE",
913 "links": [
914 80
915 ]
916 }
917 ],
918 "properties": {
919 "Node name for S&R": "ComfySwitchNode",
920 "cnr_id": "comfy-core",
921 "ver": "0.21.1",
922 "enableTabs": false,
923 "tabWidth": 65,
924 "tabXOffset": 10,
925 "hasSecondTab": false,
926 "secondTabText": "Send Back",
927 "secondTabOffset": 80,
928 "secondTabWidth": 65
929 },
930 "widgets_values": [
931 false
932 ],
933 "widgets_values_named": {
934 "switch": false
935 }
936 },
937 {
938 "id": 45,
939 "type": "MoGeRender",
940 "pos": [
941 -3430,
942 5200
943 ],
944 "size": [
945 270,
946 110
947 ],
948 "flags": [],
949 "order": 7,
950 "mode": 0,
951 "inputs": [
952 {
953 "localized_name": "moge_geometry",
954 "name": "moge_geometry",
955 "type": "MOGE_GEOMETRY",
956 "link": 61
957 }
958 ],
959 "outputs": [
960 {
961 "localized_name": "IMAGE",
962 "name": "IMAGE",
963 "type": "IMAGE",
964 "links": [
965 85
966 ]
967 }
968 ],
969 "properties": {
970 "Node name for S&R": "MoGeRender",
971 "cnr_id": "comfy-core",
972 "ver": "0.21.1",
973 "enableTabs": false,
974 "tabWidth": 65,
975 "tabXOffset": 10,
976 "hasSecondTab": false,
977 "secondTabText": "Send Back",
978 "secondTabOffset": 80,
979 "secondTabWidth": 65
980 },
981 "widgets_values": [
982 "mask"
983 ],
984 "widgets_values_named": {
985 "output": "mask"
986 }
987 },
988 {
989 "id": 53,
990 "type": "ComfySwitchNode",
991 "pos": [
992 -4160,
993 5340
994 ],
995 "size": [
996 270,
997 130
998 ],
999 "flags": [],
1000 "order": 8,
1001 "mode": 0,
1002 "inputs": [
1003 {
1004 "localized_name": "on_false",
1005 "name": "on_false",
1006 "shape": 7,
1007 "type": "IMAGE",
1008 "link": 82
1009 },
1010 {
1011 "localized_name": "on_true",
1012 "name": "on_true",
1013 "shape": 7,
1014 "type": "IMAGE",
1015 "link": 80
1016 },
1017 {
1018 "localized_name": "switch",
1019 "name": "switch",
1020 "type": "BOOLEAN",
1021 "widget": {
1022 "name": "switch"
1023 },
1024 "link": 83
1025 }
1026 ],
1027 "outputs": [
1028 {
1029 "localized_name": "output",
1030 "name": "output",
1031 "type": "IMAGE",
1032 "links": [
1033 81
1034 ]
1035 }
1036 ],
1037 "properties": {
1038 "Node name for S&R": "ComfySwitchNode",
1039 "cnr_id": "comfy-core",
1040 "ver": "0.21.1",
1041 "enableTabs": false,
1042 "tabWidth": 65,
1043 "tabXOffset": 10,
1044 "hasSecondTab": false,
1045 "secondTabText": "Send Back",
1046 "secondTabOffset": 80,
1047 "secondTabWidth": 65
1048 },
1049 "widgets_values": [
1050 true
1051 ],
1052 "widgets_values_named": {
1053 "switch": true
1054 }
1055 },
1056 {
1057 "id": 68,
1058 "type": "ImageToMask",
1059 "pos": [
1060 -3420,
1061 5360
1062 ],
1063 "size": [
1064 270,
1065 110
1066 ],
1067 "flags": [],
1068 "order": 9,
1069 "mode": 0,
1070 "inputs": [
1071 {
1072 "localized_name": "image",
1073 "name": "image",
1074 "type": "IMAGE",
1075 "link": 85
1076 }
1077 ],
1078 "outputs": [
1079 {
1080 "localized_name": "MASK",
1081 "name": "MASK",
1082 "type": "MASK",
1083 "links": [
1084 86
1085 ]
1086 }
1087 ],
1088 "properties": {
1089 "Node name for S&R": "ImageToMask",
1090 "cnr_id": "comfy-core",
1091 "ver": "0.22.0",
1092 "enableTabs": false,
1093 "tabWidth": 65,
1094 "tabXOffset": 10,
1095 "hasSecondTab": false,
1096 "secondTabText": "Send Back",
1097 "secondTabOffset": 80,
1098 "secondTabWidth": 65
1099 },
1100 "widgets_values": [
1101 "red"
1102 ],
1103 "widgets_values_named": {
1104 "channel": "red"
1105 }
1106 },
1107 {
1108 "id": 70,
1109 "type": "ResizeImageMaskNode",
1110 "pos": [
1111 -4660,
1112 5220
1113 ],
1114 "size": [
1115 270,
1116 142
1117 ],
1118 "flags": [],
1119 "order": 10,
1120 "mode": 0,
1121 "inputs": [
1122 {
1123 "localized_name": "input",
1124 "name": "input",
1125 "type": "IMAGE,MASK",
1126 "link": 92
1127 }
1128 ],
1129 "outputs": [
1130 {
1131 "localized_name": "resized",
1132 "name": "resized",
1133 "type": "IMAGE",
1134 "links": [
1135 91
1136 ]
1137 }
1138 ],
1139 "properties": {
1140 "Node name for S&R": "ResizeImageMaskNode"
1141 },
1142 "widgets_values": [
1143 "scale longer dimension",
1144 2048,
1145 "lanczos"
1146 ],
1147 "widgets_values_named": {
1148 "resize_type": "scale longer dimension",
1149 "resize_type.longer_size": 2048,
1150 "scale_method": "lanczos"
1151 }
1152 }
1153 ],
1154 "groups": [
1155 {
1156 "id": 1,
1157 "title": "auto_resize_if_width_gt_2048",
1158 "bounding": [
1159 -5000,
1160 4840,
1161 690,
1162 280
1163 ],
1164 "color": "#3f789e",
1165 "flags": []
1166 }
1167 ],
1168 "links": [
1169 {
1170 "id": 58,
1171 "origin_id": 32,
1172 "origin_slot": 0,
1173 "target_id": 13,
1174 "target_slot": 0,
1175 "type": "MOGE_MODEL"
1176 },
1177 {
1178 "id": 35,
1179 "origin_id": 13,
1180 "origin_slot": 0,
1181 "target_id": 23,
1182 "target_slot": 0,
1183 "type": "MOGE_GEOMETRY"
1184 },
1185 {
1186 "id": 39,
1187 "origin_id": 13,
1188 "origin_slot": 0,
1189 "target_id": 25,
1190 "target_slot": 0,
1191 "type": "MOGE_GEOMETRY"
1192 },
1193 {
1194 "id": 49,
1195 "origin_id": 37,
1196 "origin_slot": 0,
1197 "target_id": 36,
1198 "target_slot": 0,
1199 "type": "INT"
1200 },
1201 {
1202 "id": 53,
1203 "origin_id": 36,
1204 "origin_slot": 2,
1205 "target_id": 42,
1206 "target_slot": 2,
1207 "type": "BOOLEAN"
1208 },
1209 {
1210 "id": 61,
1211 "origin_id": 13,
1212 "origin_slot": 0,
1213 "target_id": 45,
1214 "target_slot": 0,
1215 "type": "MOGE_GEOMETRY"
1216 },
1217 {
1218 "id": 48,
1219 "origin_id": -10,
1220 "origin_slot": 0,
1221 "target_id": 37,
1222 "target_slot": 0,
1223 "type": "IMAGE"
1224 },
1225 {
1226 "id": 56,
1227 "origin_id": -10,
1228 "origin_slot": 0,
1229 "target_id": 42,
1230 "target_slot": 0,
1231 "type": "IMAGE"
1232 },
1233 {
1234 "id": 36,
1235 "origin_id": 23,
1236 "origin_slot": 0,
1237 "target_id": -20,
1238 "target_slot": 0,
1239 "type": "IMAGE"
1240 },
1241 {
1242 "id": 40,
1243 "origin_id": 25,
1244 "origin_slot": 0,
1245 "target_id": -20,
1246 "target_slot": 1,
1247 "type": "IMAGE"
1248 },
1249 {
1250 "id": 73,
1251 "origin_id": -10,
1252 "origin_slot": 1,
1253 "target_id": 13,
1254 "target_slot": 2,
1255 "type": "INT"
1256 },
1257 {
1258 "id": 74,
1259 "origin_id": -10,
1260 "origin_slot": 2,
1261 "target_id": 13,
1262 "target_slot": 3,
1263 "type": "INT"
1264 },
1265 {
1266 "id": 79,
1267 "origin_id": -10,
1268 "origin_slot": 3,
1269 "target_id": 32,
1270 "target_slot": 0,
1271 "type": "COMBO"
1272 },
1273 {
1274 "id": 80,
1275 "origin_id": 42,
1276 "origin_slot": 0,
1277 "target_id": 53,
1278 "target_slot": 1,
1279 "type": "IMAGE"
1280 },
1281 {
1282 "id": 81,
1283 "origin_id": 53,
1284 "origin_slot": 0,
1285 "target_id": 13,
1286 "target_slot": 1,
1287 "type": "IMAGE"
1288 },
1289 {
1290 "id": 82,
1291 "origin_id": -10,
1292 "origin_slot": 0,
1293 "target_id": 53,
1294 "target_slot": 0,
1295 "type": "IMAGE"
1296 },
1297 {
1298 "id": 83,
1299 "origin_id": -10,
1300 "origin_slot": 4,
1301 "target_id": 53,
1302 "target_slot": 2,
1303 "type": "BOOLEAN"
1304 },
1305 {
1306 "id": 85,
1307 "origin_id": 45,
1308 "origin_slot": 0,
1309 "target_id": 68,
1310 "target_slot": 0,
1311 "type": "IMAGE"
1312 },
1313 {
1314 "id": 86,
1315 "origin_id": 68,
1316 "origin_slot": 0,
1317 "target_id": -20,
1318 "target_slot": 2,
1319 "type": "MASK"
1320 },
1321 {
1322 "id": 91,
1323 "origin_id": 70,
1324 "origin_slot": 0,
1325 "target_id": 42,
1326 "target_slot": 1,
1327 "type": "IMAGE"
1328 },
1329 {
1330 "id": 92,
1331 "origin_id": -10,
1332 "origin_slot": 0,
1333 "target_id": 70,
1334 "target_slot": 0,
1335 "type": "IMAGE"
1336 }
1337 ],
1338 "extra": []
1339 }
1340 ]
1341 },
1342 "config": [],
1343 "extra": {
1344 "ds": {
1345 "scale": 0.39133244175890974,
1346 "offset": [
1347 6083.659586230557,
1348 -4163.543229140488
1349 ]
1350 },
1351 "frontendVersion": "1.51.9",
1352 "VHS_latentpreview": false,
1353 "VHS_latentpreviewrate": 0,
1354 "VHS_MetadataImage": true,
1355 "VHS_KeepIntermediate": true
1356 },
1357 "version": 0.4
1358}