Nodes/Atlas Camera/Atlas Export ACEScg Plate πŸ“€
ComfyUI Node

Atlas Export ACEScg Plate πŸ“€

Get a real ACEScg EXR out of ComfyUI β€” the file-based color handoff

By mikejamesvfxΒ·Created 3 months agoΒ·Updated a day agoΒ· 1
Atlas Export ACEScg Plate πŸ“€
  • plate_ref
  • project
  • exr_path
  • plate_ref
  • report
β—„output_colorspaceACEScgβ–Ί
β—„output_diratlas_exports/acescg_platesβ–Ί
β—„bit_depthhalfβ–Ί
β—„file_nameβ–Ί

AtlasExportPlateEXR solves a problem most ComfyUI users don't know they have: you cannot save a real scene-linear ACEScg EXR from the tensor path. ComfyUI's IMAGE tensors are display-referred and effectively 8-bit, so "save an EXR" through the normal tensor route gives you an sRGB-encoded file wearing a float costume - hand that to a Nuke comp and every blend and merge blows out, because gamma-encoded values got treated as linear light. This node never touches the tensor. It takes a file reference, converts it float-to-float through OpenColorIO, and writes a properly tagged ACEScg EXR that a DCC reads back correctly with zero out-of-band knowledge.

If you've ever fed AI output into a color-managed VFX pipeline and gotten weird, washed-out results, this is the node that fixes the root cause instead of the symptom. It's the file-based handoff the atlas-camera colour doctrine is built around.

How it works

You feed it a plate_ref - typically the scene-linear sidecar from AtlasLoadRAW, which is deliberately tagged Linear Rec.709 (sRGB) at the demosaic rather than falsely marked ACEScg. The node reads the file, converts it through OCIO (unpremultiply β†’ convert β†’ re-premultiply), and writes a new EXR tagged oiio:ColorSpace with the target space. The returned plate_ref now points at the converted file, so wiring it into the plate-attach node makes every DCC export reference the ACEScg plate.

output_colorspace defaults to ACEScg but accepts anything the built-in ACES config knows - ACEScct, ACES2065-1, and so on. bit_depth is half by default (the VFX plate standard, 16-bit float) or float for 32-bit.

The inputs

plate_ref is required. Then output_colorspace, output_dir, bit_depth, file_name, and project. Outputs: exr_path, the converted plate_ref, and a report.

Install and gotchas

This one has a real dependency: it needs the [oiio] extra (OpenImageIO-backed). From a clone:

cd <ComfyUI>/custom_nodes/atlas-camera
<ComfyUI-python> -m pip install -e ".[oiio]"

Then restart ComfyUI. It's the pack's own colour path using OpenImageIO's built-in ACES config - no $OCIO environment to configure, no third-party colour pack.

Gotchas worth knowing: a proxy or missing plate reference degrades soft (the report says so, the input ref passes through) because an export chain must never die on a preview-only plate. And if you wire a browser-preview-only ref in, it skips with a clear message - the node needs an actual on-disk file, which is the entire point. Also note this is a file-to-file converter, not a tensor node: the input is an ATLAS_PLATE_REF, not an IMAGE. Get the workflow right and you'll never hand an sRGB-in-EXR-disguise to a comp again.

CategoryAtlas/10 Β· Export

Inputs (6)

NameTypeDefaultDescription
plate_refATLAS_PLATE_REFβ€”
output_colorspaceoptSTRINGACEScgOCIO colourspace for the written EXR (built-in ACES config: ACEScg, ACEScct, ACES2065-1, ...). The file is tagged oiio:ColorSpace with this value so a DCC reads it back correctly with no out-of-band knowledge.
output_diroptSTRINGatlas_exports/acescg_platesDirectory for the converted EXR (created if missing).
bit_depthoptCOMBOhalfhalf = 16-bit float (the VFX plate default), float = 32-bit.
file_nameoptSTRINGOutput file name. Blank = source stem + '_acescg.exr' (or the lowercased target space when it isn't ACEScg).
projectoptATLAS_PROJECTOptional delivery project from AtlasProject β€” routes this export into the project tree's plates/ lane and supersedes output_dir.

Outputs (3)

NameTypeDescription
exr_pathSTRINGβ€”
plate_refATLAS_PLATE_REFβ€”
reportSTRINGβ€”