Nodes/ComfyUI-ACES-IO/ACES IO — File LUT (OCIOFileTransform)
ComfyUI Node

ACES IO — File LUT (OCIOFileTransform)

Drop any LUT file into your graph — .cube, .clf, .3dl, whatever

By BISAM20·Created 6 months ago·Updated 6 months ago· 9
ACES IO — File LUT (OCIOFileTransform)
  • image
  • ocio_config
  • image
lut_path
directionForward
interpolationTetrahedral
cccid

ACES IO - File LUT is the node for when the look you want already exists as a LUT file on your hard drive. Someone in the studio baked a film emulation into a .cube, a colorist handed you a .clf, or you downloaded a "cinematic" 3D LUT that's been sitting in a folder - this node applies it through OCIO's FileTransform, which is the Nuke OCIOFileTransform equivalent. No manual curve editing, no reverse-engineering: point it at the file and the transform is applied as-is.

Inputs

  • lut_path - path to the LUT file. OCIO reads the common set: .cube, .spi1d, .spi3d, .clf, .csp, .lut, .mga, .3dl, .vf, .spimtx. If you connect an ocio_config, the file is resolved using that config's search paths; without one, a bare raw config is used and the path must be absolute.
  • interpolation - how the LUT is sampled between its grid points: Best (auto), Linear, Tetrahedral (the default - the accurate one for 3D LUTs), Cubic, or Nearest. For 3D LUTs you basically never want Nearest; leave Tetrahedral or Best alone.
  • direction - Forward / Inverse. Inverse applies the LUT backwards, which is how you "un-grade" footage that had a LUT baked in, when the math is invertible.
  • cccid (optional) - for .cdl / .ccc files: the ID of the specific color correction to pull out of a CDL collection.

Output is a single image, and it's a pure transform - wire it anywhere a filter belongs, e.g. after the Viewer/Display transform to apply a final creative LUT before saving, or on top of a Log Convert to grade in log space like a real colorist.

Install

Part of BISAM20/ComfyUI-ACES-IO: Manager → Install Custom Nodes → ComfyUI-ACES-IO, restart, or git clone https://github.com/BISAM20/ComfyUI-ACES-IO into custom_nodes + pip install -r requirements.txt. The pack-wide dependency to watch is PyOpenColorIO (pip package opencolorio; Manager's install hook handles it - without it the whole pack fails to register).

Gotchas

  • A LUT doesn't know your colorspace. A .cube applies its own math to whatever pixels it gets. If your source is linear ACEScg and the LUT was authored for display-encoded sRGB, apply it after a Display Transform (or set up the chain so the LUT sees the space it expects). This is the most common "why does this look awful" cause, and it's a mismatch of intent, not a broken node.
  • Empty lut_path = hard error ("lut_path is empty"). This node doesn't silently no-op.
  • Inverse isn't guaranteed clean. Some LUTs (quantized 3D LUTs especially) don't invert cleanly; you'll get banding or clipped results. That's the nature of the format.
  • Every node in this pack re-runs each queue, so editing the LUT file on disk takes effect on the next run - no cache clearing ritual.
CategoryACES IO/LUT

Inputs (6)

NameTypeDefaultDescription
imageIMAGE
lut_pathSTRING
directionCOMBOForward2 options: Forward, Inverse
interpolationCOMBOTetrahedral5 options: Best (auto), Linear, Tetrahedral, Cubic, Nearest
ocio_configoptOCIO_CONFIG
cccidoptSTRINGOptional CDL/CCC ID when loading .cdl/.ccc files

Outputs (1)

NameTypeDescription
imageIMAGE