MoGe Process
One image in, a textured 3D mesh out
- model
- image
- depth
- glb_path
- trimesh
MoGeProcess is the payoff. Feed it any image plus the MOGEMODEL from (Down)load MoGe Model, and it turns the photo into actual 3D geometry - a textured mesh saved to disk, plus a grayscale depth map you can preview or reuse. This is the node that separates MoGe from every plain depth estimator: it doesn't just tell you how far things are, it reconstructs a point map and builds geometry from it.
Kijai kept this pack to two nodes on purpose, and this is the one doing the interesting work. The community noticed: the pack's canonical intro thread is titled "Kijai's MoGe wrapper has been around for a while, and no one has introduced it yet" (r/StableDiffusion, +67), where it's called the most accurate normalized depth model around - with the caveat that it meshes without back faces, which matters for what you point it at.
How it works
MoGe's model runs on your image and outputs a per-pixel point map, a validity mask (regions like sky get excluded), and camera intrinsics - from which depth and focal length are derived. This node then turns that point map into a triangle mesh with vertex colors and UVs, and when you save as GLB it bakes your original image on as a PBR texture. Hence the metallic_factor and roughness_factor inputs: those are material properties written into the GLB itself, so the mesh looks like your image rather than a gray blob when you open it in a viewer.
The inputs that matter
The model and image inputs are obvious. The rest are the settings you'll actually touch:
- resolution_level (0–9, default 9) - controls the internal working resolution. Level 9 targets ~500k pixels of processing area; level 0 targets ~250k. Lower is faster and rougher, and the output is resized back to your original dimensions either way. Start at 9; drop it only if a big image is slow.
- remove_edge (default on) - trims pixels along depth discontinuities so seams between foreground and background don't get baked into the mesh as jagged artifacts. Leave it on.
- save_format -
glb(default),ply, ornone. GLB gets you the textured mesh; PLY gives you vertex colors but no PBR texture;noneis for when you only want the depth output. - filename_prefix - where it lands under
ComfyUI/output, default3D/MoGe. - metallic_factor / roughness_factor - GLB material knobs. Defaults are 0.5 / 1.0, which reads as a mostly-matte surface. Set metallic to 0 for pure matte.
Outputs and what to wire them into
depth- a normalized grayscaleIMAGE. Preview it, feed it to a depth ControlNet preprocessor pipeline, or use it as a displacement map. It's the "boring" output that's secretly useful.glb_path- aSTRINGpath to the saved GLB. Wire this into aPreview3Dnode (or any 3D viewer node that takes a path) to inspect the mesh without leaving ComfyUI. The example workflow that ships with the pack is exactly this: LoadImage → Load Model → MoGeProcess → PreviewImage on depth + Preview3D on the path.trimesh- the mesh object itself, typedTRIMESH, for nodes from other 3D packs that speak that type.
The traps
The big one is baked into MoGe itself: you get a single-view mesh with no back faces. It's great for objects and 2.5D set dressing - a tree with transparency, a rock, a prop you'll drop into a scene - and weak for full environments, where occluded areas become holes. The community trick is to treat it as a base mesh and inpaint the small blanks (one practical user in that same thread does exactly this, hand-mixing MoGe meshes with hand-made geometry). Depth estimation's usual caveats apply too: transparent surfaces and featureless skies confuse it, which is why the mask exists. And one more: the mesh is built from a single camera view, so don't expect to orbit behind anything - that geometry was never in the image to begin with.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MOGEMODEL | — | |
| image | IMAGE | — | |
| resolution_level | INT | 9 | — |
| remove_edge | BOOLEAN | true | — |
| metallic_factor | FLOAT | 0.50 | — |
| roughness_factor | FLOAT | 1.00 | — |
| save_format | COMBO | glb | 3 options: glb, ply, none |
| filename_prefix | STRING | 3D/MoGe | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| depth | IMAGE | — |
| glb_path | STRING | — |
| trimesh | TRIMESH | — |