Atlas Stereo Render π
Atlas Stereo Render π β geometry-true stereo from real projection meshes, not a depth warp
- solve
- source_image
- stereo
- left
- right
- report
AtlasStereoRender renders a stereo pair the honest way: each eye is a real render of the actual projection meshes, not a depth-warped copy. The distinction matters. The common shortcut - "depth-warp stereo" - takes the plate, shifts pixels by disparity, and hole-fills the gaps with heuristics; the result is convincing in a thumbnail and falls apart under inspection. This node offsets the eye along camera-right by Β±half the interocular, re-renders the layered projection scene through a z-buffer, and samples each layer's texture through its own projector camera's baked UVs. Occlusion comes from real geometry, not a guess. The matte-painting property - that the plate reassembles exactly from the recovered viewpoint - survives the eye offset, which is exactly what you want to check in stereo.
There's a design decision in the source worth respecting: convergence is shifted-sensor (a cx offset at the given distance), never toe-in, so verticals stay vertical. And disocclusions beyond what the layered geometry covers render as holes - that's the honest geometry-true answer, not a bug. The tooltip's advice is direct: add clean-plate bands to fill them.
Inputs
- solve and source_image - the scene and the plate.
- interocular_m - eye separation, default 0.065 m (human average). Only meaningful when the solve's metric scale is trusted - the tooltip explicitly tells you to check the π©Ί scene-health scale verdict first. If your scale is "assumed" and 10Γ off, your stereo is 10Γ off too.
- convergence_m - 0 = parallel eyes; >0 puts that distance at the screen plane (shifted-sensor convergence).
- output_mode -
sbs(side-by-side),sbs_half,anaglyph, orseparate. - resolution - long edge per eye (256β4096, default 1024). The pure-numpy rasterizer is
O(faces Γ pixels), so keep it moderate on dense relief meshes; it runs per eye.
Outputs: the composited stereo image plus left and right (so you can drive a real stereo display or a headset), and a report.
Why you'd reach for it
If your deliverable is a parallax-ish "living photo" or a marketing push-in, depth-warp is fine and this node is overkill. If your deliverable is actual stereo - a VR backdrop, a stereo comp, a client sanity-check on a projection - then geometry-true is the difference between "looks 3D" and "is 3D," because the occlusion relationships are real and consistent per eye. It's also a superb QA tool: render a stereo pair of your projection scene and any tear or mis-registration in the layers shows up instantly as a broken disocclusion. It's the pack's own viewport truth-teller.
Gotchas
Scale first, always - stereo is the one output that makes a bad scale visible as physical wrongness rather than just wrong numbers. And remember the holes: if your scene lacks clean-plate bands behind the foreground, don't be surprised when the offset eye shows gaps. That's the geometry telling you the truth about coverage.
Install
Core node, no extra dependencies:
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/08 Β· Look & Render, near the end of the menu's pipeline order - render-time, where it belongs.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| solve | ATLAS_SOLVE | β | |
| source_image | IMAGE | β | |
| interocular_mopt | FLOAT | 0.0650.001β1 | Eye separation in metres (human ~0.065). Only meaningful when the solve's metric scale is trusted β check the π©Ί scene-health scale verdict. |
| convergence_mopt | FLOAT | 0.00β1000 | 0 = parallel eyes. >0 = shifted-sensor convergence: that distance sits at the screen plane. |
| output_modeopt | COMBO | sbs | 4 options: sbs, sbs_half, anaglyph, separate |
| resolutionopt | INT | 1024256β4096 | Long edge per eye. The pure-numpy rasterizer is O(faces x pixels) β keep moderate for dense relief meshes. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| stereo | IMAGE | β |
| left | IMAGE | β |
| right | IMAGE | β |
| report | STRING | β |