Atlas Real Plate To Scene π
Turn a photograph's evidence record back into a 3D scene
- plate
- solve
- report
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
ProjectionSourcelayers, 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.jsonor 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.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| plate | ATLAS_REAL_PLATE | β | |
| assets_dir | STRING | β | |
| scene_json_pathopt | STRING | β | |
| record_in_ledgeropt | BOOLEAN | false | β |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| solve | ATLAS_SOLVE | β |
| report | STRING | β |