Atlas Solve Gate ✅
Atlas Solve Gate ✅ — don't burn the expensive minutes on a camera you haven't approved
- solve
- source_image
- solve
- report
- preview_solve
AtlasSolveGate exists to stop you from spending twenty minutes of render time on a camera you haven't actually looked at. The heavy parts of an Atlas workflow - the band layers, the sky dome, the Fixer, the exports, the things the README calls "the minutes" - all run downstream of the solve. If the solve is subtly wrong, that's a lot of compute wasted on a lie. This node puts a pause between the cheap part and the expensive part: it blocks everything downstream until you've eyeballed the camera and clicked ✅ Approve Solve.
It's the second gate in the pack's family (the VLM pre-flight gate, this one, the scale gate, the scene-health gate), and it all follows the same doctrine: let the artist override but never lose a warning.
How the wiring goes
- Wire solve → the heavy stack (bands, dome, exports) and preview_solve → a viewport for an always-live look at the camera.
- First queue costs you a solve and a thumbnail-grade preview. You check the camera, drag the gravity compass if it's wrong, click ✅, and the re-queue runs the expensive graph exactly once, on the orientation you signed off.
While proceed is off, the solve output returns an ExecutionBlocker - ComfyUI's native "everything downstream of this is silently paused" signal, so the heavy nodes don't even start. The ✅ button sets proceed and stamps the approval.
Inputs that matter
- solve and source_image - both are part of the approval identity. A new photo or a re-solve with different settings re-arms the gate instead of sailing through a stale approval. That's the fingerprint rule every gate in the pack follows, and it's the part people find surprising in the best way: you literally cannot accidentally approve solve A and then silently run solve B.
- apply_override - use the gate's visual gravity compass instead of the incoming solved gravity.
- pitch_deg (positive looks down), roll_deg, and optionally heading_override / heading_deg - the absolute camera corrections you can make at the gate before approving. This is where you fix a tilted horizon or re-point the world heading while you're looking at it, rather than going back to re-solve.
Three outputs: the gated solve, a report, and preview_solve for the viewport. One trick for interactive work: set proceed by hand with an empty approved_for if you want an unconditional manual override - but then you're on your own for re-arming discipline.
Install
Core node, no dependencies:
cd <ComfyUI>/custom_nodes
git clone https://github.com/mikejamesvfx/atlas-camera.git
Restart or use ComfyUI Manager ("atlas-camera"). It's listed under Atlas/advanced in the menu - still supported and tested, just tucked away from the quickstart path. If your graph has a genuinely interactive camera, this is the node that makes the interaction safe instead of scary.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| solve | ATLAS_SOLVE | — | |
| source_image | IMAGE | The photo this solve came from — part of the approval identity, so swapping the image re-arms the gate. | |
| proceedopt | BOOLEAN | false | While off, the solve output returns ExecutionBlocker and everything downstream of the gate is silently paused. The ✅ Approve Solve button sets this and re-queues. |
| approved_foropt | STRING | Fingerprint of the solve+image the current approval was given for (stamped by ✅). Mismatch re-arms the gate. Leave empty when toggling proceed by hand to approve unconditionally. | |
| apply_overrideopt | BOOLEAN | false | Use the gate's visual gravity compass instead of the incoming solved gravity. |
| pitch_degopt | FLOAT | 0.00-89–89 | Absolute camera pitch; positive looks down. |
| roll_degopt | FLOAT | 0.00-180–180 | Absolute camera roll; positive turns the scene counter-clockwise. |
| heading_overrideopt | BOOLEAN | false | Enable the central world XYZ heading ring to align the horizontal grid. |
| heading_degopt | FLOAT | 0.00-180–180 | Absolute Atlas world heading: 0 faces -Z; +90 faces +X. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| solve | ATLAS_SOLVE | — |
| report | STRING | — |
| preview_solve | ATLAS_SOLVE | — |