Nodes/ComfyUI/Run MoGe Panorama Inference
ComfyUI Node Runs on cloud

Run MoGe Panorama Inference

MoGe Panorama Inference stitches depth so you don't have to

By Comfy-Org·Created 4 years ago·Updated about 12 hours ago· 130,663
Run MoGe Panorama Inference
  • moge_model
  • image
  • moge_geometry
resolution_level9
split_resolution512
merge_resolution1920
batch_size4

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.

Categoryimage/geometry estimation

Inputs (6)

NameTypeDefaultDescription
moge_modelMOGE_MODEL
imageIMAGEEquirectangular panorama (any aspect).
resolution_levelINT90–9Per-view detail (0 = fastest, 9 = most detailed).
split_resolutionINT512256–1024Resolution of each perspective split.
merge_resolutionINT1920256–8192Long-side resolution of the merged equirect distance map.
batch_sizeINT41–12Views per inference batch (12 splits total).

Outputs (1)

NameTypeDescription
moge_geometryMOGE_GEOMETRY