Nodes/Atlas Camera/Atlas Clean Plate Stack 🧽 (up to 4 plates + alphas)
ComfyUI Node

Atlas Clean Plate Stack 🧽 (up to 4 plates + alphas)

Four painted plates, one layered scene

By mikejamesvfxΒ·Created 3 months agoΒ·Updated a day agoΒ· 1
Atlas Clean Plate Stack 🧽 (up to 4 plates + alphas)
  • solve
  • depth
  • plate_1
  • matte_1
  • plate_2
  • matte_2
  • plate_3
  • matte_3
  • plate_4
  • matte_4
  • solve
  • report
β—„name_1far_skyβ–Ί
β—„geometry_1cardβ–Ί
β—„name_2backgroundβ–Ί
β—„geometry_2reliefβ–Ί
β—„name_3midgroundβ–Ί
β—„geometry_3reliefβ–Ί
β—„name_4foregroundβ–Ί
β—„geometry_4reliefβ–Ί
β—„grow_px12β–Ί
β—„edge_extend_px24β–Ί
β—„relief_grid384β–Ί
β—„depth_edge_rel1.50β–Ί
β—„mattes_are_transparencyfalseβ–Ί

If you're a matte painter who does the classic thing - separate the plate in Photoshop into sky / mountains / buildings / road, save each stratum as a full-frame plate plus an alpha - then Atlas Clean Plate Stack 🧽 is the node that turns that pile of PNGs into a layered 3D scene in one shot. It's the multi-slot injection port: up to four plate+matte pairs, each becomes a depth layer, and out comes a solve whose projection stack is ready for the viewport and the DCC exporters.

How the slots work

Slot 1 is the FARTHEST stratum (far_sky), slot 4 the nearest (foreground). Priorities are assigned farthest-highest - 15 / 10 / 5 / 0 - the same seam doctrine as AtlasCleanPlateLayer. And the DMP seam rule is baked in: every used slot except the nearest gets the edge_extend_px smear, while the nearest keeps a clean cut. The smear keeps the behind-layer edges from showing as dark or transparent gaps when the camera moves; the nearest layer doesn't need it because nothing sits in front of it.

Each slot has a name_* (what it's called in the export) and a geometry_* pick - card for the far sky (a flat backdrop, never tears), relief for anything with real shape, ground for flat horizontal surfaces. The defaults are sensible: far_sky as card, everything else as relief.

Under the hood it's pure composition over AtlasCleanPlateLayer - the stack node adds no new math, it just orchestrates four of them. Per slot: the matte is grown by grow_px (12 default), its inverse becomes the geometry's exclusion mask, and the raw matte becomes the paint layer's edge matte.

The one gotcha that will trip you

mattes_are_transparency defaults to off, and the wiring hint in the source explains why: ComfyUI's LoadImage MASK output marks transparent pixels, not opaque ones. If you save each separation as a PNG with alpha and wire one LoadImage per slot (IMAGE β†’ plate_N, MASK β†’ matte_N), flip mattes_are_transparency ON - or pre-invert each mask with InvertMask. Get this backwards and your mattes are inverted and the layers vanish. It's the single most common miswire on this node.

Everything else

relief_grid (384 default) and depth_edge_rel (1.5) control mesh density and tear sensitivity for the band meshes - the defaults are the empirically-calibrated band-layer settings. A slot missing a plate OR a matte - or with an empty matte - is skipped and named in the report, never an error. With no complete slot at all, the input solve passes through untouched.

Inputs: solve and depth required; outputs are the updated solve and a report listing which slots were used and which were skipped. Needs the [neural] extra for the metric depth the layer meshes are built from - without it the node fails soft with an explanatory report rather than breaking your graph. Install is the pack's usual clone-and-go.

CategoryAtlas/07 Β· Clean Plate & Inpaint

Inputs (23)

NameTypeDefaultDescription
solveATLAS_SOLVEβ€”
depthATLAS_DEPTH_MAPβ€”
plate_1optIMAGEβ€”
matte_1optMASKβ€”
plate_2optIMAGEβ€”
matte_2optMASKβ€”
plate_3optIMAGEβ€”
matte_3optMASKβ€”
plate_4optIMAGEβ€”
matte_4optMASKβ€”
name_1optSTRINGfar_skyβ€”
geometry_1optCOMBOcard3 options: relief, card, ground
name_2optSTRINGbackgroundβ€”
geometry_2optCOMBOrelief3 options: relief, card, ground
name_3optSTRINGmidgroundβ€”
geometry_3optCOMBOrelief3 options: relief, card, ground
name_4optSTRINGforegroundβ€”
geometry_4optCOMBOrelief3 options: relief, card, ground
grow_pxoptINT120–256matte safety grow before the geometry cut
edge_extend_pxoptINT240–256smear on the BEHIND slots; the nearest used slot always stays a clean cut
relief_gridoptINT38416–4096β€”
depth_edge_reloptFLOAT1.500.05–8β€”
mattes_are_transparencyoptBOOLEANfalseON when mattes come straight from LoadImage's MASK output (which marks TRANSPARENT pixels) β€” inverts them

Outputs (2)

NameTypeDescription
solveATLAS_SOLVEβ€”
reportSTRINGβ€”