ComfyUI Node

Nuke Read

Finally load EXRs and image sequences in ComfyUI

By sumitchatterjee13·Created about a year ago·Updated 9 days ago· 59
Nuke Read
    • IMAGE
    file_path
    frame1
    load_as_sequencetrue
    first_frame1
    last_frame1
    frame_modesingle
    missing_framesblack
    colorspaceraw
    show_previewtrue

    ComfyUI's built-in Load Image is great at exactly one thing: PNGs and JPEGs you can see. The moment you need to pull an EXR, a DPX, a multi-frame sequence, or anything with a bit depth beyond 8-bit, the default loader just shrugs. NukeRead is the node that fixes that - it reads images and image sequences from disk with real format support, the way Nuke's Read node does.

    This is the node that makes a footage pipeline possible inside ComfyUI. Render frames from Blender or a game engine, point NukeRead at plate.%04d.exr, and suddenly you're compositing actual rendered data into your generation workflow instead of screenshots. You can read a sequence as a batch and feed it frame-by-frame through a video pipeline, or read a single EXR, grade it, and write it back out.

    How it works

    Reads go through the pack's I/O layer, which tries OpenImageIO first, then OpenCV, then PIL - so format support tracks whatever you've installed. OIIO (installed by the pack's requirements) covers EXR, TIFF, DPX, HDR, PSD and friends; without it you're back to OpenCV/PIL and its narrower world.

    The path handling is where it shines. It parses %04d and #### frame patterns, auto-detects a sequence from a single padded filename (image.0001.exr), and lets you load one frame, a range, or all frames. Missing frames get handled the way you choose: error (log), black (return a black frame), hold (repeat the last good one), or nearest (snap to the closest existing frame).

    The colorspace dropdown is the part people get wrong. It describes the colorspace the file is in on disk, and the node decodes from that into linear Rec.709 working space - matching Nuke's convention. An sRGB PNG should be loaded with colorspace="sRGB" (it applies the IEC 61966-2-1 EOTF); an EXR is usually linear; a linear ACEScg file gets an AP1→Rec.709 primary matrix. raw just passes through untouched.

    Inputs that matter

    • file_path - path or pattern. frame - which frame (default 1).
    • frame_mode - single, range, or all.
    • missing_frames - default black. This is why you sometimes see silent black frames: that's the default.
    • colorspace - raw, sRGB, linear, ACEScg. Default raw.
    • show_preview - thumbnail on the node.

    Output is a batched IMAGE (one frame per batch slot), which is what the whole graph eats.

    Installing it

    NukeRead is part of the Nuke Nodes pack. Manager: search "Nuke Nodes", install. Or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/sumitchatterjee13/nuke-nodes-comfyui.git nuke-nodes
    cd nuke-nodes
    pip install -r requirements.txt
    

    Restart and find it under Add Node → Nuke → IO. OpenImageIO comes from requirements - for EXR/DPX work, make sure it actually installed. No model downloads.

    Gotchas

    • Black frames are the default lie. With missing_frames at black, a typo'd path or a missing frame silently yields 512×512 black frames, and your downstream node will happily process them. If outputs look "empty," check the console - NukeRead logs [NukeRead] Frame not found loudly.
    • Colorspace wrong = wrong look. Load an sRGB PNG with raw and it stays encoded, so downstream grading acts on gamma-encoded values. Match the dropdown to the file, or your whole grade is off.
    • raw is not "auto." It's "do nothing." If you're not sure what the file is, NukeReadInfo exists for exactly that.
    • This pack has no community presence yet - zero threads, no tutorials. If a format won't load, it's an OIIO-install or file-problem question, and the well-commented io_nodes.py is your best reference.
    CategoryNuke/IO

    Inputs (9)

    NameTypeDefaultDescription
    file_pathSTRING
    frameINT1-999999–999999
    load_as_sequenceoptBOOLEANtrueTreat path as image sequence (enable for patterns like ####, %04d)
    first_frameoptINT1-999999–999999
    last_frameoptINT1-999999–999999
    frame_modeoptCOMBOsingle3 options: single, range, all
    missing_framesoptCOMBOblack4 options: error, black, hold, nearest
    colorspaceoptCOMBOrawColorspace the FILE IS IN on disk (matches Nuke's Read node convention). The node converts from this into the OCIO working space (the config's scene_linear role, e.g. ACEScg). raw - no conversion (pixels are passed through as stored) any other entry - OCIO colourspace the file is encoded in (e.g. 'sRGB Encoded Rec.709 (sRGB)' for PNG / JPG, 'ACEScg' for linear EXR) The list comes from the active OCIO config ($OCIO, or the built-in ACES Studio config) and is built when ComfyUI starts - restart ComfyUI after changing $OCIO.
    show_previewoptBOOLEANtrueShow thumbnail preview in node

    Outputs (1)

    NameTypeDescription
    IMAGEIMAGE