Nukomfy Read
Read plates and frame sequences like you never left Nuke
- rgb
- alpha
- extra_layers
ComfyUI has never had a great story for "give me a real frame sequence off disk and treat it like a plate." Load Image is one PNG, batch nodes are workarounds, and every EXR you care about arrives mangled or clipped. Nukomfy Read is the fix: a mirror of Nuke's Read node for the common case, backed by OpenImageIO instead of PIL. You point it at a file, a sequence, or a folder, and you get frames out as a proper batch tensor - alpha split off, extra EXR layers preserved, colorspace handled if you want it handled.
It's also the required entry point for the Nukomfy Nuke plugin. Nukomfy runs ComfyUI workflows as Nuke gizmos, and the contract is simple: a workflow's input must go through a Nukomfy Read node and its output through a Nukomfy Write node. That's how the plugin knows where to feed frames in and where to collect results. No Read node, no Nukomfy render - which is why this suite is required on every ComfyUI host the plugin talks to.
How it works
The reader takes whatever OpenImageIO can decode: EXR, JPEG, PNG, TIFF, DPX, HDR, TGA, BMP, and more. The file path accepts three flavors, and knowing them saves you the first trip to the error log:
image.####.exrorimage.%04d.jpg- a sequence with Nuke-style (or printf-style) paddingimage.0008.pngorimage.tif- a literal single frame/path/to/folder/- auto-detect the one sequence inside the folder
There are two read modes, mirroring Nuke. Input Range (default) scans disk and reads every frame that matches the pattern; First/Last Frame are ignored. Custom Range reads the frames between First Frame and Last Frame, and if First is greater than Last it plays the sequence in reverse. Gaps inside a custom range are handled by the Missing Frames policy, with four honest options: error (stop and list them), black, checkerboard, or nearest (closest existing frame on disk).
The color part matters if you're compositing. Apply Color Transform defaults to off, which means pixels pass through untouched and Input Transform is ignored - that's the right call for a lot of graphs. Turn it on and the node converts from the chosen Input Transform to linear Rec.709. This is exactly the sRGB-tensor-vs-scene-linear problem the color-management crowd keeps warning about: if your plate is sRGB footage and the comp expects linear light, decode here, don't fix it downstream. The dropdown lists the full OCIO colorspace set from the active config (the suite boots with the ACES Studio Config v4.0.0 by default).
Inputs and outputs that matter
You'll set three things as a beginner: Source (the path or pattern), Read Mode, and Missing Frames if you're working with gaps. Leave the transforms alone until color is actually wrong.
Three outputs:
- rgb - the image as a 3-channel tensor
- alpha - the source alpha as a separate 1-channel mask. Files with no alpha (JPEG, HDR, RGB-only PNG, 3-channel EXR) get zeros here
- extra_layers - a bundle of any extra EXR layers (depth, normal, position, motion…) the node detected by parsing channel names. Empty for non-EXR files. Feed it to Nukomfy MultiLayer Unpack to get individual passes out
Install
ComfyUI Manager, search Nukomfy Suite, install, restart. Or the manual way:
cd ComfyUI/custom_nodes
git clone https://github.com/francescolorussi/ComfyUI-Nukomfy-Suite
cd ComfyUI-Nukomfy-Suite
pip install -r requirements.txt
Two Python deps: OpenImageIO>=3.1.10 and fileseq. No model downloads, no weights, nothing heavy beyond OIIO itself - and OIIO is a chunky wheel, so the first install takes a minute.
Troubleshooting
The one you'll actually hit: a red "Graph nodes unavailable" banner in the Nukomfy sidebar, with the Nukomfy nodes missing from the menu. That means OpenImageIO or fileseq isn't in the ComfyUI Python environment - the node import failed, not the whole pack. Install the deps and restart. The boot log should print [Nukomfy Suite] INFO: loaded (0.1.0) when everything is healthy.
"No frames found" usually means a wrong padding token or a folder holding more than one sequence - the node raises a clear error naming them. And if a saved workflow's colorspace dropdown ever looks wrong after an OIIO upgrade, that's the config changing under you; resave the workflow.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| file_path | STRING | File to read. Any format supported by OpenImageIO is accepted (EXR, JPEG, PNG, TIFF, DPX, HDR, TGA, BMP, …). Examples: • image.####.exr or image.%04d.jpg : sequence • image.0008.png or image.tif : single frame • /path/folder/ : auto-detect in folder | |
| read_mode | COMBO | Input Range | How to decide which frames to read. • Input Range: read every frame that matches the File pattern on disk. First Frame, Last Frame and Missing Frames are ignored. • Custom Range: read the frames between First Frame and Last Frame. Any gaps inside that range are filled per the Missing Frames policy. |
| first_frame | INT | 1-999999–999999 | First frame number of the sequence to read. Used only in Custom Range mode. When First Frame is greater than Last Frame, the sequence is read in reverse. |
| last_frame | INT | 1-999999–999999 | Last frame number of the sequence to read. Used only in Custom Range mode. |
| missing_frames | COMBO | error | How to handle missing frames inside the requested range. • error: stop with a message listing the missing frames. • black: return a black frame for each gap. • checkerboard: return a magenta and black pattern for each gap. • nearest: return the closest existing frame on disk. |
| apply_color_transform | BOOLEAN | false | When enabled, the file pixels are converted from Input Transform to linear Rec.709. When disabled, the file pixels pass through unchanged and Input Transform is ignored. |
| input_transform | COMBO | Linear Rec.709 (sRGB) | Colorspace the file is in. When Apply Color Transform is enabled, pixels are converted from this colorspace to linear Rec.709. Entries are the full OCIO colorspace list from the active config. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| rgb | IMAGE | RGB image (3 channels). Source alpha, if any, is dropped here and exposed separately on the alpha output. |
| alpha | MASK | Source alpha as a 1-channel mask. When the file has no alpha (JPEG, HDR, RGB-only PNG, EXR 3-channel, grayscale), this is filled with zeros. Use a Combine Image With Alpha node (or similar) upstream of Nukomfy Write if you need to round-trip the source alpha into a 4-channel output file. |
| extra_layers | NUKOMFY_MULTILAYER | Bundle of extra EXR layers (depth, normal, position, motion, …) detected by parsing the file's channel names. Empty for non-EXR files and EXR files without extra layers. Connect to Nukomfy Multilayer Unpack to extract individual layers by name. |