Atlas Split Equirect π
Atlas Split Equirect π β a 360Β° pano, cut into cameras Atlas can actually solve
- equirect
- view
- exact_view
- focal_mm
- all_views
- report
AtlasSplitEquirect takes a 360Β° equirectangular panorama (normally 2:1, like 4096Γ2048) and cuts it into N perspective crops, each of which is already a valid Atlas pinhole camera. That sentence is doing more work than it looks like - Atlas is pinhole end to end: every solver, relief mesh and projection path assumes fx/fy/cx/cy intrinsics. An equirect is not a pinhole camera, so instead of modeling it as one, the pack just cuts it into perspective views that are. Twelve crops at 90Β° FOV is ComfyUI's default ring, and the tooltip explains why: overlap is what lets neighbouring depths agree where they meet.
Why bother? A single perspective plate has no data for what the camera never saw - which is the whole reason the pack's occlusion-graph, move-budget and guided-hole-repair machinery exists. A 360Β° capture supplies that coverage as real measured geometry instead of inventing it. This is the node that turns a panorama from "nice background" into "a full surrounding scene with real parallax."
Inputs that matter
- equirect - the 2:1 panorama, one image per run.
- n_views - crops around the ring (1β64, default 12).
- fov_deg - horizontal/vertical FOV of each square crop (default 90). Wider = fewer views to cover the circle but more lens distortion for the solver to fit.
- size - crop side length in pixels (default 1024).
- view_index - which view leaves the single
view/exact_viewoutputs (clamped to n_viewsβ1);all_viewsalways carries the batch. - pitch_deg - tilt of the whole ring. 0 keeps the horizon level, which is what the ground-plane scale fit wants.
- yaw_offset_deg - rotate the ring, so you can move a seam off your subject.
Outputs: view (IMAGE), exact_view (STRING - the exact view descriptor), focal_mm (FLOAT), all_views (IMAGE batch), and a report. The README's wiring hint: view β AtlasAddPatchView.patch_image, exact_view β its exact_view_override.
The depth gotcha (read this one)
The node's own source carries a warning worth taking seriously: use MoGe for the depth, not V2-Metric-Outdoor. A 90Β° square crop is framing the DA2 V2-Metric-Outdoor model wasn't trained on, and it mis-scales badly - measured on two 8K panoramas, V2-Outdoor returned camera heights 4.3β4.6Γ off where MoGe-2 returned plausible tripod heights. FOV stays exact either way; it's purely a metric-scale failure. So if your pano solves with believable focal but absurd height, the depth backend is the suspect. The pack supports [moge] (MoGe-2) and [neural-da3] as alternatives to the default Depth Anything V2 specifically because of this.
Install
The split itself is core and dependency-free:
cd <ComfyUI>/custom_nodes
git clone https://github.com/mikejamesvfx/atlas-camera.git
Restart, or install via ComfyUI Manager ("atlas-camera"). It's under Atlas/01 Β· Input & Camera. If you're taking panoramas seriously, also install the [moge] backend (GitHub-only package - use the --no-deps route into ComfyUI's venv that INSTALL.md documents, since its own dependency list pulls gradio/matplotlib).
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| equirect | IMAGE | Equirectangular 360x180 panorama, normally 2:1 (e.g. 4096x2048). One image per run. | |
| n_viewsopt | INT | 121β64 | Crops around the ring. 12 at 90deg FOV is ComfyUI core's default and gives generous overlap β overlap is what lets neighbouring depths agree where they meet. |
| fov_degopt | FLOAT | 9020β150 | Horizontal/vertical FOV of each square crop. Wider = fewer views to cover the circle, but more lens distortion for the solver to fit. |
| sizeopt | INT | 102464β4096 | Crop side length in pixels. |
| view_indexopt | INT | 00β63 | Which view leaves the `view`/`exact_view` outputs. Clamped to n_views-1. `all_views` always carries the batch. |
| pitch_degopt | FLOAT | 0-80β80 | Tilt of the whole ring. 0 keeps the horizon level, which is what the ground-plane scale fit wants. |
| yaw_offset_degopt | FLOAT | 0-360β360 | Rotate the ring β use it to move a seam off your subject. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| view | IMAGE | β |
| exact_view | STRING | β |
| focal_mm | FLOAT | β |
| all_views | IMAGE | β |
| report | STRING | β |