{
  "id": "b8855bb2-4ecb-4d67-94cc-c373b4db93dd",
  "revision": 0,
  "last_node_id": 69,
  "last_link_id": 91,
  "nodes": [
    {
      "id": 9,
      "type": "LoadImage",
      "pos": [
        -4390,
        5000
      ],
      "size": [
        390,
        440
      ],
      "flags": {},
      "order": 0,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            84
          ]
        },
        {
          "name": "MASK",
          "type": "MASK",
          "links": null
        }
      ],
      "properties": {
        "Node name for S&R": "LoadImage",
        "cnr_id": "comfy-core",
        "ver": "0.21.1",
        "enableTabs": false,
        "tabWidth": 65,
        "tabXOffset": 10,
        "hasSecondTab": false,
        "secondTabText": "Send Back",
        "secondTabOffset": 80,
        "secondTabWidth": 65
      },
      "widgets_values": [
        "modern_living_room.png",
        "image"
      ],
      "widgets_values_named": {
        "image": "modern_living_room.png",
        "upload": "image"
      }
    },
    {
      "id": 50,
      "type": "MarkdownNote",
      "pos": [
        -4940,
        5000
      ],
      "size": [
        510,
        840
      ],
      "flags": {},
      "order": 1,
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "properties": {},
      "widgets_values": [
        "## moge_image_to_mesh\n\n**Input Assets**\n- [modern_living_room.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/modern_living_room.png) — required workflow input (`input/modern_living_room.png`)\n\n**Single perspective photo -> textured GLB**\n\n`Load Image` -> `Geometry Estimation (MoGe)` -> `Save GLB`\n\n### Main flow\n- Runs MoGe inference on one source image\n- Converts the inferred geometry into a mesh\n- Exposes OpenGL and DirectX normal previews\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| `mesh_frame_index` | Batch/frame index used when converting geometry to mesh; use `0` for one image |\n| `mesh_decimation` | Mesh decimation step; `1` keeps the densest mesh |\n| `mesh_gap_threshold` | Removes faces across large depth discontinuities; `0` disables the filter |\n| `mesh_texture` | Bakes source image colors into the exported GLB |\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- `mesh`: mesh output for `Save GLB`\n- `normal_opengl`: preview rendered through `MoGeRender`\n- `normal_directx`: preview rendered through `MoGeRender`\n"
      ],
      "widgets_values_named": {
        "text": "## moge_image_to_mesh\n\n**Input Assets**\n- [modern_living_room.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/modern_living_room.png) — required workflow input (`input/modern_living_room.png`)\n\n**Single perspective photo -> textured GLB**\n\n`Load Image` -> `Geometry Estimation (MoGe)` -> `Save GLB`\n\n### Main flow\n- Runs MoGe inference on one source image\n- Converts the inferred geometry into a mesh\n- Exposes OpenGL and DirectX normal previews\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| `mesh_frame_index` | Batch/frame index used when converting geometry to mesh; use `0` for one image |\n| `mesh_decimation` | Mesh decimation step; `1` keeps the densest mesh |\n| `mesh_gap_threshold` | Removes faces across large depth discontinuities; `0` disables the filter |\n| `mesh_texture` | Bakes source image colors into the exported GLB |\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- `mesh`: mesh output for `Save GLB`\n- `normal_opengl`: preview rendered through `MoGeRender`\n- `normal_directx`: preview rendered through `MoGeRender`\n"
      },
      "color": "#222",
      "bgcolor": "#000"
    },
    {
      "id": 46,
      "type": "PreviewImage",
      "pos": [
        -2950,
        5000
      ],
      "size": [
        350,
        490
      ],
      "flags": {},
      "order": 5,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 88
        }
      ],
      "outputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "links": null
        }
      ],
      "title": "Preview Image (normal_opengl)",
      "properties": {
        "Node name for S&R": "PreviewImage (normal_opengl)",
        "cnr_id": "comfy-core",
        "ver": "0.21.1",
        "enableTabs": false,
        "tabWidth": 65,
        "tabXOffset": 10,
        "hasSecondTab": false,
        "secondTabText": "Send Back",
        "secondTabOffset": 80,
        "secondTabWidth": 65
      }
    },
    {
      "id": 47,
      "type": "PreviewImage",
      "pos": [
        -2570,
        5000
      ],
      "size": [
        350,
        490
      ],
      "flags": {},
      "order": 6,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 89
        }
      ],
      "outputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "links": null
        }
      ],
      "title": "Preview Image (normal_directx)",
      "properties": {
        "Node name for S&R": "PreviewImage (normal_directx)",
        "cnr_id": "comfy-core",
        "ver": "0.21.1",
        "enableTabs": false,
        "tabWidth": 65,
        "tabXOffset": 10,
        "hasSecondTab": false,
        "secondTabText": "Send Back",
        "secondTabOffset": 80,
        "secondTabWidth": 65
      }
    },
    {
      "id": 21,
      "type": "SaveGLB",
      "pos": [
        -3470,
        5000
      ],
      "size": [
        490,
        480
      ],
      "flags": {},
      "order": 4,
      "mode": 0,
      "inputs": [
        {
          "name": "mesh",
          "type": "MESH,FILE_3D_GLB,FILE_3D_GLTF,FILE_3D_OBJ,FILE_3D_FBX,FILE_3D_STL,FILE_3D_USDZ,FILE_3D_PLY,FILE_3D_SPLAT,FILE_3D_SPZ,FILE_3D_KSPLAT,FILE_3D_SPLAT_ANY,FILE_3D_POINT_CLOUD_ANY,FILE_3D",
          "link": 87
        }
      ],
      "outputs": [],
      "properties": {
        "Node name for S&R": "SaveGLB",
        "cnr_id": "comfy-core",
        "ver": "0.21.1",
        "enableTabs": false,
        "tabWidth": 65,
        "tabXOffset": 10,
        "hasSecondTab": false,
        "secondTabText": "Send Back",
        "secondTabOffset": 80,
        "secondTabWidth": 65,
        "Scene Config": {
          "showGrid": true,
          "backgroundColor": "#282828",
          "backgroundImage": "",
          "backgroundRenderMode": "tiled",
          "models": [
            {
              "position": {
                "x": 0,
                "y": 0,
                "z": 0
              },
              "quaternion": {
                "x": 0,
                "y": 0,
                "z": 0,
                "w": 1
              },
              "scale": {
                "x": 1,
                "y": 1,
                "z": 1
              }
            }
          ]
        },
        "Camera Config": {
          "cameraType": "perspective",
          "fov": 35,
          "state": {
            "position": {
              "x": 1.1000152510214236,
              "y": 2.714650284264146,
              "z": 6.958331752663242
            },
            "target": {
              "x": -0.16036242564092565,
              "y": 1.3121342154705629,
              "z": 0.06791863401947583
            },
            "zoom": 1,
            "cameraType": "perspective"
          }
        },
        "Light Config": {
          "intensity": 2.4000000000000004,
          "hdri": {
            "enabled": false,
            "hdriPath": "",
            "showAsBackground": false,
            "intensity": 1
          }
        },
        "Model Config": {
          "upDirection": "original",
          "materialMode": "original",
          "showSkeleton": false,
          "gizmo": {
            "enabled": false,
            "mode": "translate",
            "position": {
              "x": 0,
              "y": 0,
              "z": 0
            },
            "rotation": {
              "x": 0,
              "y": 0,
              "z": 0
            },
            "scale": {
              "x": 1,
              "y": 1,
              "z": 1
            }
          }
        },
        "Last Time Model File": "3d/25b04b6945123d64f83a0806c7ace4863dd1ef395dfc0b5c62ee2af0cd44f12d.glb",
        "Last Time Model Folder": "output"
      },
      "widgets_values": [
        "3d/ComfyUI"
      ],
      "widgets_values_named": {
        "filename_prefix": "3d/ComfyUI"
      }
    },
    {
      "id": 52,
      "type": "MarkdownNote",
      "pos": [
        -5670,
        5000
      ],
      "size": [
        700,
        840
      ],
      "flags": {},
      "order": 2,
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "title": "Model Link",
      "properties": {},
      "widgets_values": [
        "## MoGe — models & downloads\n\n**ModelScope mirrors** (alternative repo location)\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## 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"
      ],
      "widgets_values_named": {
        "text": "## MoGe — models & downloads\n\n**ModelScope mirrors** (alternative repo location)\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## 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"
      },
      "color": "#222",
      "bgcolor": "#000"
    },
    {
      "id": 67,
      "type": "936dfaf2-575a-48b5-9e0c-df391319d11f",
      "pos": [
        -3950,
        5000
      ],
      "size": [
        430,
        480
      ],
      "flags": {},
      "order": 3,
      "mode": 0,
      "inputs": [
        {
          "label": "auto_resize_input",
          "name": "switch",
          "type": "BOOLEAN",
          "widget": {
            "name": "switch"
          },
          "link": null
        },
        {
          "name": "source_image",
          "type": "IMAGE",
          "link": 84
        }
      ],
      "outputs": [
        {
          "name": "mesh",
          "type": "MESH",
          "links": [
            87
          ]
        },
        {
          "name": "normal_opengl",
          "type": "IMAGE",
          "links": [
            88
          ]
        },
        {
          "name": "normal_directx",
          "type": "IMAGE",
          "links": [
            89
          ]
        }
      ],
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.21.1",
        "enableTabs": false,
        "tabWidth": 65,
        "tabXOffset": 10,
        "hasSecondTab": false,
        "secondTabText": "Send Back",
        "secondTabOffset": 80,
        "secondTabWidth": 65,
        "previewExposures": []
      },
      "widgets_values": [
        9,
        4,
        0,
        1,
        0.04,
        true,
        true,
        "moge_2_vitl_normal_fp16.safetensors"
      ],
      "widgets_values_named": {
        "inference_resolution": 9,
        "inference_batch_size": 4,
        "mesh_frame_index": 0,
        "mesh_decimation": 1,
        "mesh_gap_threshold": 0.04,
        "mesh_texture": true,
        "switch": true,
        "moge_model": "moge_2_vitl_normal_fp16.safetensors"
      }
    }
  ],
  "links": [
    [
      87,
      67,
      0,
      21,
      0,
      "MESH"
    ],
    [
      88,
      67,
      1,
      46,
      0,
      "IMAGE"
    ],
    [
      89,
      67,
      2,
      47,
      0,
      "IMAGE"
    ],
    [
      84,
      9,
      0,
      67,
      1,
      "IMAGE"
    ]
  ],
  "groups": [],
  "definitions": {
    "subgraphs": [
      {
        "id": "936dfaf2-575a-48b5-9e0c-df391319d11f",
        "version": 1,
        "state": {
          "lastGroupId": 1,
          "lastNodeId": 69,
          "lastLinkId": 91,
          "lastRerouteId": 0
        },
        "revision": 0,
        "config": {},
        "name": "Geometry Estimation (MoGe)",
        "inputNode": {
          "id": -10,
          "bounding": [
            -5270,
            5170,
            167.337890625,
            228
          ]
        },
        "outputNode": {
          "id": -20,
          "bounding": [
            -3090,
            4966,
            131.51953125,
            108
          ]
        },
        "inputs": [
          {
            "id": "06eefa21-8e60-49f3-9a34-35b081f4ae52",
            "name": "inference_resolution",
            "type": "INT",
            "linkIds": [
              73
            ],
            "localized_name": "inference_resolution",
            "pos": [
              -5126.662109375,
              5214
            ]
          },
          {
            "id": "616638fe-f603-4d10-bae9-fc87c134380f",
            "name": "inference_batch_size",
            "type": "INT",
            "linkIds": [
              74
            ],
            "localized_name": "inference_batch_size",
            "pos": [
              -5126.662109375,
              5234
            ]
          },
          {
            "id": "fcacfca9-7927-4c38-94da-8ab22256325f",
            "name": "mesh_frame_index",
            "type": "INT",
            "linkIds": [
              75
            ],
            "localized_name": "mesh_frame_index",
            "pos": [
              -5126.662109375,
              5254
            ]
          },
          {
            "id": "acbfe7f9-1b69-42c1-8614-4ccf54b28d4e",
            "name": "mesh_decimation",
            "type": "INT",
            "linkIds": [
              76
            ],
            "localized_name": "mesh_decimation",
            "pos": [
              -5126.662109375,
              5274
            ]
          },
          {
            "id": "cd20f9a7-3a0a-4c4c-98d7-96f423867b87",
            "name": "mesh_gap_threshold",
            "type": "FLOAT",
            "linkIds": [
              77
            ],
            "localized_name": "mesh_gap_threshold",
            "pos": [
              -5126.662109375,
              5294
            ]
          },
          {
            "id": "6f5c15f7-7f77-4fc9-b47b-3514467b06b6",
            "name": "mesh_texture",
            "type": "BOOLEAN",
            "linkIds": [
              78
            ],
            "localized_name": "mesh_texture",
            "pos": [
              -5126.662109375,
              5314
            ]
          },
          {
            "id": "badf1be1-53c6-4fc1-b5cd-79ad3daf1674",
            "name": "switch",
            "type": "BOOLEAN",
            "linkIds": [
              83
            ],
            "label": "auto_resize_input",
            "pos": [
              -5126.662109375,
              5354
            ]
          },
          {
            "id": "65694805-186e-4181-a721-df8b5af49d31",
            "name": "moge_model",
            "type": "COMBO",
            "linkIds": [
              79
            ],
            "localized_name": "moge_model",
            "pos": [
              -5126.662109375,
              5334
            ]
          },
          {
            "id": "cc8ce79d-ba20-4a25-a51c-c2afcd35e520",
            "name": "source_image",
            "type": "IMAGE",
            "linkIds": [
              48,
              55,
              56,
              82
            ],
            "localized_name": "source_image",
            "pos": [
              -5126.662109375,
              5194
            ]
          }
        ],
        "outputs": [
          {
            "id": "3c616ea0-9a4c-4cff-a405-662320229df0",
            "name": "mesh",
            "type": "MESH",
            "linkIds": [
              34
            ],
            "localized_name": "mesh",
            "pos": [
              -3066,
              4990
            ]
          },
          {
            "id": "ff85a763-b7f7-4bcc-9b1d-a4eaf55ad2f9",
            "name": "normal_opengl",
            "type": "IMAGE",
            "linkIds": [
              62
            ],
            "localized_name": "normal_opengl",
            "pos": [
              -3066,
              5010
            ]
          },
          {
            "id": "26b3f88a-0ba0-4d4d-9c7d-0ad76106c844",
            "name": "normal_directx",
            "type": "IMAGE",
            "linkIds": [
              63
            ],
            "localized_name": "normal_directx",
            "pos": [
              -3066,
              5030
            ]
          }
        ],
        "widgets": [],
        "nodes": [
          {
            "id": 54,
            "type": "MoGePointMapToMesh",
            "pos": [
              -3440,
              5220
            ],
            "size": [
              290,
              154.00002232304328
            ],
            "flags": {},
            "order": 0,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "moge_geometry",
                "name": "moge_geometry",
                "type": "MOGE_GEOMETRY",
                "link": 33
              },
              {
                "localized_name": "batch_index",
                "name": "batch_index",
                "type": "INT",
                "widget": {
                  "name": "batch_index"
                },
                "link": 75
              },
              {
                "localized_name": "decimation",
                "name": "decimation",
                "type": "INT",
                "widget": {
                  "name": "decimation"
                },
                "link": 76
              },
              {
                "localized_name": "discontinuity_threshold",
                "name": "discontinuity_threshold",
                "type": "FLOAT",
                "widget": {
                  "name": "discontinuity_threshold"
                },
                "link": 77
              },
              {
                "localized_name": "texture",
                "name": "texture",
                "type": "BOOLEAN",
                "widget": {
                  "name": "texture"
                },
                "link": 78
              }
            ],
            "outputs": [
              {
                "localized_name": "MESH",
                "name": "MESH",
                "type": "MESH",
                "links": [
                  34
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "MoGePointMapToMesh",
              "cnr_id": "comfy-core",
              "ver": "0.21.1",
              "enableTabs": false,
              "tabWidth": 65,
              "tabXOffset": 10,
              "hasSecondTab": false,
              "secondTabText": "Send Back",
              "secondTabOffset": 80,
              "secondTabWidth": 65
            },
            "widgets_values": [
              0,
              1,
              0.04,
              true
            ],
            "widgets_values_named": {
              "batch_index": 0,
              "decimation": 1,
              "discontinuity_threshold": 0.04,
              "texture": true
            }
          },
          {
            "id": 55,
            "type": "MoGeInference",
            "pos": [
              -3790,
              5180
            ],
            "size": [
              270,
              149.999946076193
            ],
            "flags": {},
            "order": 1,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "moge_model",
                "name": "moge_model",
                "type": "MOGE_MODEL",
                "link": 58
              },
              {
                "localized_name": "image",
                "name": "image",
                "type": "IMAGE",
                "link": 81
              },
              {
                "localized_name": "resolution_level",
                "name": "resolution_level",
                "type": "INT",
                "widget": {
                  "name": "resolution_level"
                },
                "link": 73
              },
              {
                "localized_name": "batch_size",
                "name": "batch_size",
                "type": "INT",
                "widget": {
                  "name": "batch_size"
                },
                "link": 74
              }
            ],
            "outputs": [
              {
                "localized_name": "moge_geometry",
                "name": "moge_geometry",
                "type": "MOGE_GEOMETRY",
                "links": [
                  33,
                  59,
                  60
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "MoGeInference",
              "cnr_id": "comfy-core",
              "ver": "0.21.1",
              "enableTabs": false,
              "tabWidth": 65,
              "tabXOffset": 10,
              "hasSecondTab": false,
              "secondTabText": "Send Back",
              "secondTabOffset": 80,
              "secondTabWidth": 65
            },
            "widgets_values": [
              9,
              0,
              4,
              true,
              true,
              3
            ],
            "widgets_values_named": {
              "resolution_level": 9,
              "fov_x_degrees": 0,
              "batch_size": 4,
              "force_projection": true,
              "apply_mask": true,
              "refine_steps": 3
            }
          },
          {
            "id": 58,
            "type": "LoadMoGeModel",
            "pos": [
              -4180,
              4910
            ],
            "size": [
              270,
              140
            ],
            "flags": {},
            "order": 2,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "model_name",
                "name": "model_name",
                "type": "COMBO",
                "widget": {
                  "name": "model_name"
                },
                "link": 79
              }
            ],
            "outputs": [
              {
                "localized_name": "MOGE_MODEL",
                "name": "MOGE_MODEL",
                "type": "MOGE_MODEL",
                "links": [
                  58
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "LoadMoGeModel",
              "cnr_id": "comfy-core",
              "ver": "0.21.1",
              "models": [
                {
                  "name": "moge_2_vitl_normal_fp16.safetensors",
                  "url": "https://huggingface.co/Comfy-Org/MoGe/resolve/main/geometry_estimation/moge_2_vitl_normal_fp16.safetensors",
                  "directory": "geometry_estimation"
                }
              ],
              "enableTabs": false,
              "tabWidth": 65,
              "tabXOffset": 10,
              "hasSecondTab": false,
              "secondTabText": "Send Back",
              "secondTabOffset": 80,
              "secondTabWidth": 65
            },
            "widgets_values": [
              "moge_2_vitl_normal_fp16.safetensors"
            ],
            "widgets_values_named": {
              "model_name": "moge_2_vitl_normal_fp16.safetensors"
            }
          },
          {
            "id": 59,
            "type": "ComfyMathExpression",
            "pos": [
              -4720,
              4910
            ],
            "size": [
              400,
              200
            ],
            "flags": {},
            "order": 3,
            "mode": 0,
            "inputs": [
              {
                "label": "a",
                "localized_name": "a",
                "name": "values.a",
                "type": "FLOAT,INT,BOOLEAN",
                "link": 49
              },
              {
                "label": "b",
                "localized_name": "b",
                "name": "values.b",
                "shape": 7,
                "type": "FLOAT,INT,BOOLEAN",
                "link": null
              }
            ],
            "outputs": [
              {
                "localized_name": "FLOAT",
                "name": "FLOAT",
                "type": "FLOAT",
                "links": null
              },
              {
                "localized_name": "INT",
                "name": "INT",
                "type": "INT",
                "links": null
              },
              {
                "localized_name": "BOOL",
                "name": "BOOL",
                "type": "BOOLEAN",
                "links": [
                  53
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "ComfyMathExpression",
              "cnr_id": "comfy-core",
              "ver": "0.21.1",
              "enableTabs": false,
              "tabWidth": 65,
              "tabXOffset": 10,
              "hasSecondTab": false,
              "secondTabText": "Send Back",
              "secondTabOffset": 80,
              "secondTabWidth": 65
            },
            "widgets_values": [
              "a > 2048"
            ],
            "widgets_values_named": {
              "expression": "a > 2048"
            }
          },
          {
            "id": 60,
            "type": "GetImageSize",
            "pos": [
              -4980,
              4910
            ],
            "size": [
              230,
              160
            ],
            "flags": {},
            "order": 4,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "image",
                "name": "image",
                "type": "IMAGE",
                "link": 48
              }
            ],
            "outputs": [
              {
                "localized_name": "width",
                "name": "width",
                "type": "INT",
                "links": [
                  49
                ]
              },
              {
                "localized_name": "height",
                "name": "height",
                "type": "INT",
                "links": null
              },
              {
                "localized_name": "batch_size",
                "name": "batch_size",
                "type": "INT",
                "links": null
              }
            ],
            "properties": {
              "Node name for S&R": "GetImageSize",
              "cnr_id": "comfy-core",
              "ver": "0.21.1",
              "enableTabs": false,
              "tabWidth": 65,
              "tabXOffset": 10,
              "hasSecondTab": false,
              "secondTabText": "Send Back",
              "secondTabOffset": 80,
              "secondTabWidth": 65
            }
          },
          {
            "id": 61,
            "type": "ImageScaleToMaxDimension",
            "pos": [
              -4650,
              5210
            ],
            "size": [
              310,
              110
            ],
            "flags": {},
            "order": 5,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "image",
                "name": "image",
                "type": "IMAGE",
                "link": 55
              }
            ],
            "outputs": [
              {
                "localized_name": "IMAGE",
                "name": "IMAGE",
                "type": "IMAGE",
                "links": [
                  54
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "ImageScaleToMaxDimension",
              "cnr_id": "comfy-core",
              "enableTabs": false,
              "tabWidth": 65,
              "tabXOffset": 10,
              "hasSecondTab": false,
              "secondTabText": "Send Back",
              "secondTabOffset": 80,
              "secondTabWidth": 65
            },
            "widgets_values": [
              "lanczos",
              2048
            ],
            "widgets_values_named": {
              "upscale_method": "lanczos",
              "largest_size": 2048
            }
          },
          {
            "id": 62,
            "type": "ComfySwitchNode",
            "pos": [
              -4180,
              5120
            ],
            "size": [
              270,
              130
            ],
            "flags": {},
            "order": 6,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "on_false",
                "name": "on_false",
                "shape": 7,
                "type": "IMAGE",
                "link": 56
              },
              {
                "localized_name": "on_true",
                "name": "on_true",
                "shape": 7,
                "type": "IMAGE",
                "link": 54
              },
              {
                "localized_name": "switch",
                "name": "switch",
                "type": "BOOLEAN",
                "widget": {
                  "name": "switch"
                },
                "link": 53
              }
            ],
            "outputs": [
              {
                "localized_name": "output",
                "name": "output",
                "type": "IMAGE",
                "links": [
                  80
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "ComfySwitchNode",
              "cnr_id": "comfy-core",
              "ver": "0.21.1",
              "enableTabs": false,
              "tabWidth": 65,
              "tabXOffset": 10,
              "hasSecondTab": false,
              "secondTabText": "Send Back",
              "secondTabOffset": 80,
              "secondTabWidth": 65
            },
            "widgets_values": [
              false
            ],
            "widgets_values_named": {
              "switch": false
            }
          },
          {
            "id": 63,
            "type": "MoGeRender",
            "pos": [
              -3430,
              4890
            ],
            "size": [
              270,
              110
            ],
            "flags": {},
            "order": 7,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "moge_geometry",
                "name": "moge_geometry",
                "type": "MOGE_GEOMETRY",
                "link": 59
              }
            ],
            "outputs": [
              {
                "localized_name": "IMAGE",
                "name": "IMAGE",
                "type": "IMAGE",
                "links": [
                  62
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "MoGeRender",
              "cnr_id": "comfy-core",
              "ver": "0.21.1",
              "enableTabs": false,
              "tabWidth": 65,
              "tabXOffset": 10,
              "hasSecondTab": false,
              "secondTabText": "Send Back",
              "secondTabOffset": 80,
              "secondTabWidth": 65
            },
            "widgets_values": [
              "normal_opengl"
            ],
            "widgets_values_named": {
              "output": "normal_opengl"
            }
          },
          {
            "id": 64,
            "type": "MoGeRender",
            "pos": [
              -3430,
              5050
            ],
            "size": [
              270,
              110
            ],
            "flags": {},
            "order": 8,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "moge_geometry",
                "name": "moge_geometry",
                "type": "MOGE_GEOMETRY",
                "link": 60
              }
            ],
            "outputs": [
              {
                "localized_name": "IMAGE",
                "name": "IMAGE",
                "type": "IMAGE",
                "links": [
                  63
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "MoGeRender",
              "cnr_id": "comfy-core",
              "ver": "0.21.1",
              "enableTabs": false,
              "tabWidth": 65,
              "tabXOffset": 10,
              "hasSecondTab": false,
              "secondTabText": "Send Back",
              "secondTabOffset": 80,
              "secondTabWidth": 65
            },
            "widgets_values": [
              "normal_directx"
            ],
            "widgets_values_named": {
              "output": "normal_directx"
            }
          },
          {
            "id": 66,
            "type": "ComfySwitchNode",
            "pos": [
              -4160,
              5340
            ],
            "size": [
              270,
              130
            ],
            "flags": {},
            "order": 9,
            "mode": 0,
            "inputs": [
              {
                "localized_name": "on_false",
                "name": "on_false",
                "shape": 7,
                "type": "IMAGE",
                "link": 82
              },
              {
                "localized_name": "on_true",
                "name": "on_true",
                "shape": 7,
                "type": "IMAGE",
                "link": 80
              },
              {
                "localized_name": "switch",
                "name": "switch",
                "type": "BOOLEAN",
                "widget": {
                  "name": "switch"
                },
                "link": 83
              }
            ],
            "outputs": [
              {
                "localized_name": "output",
                "name": "output",
                "type": "IMAGE",
                "links": [
                  81
                ]
              }
            ],
            "properties": {
              "Node name for S&R": "ComfySwitchNode",
              "cnr_id": "comfy-core",
              "ver": "0.21.1",
              "enableTabs": false,
              "tabWidth": 65,
              "tabXOffset": 10,
              "hasSecondTab": false,
              "secondTabText": "Send Back",
              "secondTabOffset": 80,
              "secondTabWidth": 65
            },
            "widgets_values": [
              true
            ],
            "widgets_values_named": {
              "switch": true
            }
          }
        ],
        "groups": [
          {
            "id": 1,
            "title": "auto_resize_if_width_gt_2048",
            "bounding": [
              -5000,
              4840,
              690,
              280
            ],
            "color": "#3f789e",
            "flags": {}
          }
        ],
        "links": [
          {
            "id": 33,
            "origin_id": 55,
            "origin_slot": 0,
            "target_id": 54,
            "target_slot": 0,
            "type": "MOGE_GEOMETRY"
          },
          {
            "id": 58,
            "origin_id": 58,
            "origin_slot": 0,
            "target_id": 55,
            "target_slot": 0,
            "type": "MOGE_MODEL"
          },
          {
            "id": 54,
            "origin_id": 61,
            "origin_slot": 0,
            "target_id": 62,
            "target_slot": 1,
            "type": "IMAGE"
          },
          {
            "id": 53,
            "origin_id": 59,
            "origin_slot": 2,
            "target_id": 62,
            "target_slot": 2,
            "type": "BOOLEAN"
          },
          {
            "id": 59,
            "origin_id": 55,
            "origin_slot": 0,
            "target_id": 63,
            "target_slot": 0,
            "type": "MOGE_GEOMETRY"
          },
          {
            "id": 60,
            "origin_id": 55,
            "origin_slot": 0,
            "target_id": 64,
            "target_slot": 0,
            "type": "MOGE_GEOMETRY"
          },
          {
            "id": 34,
            "origin_id": 54,
            "origin_slot": 0,
            "target_id": -20,
            "target_slot": 0,
            "type": "MESH"
          },
          {
            "id": 62,
            "origin_id": 63,
            "origin_slot": 0,
            "target_id": -20,
            "target_slot": 1,
            "type": "IMAGE"
          },
          {
            "id": 63,
            "origin_id": 64,
            "origin_slot": 0,
            "target_id": -20,
            "target_slot": 2,
            "type": "IMAGE"
          },
          {
            "id": 80,
            "origin_id": 62,
            "origin_slot": 0,
            "target_id": 66,
            "target_slot": 1,
            "type": "IMAGE"
          },
          {
            "id": 81,
            "origin_id": 66,
            "origin_slot": 0,
            "target_id": 55,
            "target_slot": 1,
            "type": "IMAGE"
          },
          {
            "id": 49,
            "origin_id": 60,
            "origin_slot": 0,
            "target_id": 59,
            "target_slot": 0,
            "type": "INT"
          },
          {
            "id": 73,
            "origin_id": -10,
            "origin_slot": 0,
            "target_id": 55,
            "target_slot": 2,
            "type": "INT"
          },
          {
            "id": 74,
            "origin_id": -10,
            "origin_slot": 1,
            "target_id": 55,
            "target_slot": 3,
            "type": "INT"
          },
          {
            "id": 75,
            "origin_id": -10,
            "origin_slot": 2,
            "target_id": 54,
            "target_slot": 1,
            "type": "INT"
          },
          {
            "id": 76,
            "origin_id": -10,
            "origin_slot": 3,
            "target_id": 54,
            "target_slot": 2,
            "type": "INT"
          },
          {
            "id": 77,
            "origin_id": -10,
            "origin_slot": 4,
            "target_id": 54,
            "target_slot": 3,
            "type": "FLOAT"
          },
          {
            "id": 78,
            "origin_id": -10,
            "origin_slot": 5,
            "target_id": 54,
            "target_slot": 4,
            "type": "BOOLEAN"
          },
          {
            "id": 83,
            "origin_id": -10,
            "origin_slot": 6,
            "target_id": 66,
            "target_slot": 2,
            "type": "BOOLEAN"
          },
          {
            "id": 79,
            "origin_id": -10,
            "origin_slot": 7,
            "target_id": 58,
            "target_slot": 0,
            "type": "COMBO"
          },
          {
            "id": 48,
            "origin_id": -10,
            "origin_slot": 8,
            "target_id": 60,
            "target_slot": 0,
            "type": "IMAGE"
          },
          {
            "id": 55,
            "origin_id": -10,
            "origin_slot": 8,
            "target_id": 61,
            "target_slot": 0,
            "type": "IMAGE"
          },
          {
            "id": 56,
            "origin_id": -10,
            "origin_slot": 8,
            "target_id": 62,
            "target_slot": 0,
            "type": "IMAGE"
          },
          {
            "id": 82,
            "origin_id": -10,
            "origin_slot": 8,
            "target_id": 66,
            "target_slot": 0,
            "type": "IMAGE"
          }
        ],
        "extra": {}
      }
    ]
  },
  "config": {},
  "extra": {
    "ds": {
      "scale": 0.3319360675803287,
      "offset": [
        7136.135581279705,
        -3763.724124178821
      ]
    },
    "frontendVersion": "1.56.3",
    "VHS_latentpreview": false,
    "VHS_latentpreviewrate": 0,
    "VHS_MetadataImage": true,
    "VHS_KeepIntermediate": true
  },
  "version": 0.4
}
