Nodes/Atlas Camera/Atlas Layer Plan 🥞
ComfyUI Node

Atlas Layer Plan 🥞

The node that tells you what actually needs a clean plate

By mikejamesvfx·Created 3 months ago·Updated a day ago· 1
Atlas Layer Plan 🥞
  • solve
  • solve
  • report
  • foreground_concepts
  • background_concepts
include_unoccludedfalse
foreground_concepts_override
background_concepts_override

The whole reason the atlas-camera pack exists is that a photographed scene doesn't rebuild as one flat surface. Some things are in front of other things, and the thing behind has a hole in it. Atlas Layer Plan is the node that reads that occlusion structure and turns it into a to-do list - which surfaces are occluders, which surfaces they hide, and therefore which ones need a clean plate before you can move the camera.

It's the "plan" in the pack's layered 2.5D matte-painting stack, and it lands in the Atlas/06 · Patch & Repair folder. If you've worked the pack's quickstart, think of it as the bridge between "we have geometry" and "we know what to paint out." The output is a manifest, not imagery - nothing gets drawn here.

How it works

Atlas Layer Plan reads the occlusion graph already attached to your solve (the one AtlasOcclusionGraph builds, though the node will work off fitted primitives too) and classifies every segment into one of two roles, following the pack's standing clean-plate doctrine:

  • foreground - an occluder. It was photographed, so you matte it from the original plate and project it on the original depth. Nothing is invented.
  • background - something an occluder hides. It needs a clean plate with the occluder painted out, and its own depth solve on that plate. The pack's docs are blunt about the alternative: extending the original's far band to cover it puts your support at the depth cutoff and you get a vertical cliff with floating foreground under orbit.

That foreground/background split is the point. A patch abuts measured depth and tears along its seam; a background layer continues underneath the occluder, so the two overlap and there's no seam to see.

Inputs and outputs that matter

Only one required input: solve - the ATLAS_SOLVE carrying your fitted geometry. The optional knobs:

  • include_unoccluded - also list surfaces nothing hides. They don't need a clean plate, but you may still want them as their own layers. Off by default.
  • foreground_concepts_override and background_concepts_override - where the names for each segment come from. Leave these empty and the node derives placeholder concepts from fitter ids; wire in AtlasAssessImage's sam_prompt_fg / sam_prompt_bg for real words.

Outputs: the solve passes through with the plan attached, a report string, and foreground_concepts / background_concepts - SAM3 prompts ready to wire straight into AtlasSAM3Mask. The division of labour is model-words in, SAM pixels out.

Installing it

This node is pure Python - it sits in the dependency-free core tier, so a plain clone gets it. Everything else about the pack's install applies:

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

Restart ComfyUI and look under the Atlas menu (ten numbered folders in pipeline order; this one's in 06 · Patch & Repair). ComfyUI Manager also finds it as "atlas-camera".

Common issues

The concepts outputs will segment poorly until you feed them real names. That's expected - they're placeholders derived from fitter ids until a VLM pass (AtlasAssessImage) supplies what the things actually are. Don't ship a matte from placeholder concepts and wonder why the mask is garbage.

The other trap is treating a Layer Plan background like a patch. A background layer demands its own depth solve on the cleaned plate - skip that and the "clean plate" has no surface underneath, which is the exact tear the node is trying to prevent. Read its report before you start painting; it's telling you the plan, not just logging.

CategoryAtlas/06 · Patch & Repair

Inputs (4)

NameTypeDefaultDescription
solveATLAS_SOLVE
include_unoccludedoptBOOLEANfalseAlso list surfaces nothing hides. They need no clean plate, but you may still want them as their own layers.
foreground_concepts_overrideoptSTRINGVLM-named foreground concepts (e.g. AtlasAssessImage's sam_prompt_fg). Replaces the placeholder foreground concepts derived from fitter ids.
background_concepts_overrideoptSTRINGVLM-named background concepts (e.g. AtlasAssessImage's sam_prompt_bg). Replaces the placeholder background concepts derived from fitter ids.

Outputs (4)

NameTypeDescription
solveATLAS_SOLVE
reportSTRING
foreground_conceptsSTRING
background_conceptsSTRING