Atlas Gravity Override π
When the solve's gravity is wrong and you know the right answer
- solve
- solve
- report
AtlasGravityOverride is the node for when you know the truth. Every camera solve from a single photograph carries an orientation estimate - focal length and horizon are recovered, not measured - and sometimes that estimate is just wrong. This node lets you set the camera's pitch, roll and world heading as absolute numbers and re-pose the solve about its own position. No guessing, no physics, no second solve: you type the angles, the camera rotates in place, and everything downstream - depth, relief mesh, projection, exports - reads the corrected orientation as if it had been solved that way from the start.
It's the direct, no-nonsense sibling of AtlasGravityCompass. The compass is for dragging and eyeballing; this one is for "I measured this plate, the horizon should be at exactly β3Β°, set it." It also subsumes the pack's old pitch-trim node - you set absolute pitch here rather than trimming relative to a wrong estimate, which is the whole difference: trims stack errors, absolutes replace them.
How it works
The node takes the solve's existing camera world matrix, reads off the current pitch, roll and heading, then rebuilds the orientation from the absolute values you supply. Position never moves - only the look direction. By default the solved horizontal heading is preserved, so you can fix a crooked horizon without disturbing the grid alignment; flip heading_override on only when you specifically want to set the world yaw (0 faces Atlas βZ, +90 faces +X).
One detail the docs are honest about: this node was born from an incident where gravity was not just off but flipped, and the flipped estimate itself was still ~7Β° off in pitch and ~9Β° in roll. Simply un-flipping it left the whole scene leaning. The lesson is the node's whole pitch - when you know the true angles (from a crop probe, a level reference, or just by eye), set them absolutely instead of nudging a bad estimate toward good.
The inputs
solve is the only required input. Then:
pitch_deg- absolute camera pitch. Positive looks DOWN below the horizon, negative up, 0 level. Range Β±89Β°.roll_deg- absolute roll about the view axis, 0 = level horizon. Positive turns the projected scene counter-clockwise.heading_override(default off) - off preserves the solved heading; on lets you set the world X/Z grid withheading_deg.heading_deg- the absolute world heading used when the override is on.
Output is a corrected solve plus a report. Wire it between the solve and your depth or geometry nodes, exactly like the other orient-and-scale dials.
Install and gotchas
Same pack install as everything else: ComfyUI Manager β search atlas-camera, or git clone https://github.com/mikejamesvfx/atlas-camera.git into custom_nodes, restart. Pure camera math - no extra dependencies, no models.
Two things will bite you. First, absolute angles: leaving pitch_deg at its 0 default while you intended "no change" will level a solved pitch that was actually correct - if you only want to touch roll, set pitch to whatever the solve already reported, or check the report. Second, wiring order: put the override before the nodes that consume orientation. Correct a solve that's already been turned into a relief mesh and you get a coherent scene, but one whose geometry was built against the old gravity - the correction shows up as a world-space tilt rather than a clean re-pose.
It's a small, sharp tool. When the solve's gravity is wrong and you know the right answer, it's the fastest fix in the pack - and when you don't know the right answer, use the compass instead.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| solve | ATLAS_SOLVE | β | |
| pitch_degopt | FLOAT | 0.00-89β89 | ABSOLUTE camera pitch: positive = looking DOWN that many degrees below the horizon, negative = up, 0 = level. |
| roll_degopt | FLOAT | 0.00-180β180 | ABSOLUTE roll about the view axis (0 = level horizon). Same screen direction as AtlasRollTrim: positive turns the projected scene counter-clockwise. |
| heading_overrideopt | BOOLEAN | false | Off preserves solved heading. On uses heading_deg to align the world X/Z grid. |
| heading_degopt | FLOAT | 0.00-180β180 | Absolute world heading: 0 faces Atlas -Z; +90 faces +X. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| solve | ATLAS_SOLVE | β |
| report | STRING | β |