Plot Camera - Compute Geometry (internal)
The node that draws the cloud behind your path
- panorama
- moge_model
- panorama
- status
This one's flagged internal in its category, and it mostly is - you rarely need to reach for it by hand. Its job is to compute the MoGe geometry cloud that the in-graph camera editor draws behind your panorama, so that when you drag anchor points in the Plot Camera node you're placing them against actual 3D structure instead of guessing. The Plot Camera node already builds and caches this cloud as a side effect; this node exists for when you want to compute it explicitly - ahead of time, once, under a named reference - so the editor loads instantly when you open the plot.
The inputs are minimal: panorama (the image), ref_name (default default - the editor loads default automatically, and you'd use distinct names if you're juggling multiple scenes), and point_budget (default 4000, the max points drawn in the editor overlay). Placement-only; it never affects the render quality. Outputs are just panorama (passthrough) and status.
Honestly, if you're following the main 1_generate-dataset-hires.json workflow you can ignore this node entirely - Plot Camera computes its own geometry reference on first run. Where it earns its keep is iterative work: if you're tuning a path against a scene and find the editor is redrawing the MoGe cloud every time you touch a widget, compute it once here, and the plot node reuses the cached reference.
Install and notes
Same as the rest of the pack - clone, install requirements, restart:
cd ComfyUI/custom_nodes
git clone https://github.com/mickmumpitz/ComfyUI-SplatKit
python_embeded\python.exe -m pip install -r ComfyUI-SplatKit/requirements.txt
One thing to know: the point cloud is MoGe's single-image geometry, so it's a front-facing surface - the pano's camera can't see behind objects, and neither can the cloud. That's exactly why the pack hands the disocclusion holes to WAN rather than pretending the geometry is complete. If the editor ever shows no cloud at all, it's almost always that the MoGe checkpoint hasn't downloaded yet (auto (download) fetches Ruicheng/moge-vitl, ~1.2 GB, into ComfyUI/models/MoGe on first use) - run anything MoGe-backed once and it's cached for good. And if the web editor's JavaScript fails to load, the node still works; the path is just a text widget.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| panorama | IMAGE | — | |
| ref_name | STRING | default | Reference id. The editor loads 'default' automatically; use distinct names if you juggle multiple scenes. |
| point_budget | INT | 4000500–40000 | Max points drawn in the editor. Higher = denser backdrop but heavier canvas; 4000 is plenty for placement. |
| moge_ckptopt | COMBO | MoGe 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'. | |
| moge_modelopt | MOGE_MODEL | Optional: a pre-loaded MoGe model from the MoGe Model Loader node. Overrides moge_ckpt; load once and reuse across nodes. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| panorama | IMAGE | — |
| status | STRING | — |