Nodes/atlas-camera/Atlas Real Plate To Scene πŸ”
ComfyUI Node

Atlas Real Plate To Scene πŸ”

Turn a photograph's evidence record back into a 3D scene

By mikejamesvfxΒ·Created 2 months agoΒ·Updated a day agoΒ· 1
Atlas Real Plate To Scene πŸ”
  • plate
  • solve
  • report
β—„assets_dirβ–Ί
β—„scene_json_pathβ–Ί
β—„record_in_ledgerfalseβ–Ί

The evidence pipeline produces two kinds of geometry that never quite reach a normal Atlas solve: the RANSAC planes a photo's surfaces were fitted with, and the cards - objects segmented out of the plate with their own alpha and their own measured distance. AtlasRealPlateToScene is the node that round-trips both back into an ATLAS_SOLVE, so the evidence you carefully recorded about a photograph becomes a scene you can actually project, mask, and export. It's the bridge from "we documented the plate" to "we have a camera and a scene again."

How it works

This is the careful half of the pair, and it's paranoid by design. The episode's planes live in ransac_planes.json (which alone keeps their dimensions, material, and inlier metadata - the ledger only stores the 4x4 transform). Before any plane is promoted into the scene, the node verifies its transform byte-for-byte against the index-aligned hypothesis in the ledger. The source spells out why: a tampered side-car should fail loudly instead of quietly re-posing the whole scene.

Two append/clobber rules worth knowing:

  • Planes clobber the proxy set, like every derive node - a re-run is idempotent, it doesn't stack duplicates.
  • Cards append as ProjectionSource layers, carrying their straight (unpremultiplied) alpha as a full-frame mask and their float EXR as the plate reference - so the ACEScg card never round-trips through an 8-bit PNG preview.

A card with enabled: false is a removed object - the one the clean plate exists to erase - so it's listed in debug_metadata.plate_roundtrip.disabled_cards and never projected, matching what the Nuke writer does with its Card3D disable flag.

The inputs that matter

plate (an ATLAS_REAL_PLATE - open one with AtlasOpenRealPlate) and assets_dir (STRING - the episode's assets directory, where ransac_planes.json and the card EXRs live) are required.

Optional: scene_json_path writes the resulting solve to disk via the ordinary solve-JSON path, and record_in_ledger (BOOLEAN, default off) appends the written scene to the episode as a derived artifact. Note the constraint: record_in_ledger requires scene_json_path - only a written artifact can be content-addressed into the ledger. And recording mints a new episode revision, so it's a deliberate decision, never a side effect of rebuilding a scene.

Outputs: solve (ATLAS_SOLVE) - the round-tripped scene, ready for AtlasCardMask, the layer nodes, or AtlasExportScenePackage - and report (STRING).

Installing

Pack install, same as the rest:

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

Restart, and the standard evidence-lane caveat applies hard here: the whole roundtrip lives in the private atlas-world distribution, not the public pack. Without it you get the familiar runtime error pointing at pip install -e path/to/atlas-world. This is also the node you must have run before AtlasCardMask has anything to extract - cards only exist on a solve after this round-trip.

Where people get burned

  • "plate scene roundtrip failed" - usually a missing or corrupted ransac_planes.json or a ledger/side-car mismatch. The loud failure is the feature; a tampered file re-posing the scene silently would be a disaster.
  • "assets_dir must name the episode's assets directory" - you pointed at the wrong folder. It's the episode's own assets dir, not wherever you happened to put the scene output.
  • "record_in_ledger needs scene_json_path" - recording without a written artifact is refused. Either write the scene first or leave recording off.

If you're doing the evidence-driven pipeline, this is the node that makes all that recording pay off. If you're not, it's one of the Atlas/11 nodes you can skip - the plain solve path never needs it.

CategoryAtlas/11 Β· Evidence Plate

Inputs (4)

NameTypeDefaultDescription
plateATLAS_REAL_PLATEβ€”
assets_dirSTRINGβ€”
scene_json_pathoptSTRINGβ€”
record_in_ledgeroptBOOLEANfalseβ€”

Outputs (2)

NameTypeDescription
solveATLAS_SOLVEβ€”
reportSTRINGβ€”