Run MoGe Panorama Inference
MoGe Panorama Inference stitches depth so you don't have to
- moge_model
- image
- moge_geometry
Equirectangular panoramas are the one image format that depth models hate. The poles get squashed, the horizon bends, and a perspective-based estimator fed the raw 360° frame produces garbage at the top and bottom. If you've got a 360° render - or a nice equirect environment you generated - and you want it as actual geometry for VR, a skybox, or a game scene, this node is the one that makes it work. It's the panorama-specific entry point of ComfyUI's native MoGe integration, and it saves you from hand-stitching twelve separate depth maps.
How it works
MoGe is the monocular geometry estimator from Microsoft Research and Tsinghua (CVPR 2025): one forward pass on a perspective image gives you a point map, depth, a mask, and - with the v2 checkpoint - metric scale and normals. A panorama isn't perspective, so this node sidesteps the problem: it cuts your equirect image into 12 perspective views (each at 90° FOV), runs MoGe on every one, then merges the per-view depth maps into a single equirect distance map using a multi-scale Poisson + gradient solve. That last step is where the stitching magic lives - each view is solved at several resolutions so seams blend instead of showing hard lines.
One detail worth knowing: the node deliberately ignores v2's metric scale and predicted normals. Per-view scales simply wouldn't align across overlap seams, so forcing them would break the merge. You get consistent relative geometry instead, which is the right trade for a panorama.
The inputs that matter
- image - your equirectangular panorama, any aspect ratio. It takes exactly one: a batch throws an error.
- resolution_level (0–9, default 9) - per-view detail. 9 is the good stuff; drop it when a single split is eating your VRAM.
- split_resolution (256–1024, default 512) - pixels per perspective split.
- merge_resolution (256–8192, default 1920) - long-side resolution of the merged equirect depth map. The output is scaled back to your source size regardless.
- batch_size (1–12, default 4) - how many of the 12 splits run per inference call. Lower it if you OOM.
What comes out
A single moge_geometry packet - the same type MoGeInference produces - holding points, depth, mask, and the source image. Wire it into MoGePointMapToMesh (which detects the spherical coordinates and applies the right rotation to glTF) or MoGeRender for a depth preview. From the mesh side, a Save 3D Model node writes a .glb to your output folder.
Getting it and common issues
It ships with ComfyUI core - landed around May 2026 - and uses the same MoGe checkpoints as everything else in this family, dropped into models/geometry_estimation/ (moge_2_vitl_normal_fp16.safetensors is the one to grab). Where people get burned: pixels no perspective view covers stay as a "far" fill, so expect stretched geometry near the poles; and the merge step is genuinely the slow part - 12 views plus a stack of multi-scale solves, so a 4K panorama isn't instant. And remember the hard rule of all monocular geometry: this is one viewpoint, so there are no object backsides and no occluded detail. It's reference geometry, not a full reconstruction.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| moge_model | MOGE_MODEL | — | |
| image | IMAGE | Equirectangular panorama (any aspect). | |
| resolution_level | INT | 90–9 | Per-view detail (0 = fastest, 9 = most detailed). |
| split_resolution | INT | 512256–1024 | Resolution of each perspective split. |
| merge_resolution | INT | 1920256–8192 | Long-side resolution of the merged equirect distance map. |
| batch_size | INT | 41–12 | Views per inference batch (12 splits total). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| moge_geometry | MOGE_GEOMETRY | — |