Nodes/Atlas Camera/Atlas VP Visualization
ComfyUI Node

Atlas VP Visualization

See Which Lines the Camera Solver Believed

By mikejamesvfx·Created 3 months ago·Updated a day ago· 1
Atlas VP Visualization
  • image
  • solve
  • IMAGE
show_horizontrue
show_vp_linestrue
line_opacity0.70

When Atlas recovers a camera the classical way, it works by finding vanishing points: the solver detects straight lines in your photo, figures out where the parallels converge, and derives focal length and horizon from that geometry. That's clever machinery, but it's also a black box - until something's wrong, and then you'd really like to see which lines it trusted and where it thinks the horizon sits. AtlasVPVisualization draws exactly that on top of your image.

It's a debugging and QA node, and a genuinely useful one: when a solve comes out with a horizon in the wrong place or a focal that feels off, the overlay is often the fastest way to understand why. Feed it your image and the ATLAS_SOLVE, and it hands back the same image with the solver's reasoning painted on.

How it works

The mechanism is refreshingly simple - it's PIL drawing, not more machine learning. The node copies your image and paints an RGBA overlay: a horizon line in yellow, and for each vanishing point a circle at its position with convergence lines running from the supporting image segments toward it. Left, right and vertical vanishing points get distinct colors - orange, blue and green - matching the scheme the viewport's own diagram overlay uses, so the two visualizations agree when you cross-check.

Two honest limitations worth knowing before you trust the picture. First, the vanishing-point fan only populates on the classical VP solve path. The learned GeoCalib path predicts focal and gravity directly, never through vanishing points, so a solve from that route will happily show you a horizon but no VP lines. That's expected, not a bug. Second, the catalog notes the node is a pass-through when no vanishing points were detected - you get your original image back. And if the solver's vanishing points land far off-canvas (common in architectural shots), the off-screen VP circle simply won't render, though the converging fan lines remain visible at the frame edge.

The inputs that matter

  • image and solve - required. The photo and the ATLAS_SOLVE from any Atlas solve/input node that populated vanishing points.
  • show_horizon and show_vp_lines - both default on; toggle to isolate just the horizon or just the VP fan.
  • line_opacity (0–1, default 0.7) - dial the overlay intensity down so it doesn't drown the plate.

The single output is an IMAGE - wire it into a PreviewImage or SaveImage to look at it. It's purely visual; nothing about the solve changes.

Install & gotchas

Install the pack like any other custom node and restart:

cd ComfyUI/custom_nodes
git clone https://github.com/mikejamesvfx/atlas-camera.git

One dependency matters here: vanishing-point detection needs the [vision] extra (numpy + OpenCV) in ComfyUI's Python. The node itself is just PIL, which ComfyUI already ships, but if your solve was produced with VP detection enabled and you haven't got OpenCV installed, the detection stage - not this drawing node - will be the thing that fails. Install it and restart:

"<ComfyUI>/python_embeded/python.exe" -m pip install opencv-python numpy

The classic beginner trap is feeding this a GeoCalib-learned solve and wondering why the VP circles are missing - see above: that path doesn't produce vanishing points at all, and no amount of opacity tweaking will conjure them. If you specifically want the VP overlay, make sure the solve used the VP-based method (detect_vanishing_points=True), not the learned prior.

CategoryAtlas/08 · Look & Render

Inputs (5)

NameTypeDefaultDescription
imageIMAGE
solveATLAS_SOLVE
show_horizonoptBOOLEANtrue
show_vp_linesoptBOOLEANtrue
line_opacityoptFLOAT0.700–1

Outputs (1)

NameTypeDescription
IMAGEIMAGE