Atlas Derive Towers & Spires πΌ
Walls that reach the real top
- solve
- depth
- exclude_mask
- solve
- report
Every architecture shot has the same problem child: the building whose roofline disappears above a plain wall plane. AtlasDeriveWalls truncates sloped roofs, spires, and towers by design - its walls are clipped to the plain wall. AtlasDeriveTowersSpires is the fix: same wall orientation, but each wall is extruded to the real image-space silhouette top, so towers, spires, and sloped roofs actually read.
It's the vertical_extrusion specialist in the pack's geometry family, and it's the one you reach for when a skyline needs to keep its character instead of flattening into a slab. Same family pattern as the others: solve + shared depth in, a solve carrying fitted walls out, composable with AtlasMergeGeometry when you want a relief background behind the skyline.
How it works
The method keeps the azimuth-wall orientation of AtlasDeriveWalls - vertical walls facing the compass directions - but instead of clipping each wall's height at the median plane, it extrudes to the silhouette top in image space. That's what lets a spire or a slope poke through the sky where the flat-wall fit would have cut it off. Because the walls still share the same metric solve, everything stays in one consistent world.
Inputs that matter
Required: solve and depth. Then, largely the same toolkit as the wall node with one extra:
max_walls(default 4) andmax_objects(default 0) - the wall and foreground-object budgets. Objects stay opt-in, same convention as the sibling nodes.distance_modes(default 1) - walls per azimuth direction. Same skyline logic asAtlasDeriveWalls: raise it (withmax_walls) so a street-grid skyline splits into one wall per depth mode per direction instead of collapsing into one slab.roofline_split(default false) - the node's signature extra. Split each wall cluster at silhouette-height steps: a row of buildings becomes one plane per roofline (each cut to its own top, and withground_anchoreach gets its own footprint distance) instead of one rectangle spanning sky above the shorter buildings.ground_anchor(default false) - the analytic-ground-plane distance from the tooltip, immune to monocular depth's banana warp on tall structures. Falls back to depth-median when the base is occluded.exclude_mask- scope the derive to one structure per branch, then chain withAtlasMergeGeometry; ground fit/scale/backdrop stay full-frame so masked branches share one metric world.backdrop-measured_only(default) /always/nevercyclorama plane.
Output: solve plus a report.
When to pick it over the wall node
It's the tooltip's own framing: AtlasDeriveWalls is for fast flat-wall blockouts where silhouettes don't matter; this node is when tall or sloped silhouettes are the shot. For a gothic cathedral or a skyline of stepped towers, it's the difference between a blockout that reads as boxes and one that reads as a place. The cost is slightly heavier fitting - extrusion to real silhouettes is more work than a flat clip - but on a typical street shot it's negligible.
Install
cd <ComfyUI>/custom_nodes
git clone https://github.com/mikejamesvfx/atlas-camera.git
Restart (or Manager β "atlas-camera"). Needs [neural] for the depth upstream. The kornia <0.8.3 cap protects LTXVideo; GeoCalib is GitHub-only. New pack with no community folklore yet - the tooltips carry the real detail (notably the roofline_split semantics), so read the ones on the inputs you're changing.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| solve | ATLAS_SOLVE | β | |
| depth | ATLAS_DEPTH_MAP | β | |
| max_wallsopt | INT | 40β64 | β |
| max_objectsopt | INT | 00β32 | Max foreground boxes/cylinders. Street-level scenes: try 0 β the 2D occupancy clustering merges cars/fences/trees into oversized near-camera boxes that dominate any orbit. |
| distance_modesopt | INT | 11β16 | Walls per azimuth DIRECTION. 1 = classic: one plane at the median distance of everything facing that way. A street-grid skyline has ~2 facing directions but many depths β raise this (with max_walls) so each direction splits into one wall per depth mode (building row) instead of collapsing the skyline into one slab. |
| exclude_maskopt | MASK | Remove these pixels from wall/object fitting (e.g. a SAM segment of everything EXCEPT one building β invert per branch to scope each derive to one structure, then chain AtlasMergeGeometry). Ground fit/scale/backdrop stay full-frame so masked branches share one metric world. | |
| ground_anchoropt | BOOLEAN | false | Wall DISTANCE from ray-through-base-pixel x the analytic Y=0 ground plane β pure geometry, immune to monocular depth's low-frequency 'banana' warp on tall structures. Assumes the building's ground contact is VISIBLE: for best accuracy inpaint cars/fences off the ground line before solving (most street/architectural photos show enough contact as-is; occluded bases are detected and fall back to the classic depth-median distance). |
| roofline_splitopt | BOOLEAN | false | Split each wall cluster at silhouette-height steps: a row of buildings becomes one plane per roofline (each cut to its own top, and with ground_anchor each gets its own footprint distance) instead of one rectangle spanning sky above the shorter buildings. |
| backdropopt | COMBO | measured_only | Far cyclorama plane behind the extracted geometry. measured_only (default) = emit it only when real depth placed it; if the frame had no valid depth the backdrop would sit at an invented 60 m, so it is dropped and the report says so. always = emit it regardless (the pre-2026-07-27 behaviour). never = never emit it. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| solve | ATLAS_SOLVE | β |
| report | STRING | β |