Nodes/Atlas Camera/Atlas Gravity Compass 🧭
ComfyUI Node

Atlas Gravity Compass 🧭

Tilt the world by dragging a compass instead of typing numbers

By mikejamesvfxΒ·Created 3 months agoΒ·Updated a day agoΒ· 1
Atlas Gravity Compass 🧭
  • solve
  • solve
  • report
β—„apply_overridefalseβ–Ί
β—„pitch_deg0.00β–Ί
β—„roll_deg0.00β–Ί
β—„heading_overridefalseβ–Ί
β—„heading_deg0.00β–Ί

AtlasGravityCompass is the fiddly-but-friendly member of the atlas-camera orient-and-scale family. Where its sibling AtlasGravityOverride makes you type pitch, roll and heading as numbers, this node gives you an actual 3D compass widget you drag in the node's UI to set the camera's orientation - pitch and roll around the view axis, plus a world heading ring when you need to align the ground grid. It exists because the hardest part of fixing a solve's gravity is usually knowing what angle you want, and dragging a compass reads a lot more naturally than typing "-7.3" and squinting at the viewport.

Same job, different muscle memory.

How it works

The solve carries the camera's orientation as it was recovered - which, for a single photograph, is only as good as the vanishing points or the learned prior's estimate of the horizon. When that estimate is off (or the photo itself is crooked), you re-pose the camera about its own position without moving it. The compass sets absolute pitch and roll; a central heading ring sets the world X/Z grid orientation. The node then hands back a corrected solve that everything downstream - depth, geometry, projection, exports - reads as if it had been solved that way all along.

One behaviour worth knowing: apply_override defaults to off, so the node passes the solve through unchanged until you actually touch the compass - dragging it flips the override on automatically. That's a deliberate safety rail: a compass widget that silently reorients every solve it touches would be a footgun, so it won't do anything until you tell it to.

The inputs

solve is the only required input. From there:

  • apply_override (default off) - the master switch, enabled automatically the first time you drag the compass.
  • pitch_deg / roll_deg - absolute values in degrees; positive pitch looks down, positive roll turns the projected scene counter-clockwise. The 3D compass is the intended control, but the numbers are right there for when you know exactly what you want.
  • heading_override / heading_deg - flip the override on and set the absolute world heading used to align the grid. Leave it off to preserve the solved heading.

Output is a corrected solve plus a report string. Wire the solve into your depth or derive nodes, or straight into a viewport, and look at what changed.

Install and gotchas

It ships with atlas-camera, so install the pack once - ComfyUI Manager, search atlas-camera, or:

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

Then restart ComfyUI. No extra dependencies, no models, no GPU - this is pure camera math.

The practical gotchas are workflow-level. First, put it between the solve and everything else; if you wire it after the depth or relief-mesh nodes you're reorienting a scene that was already built around the old camera, which produces subtly wrong parallax. Second, remember it sets absolute angles, not trims - a value of 0 means "level," so don't expect it to nudge a tilted horizon unless you type the actual correction. And third, if you find yourself fighting a consistently wrong gravity estimate, that's a signal the solve itself is struggling - try the learned GeoCalib prior or a straighter plate, rather than correcting the same error every session.

It's the control-surface version of a job you can do numerically. For eyeballing "does this scene sit right?", it's the one you'll actually reach for.

CategoryAtlas/02 Β· Orient & Scale

Inputs (6)

NameTypeDefaultDescription
solveATLAS_SOLVEβ€”
apply_overrideoptBOOLEANfalseOff passes the solve through unchanged. Dragging the compass enables this automatically.
pitch_degoptFLOAT0.00-89–89Absolute camera pitch. Positive looks down; the 3D compass is the intended control.
roll_degoptFLOAT0.00-180–180Absolute camera roll. Positive turns the projected scene counter-clockwise.
heading_overrideoptBOOLEANfalseEnable the central world XYZ heading ring.
heading_degoptFLOAT0.00-180–180Absolute world heading used to align the grid.

Outputs (2)

NameTypeDescription
solveATLAS_SOLVEβ€”
reportSTRINGβ€”