Nodes/ComfyUI-SplatKit/MoGe Model Loader
ComfyUI Node

MoGe Model Loader

The 1.2GB first-run download, tamed

By mickmumpitz·Created about a month ago·Updated a day ago· 17
MoGe Model Loader
    • moge_model
    moge_ckpt

    Every SplatKit render node needs MoGe - Microsoft's monocular geometry estimator that turns your panorama into a depth mesh the camera path is flown through. The MoGe Model Loader is the clean way to load that model once and hand it to every node that wants it, instead of each node doing its own load. It's a two-node wrapper in the spirit of Kijai's ComfyUI-MoGe, and if you run any workflow in this pack more than once, it saves you minutes of reload time on every queue.

    Why MoGe and not a plain depth model? Because MoGe outputs an affine-invariant point map - a per-pixel 3D coordinate plus a validity mask - not just a grayscale depth map. From that point map the pack derives the mesh it renders the fly-through against, and its sky masking means the geometry knows where the pano "runs out." It's the right tool for the job this pack does, which is why it's vendored in and auto-downloaded rather than optional.

    How it works

    The node has a single input, moge_ckpt, a dropdown that defaults to auto (download). On first use it fetches Ruicheng/moge-vitl's model.pt (~1.2 GB) into ComfyUI/models/MoGe via Hugging Face Hub and returns a MOGE_MODEL object from its moge_model output. If you already have a MoGe checkpoint on disk, drop it in models/MoGe and it shows up in the dropdown - no download needed. That folder is registered with ComfyUI, so any other SplatKit node's moge_ckpt dropdown sees the same files.

    The whole point is the output. Every render node in the pack (Plot Camera, HiRes Pano Fly-Through, HiRes Composite, the perspective fly-through) has its own optional moge_model input that overrides its own moge_ckpt dropdown. Wire the loader into several nodes and they all share one loaded model. The author's own tooltip is blunt about what it saves: "load once and reuse across nodes."

    Install and first run

    cd ComfyUI/custom_nodes
    git clone https://github.com/mickmumpitz/ComfyUI-SplatKit
    python_embeded\python.exe -m pip install -r ComfyUI-SplatKit/requirements.txt
    

    Restart ComfyUI, then run the node once. The 1.2 GB download is the one thing to plan for; it happens on the node's first execution and shows progress in the console. Everything else the pack needs (opencv, trimesh, scikit-image, click, matplotlib, huggingface_hub) comes from its requirements file. There's no nvdiffrast and no pytorch3d anywhere in this pack - the rasterizer is a pure-torch shim - so don't expect any compiled-toolchain pain here.

    Troubleshooting

    • "MoGe checkpoint not found" - you picked a filename in the dropdown that isn't in models/MoGe, or auto (download) failed mid-fetch. Re-run once; if the download dies on a flaky connection, run it again and the partial file is replaced.
    • Slow first run - that's the download plus the JIT compile of the rasterizer's optional triton backend. It self-tests on first use and silently falls back to pure torch if triton's missing, so a long first queue is normal, not broken.
    • On a Mac - the MoGe nodes themselves are platform-independent; only the SphereSfM binary is Windows/Linux-only right now, so you can do the depth/mesh/render side of the pipeline on Mac without issue.
    CategorySplatKit

    Inputs (1)

    NameTypeDefaultDescription
    moge_ckptCOMBOMoGe checkpoint from ComfyUI/models/MoGe. 'auto (download)' fetches 'Ruicheng/moge-vitl' into that folder on first use (~1.2GB). Drop your own model.pt in models/MoGe to pick it here, or wire a MoGe Model Loader node into 'moge_model'.

    Outputs (1)

    NameTypeDescription
    moge_modelMOGE_MODEL