Oink
Read Read

Read

Reads images from disk.

raw .md

Reads images from disk. Sequences use #### or %04d in the file name (a %04d path from a .nk file is kept as written and expanded when read). Movies (mov, mp4, mxf, mkv, webm, avi, gif and more) are decoded inside the app with LGPL FFmpeg libraries. Playback reads ahead of the playhead, so frames are ready before you reach them. before / after set what shows outside the frame range (hold by default); Missing Frames chooses error, black, checkerboard or nearest frame. format and proxy format, the OCIO context tab and the EXR options (edge pixels, offset negative display window, do not attach prefix, channel filters) match the standard Read.

NodeRead
MenuInput/Output › Read
Names in each format
.oink comp (JSON)"type": "OC_N_read"
.nk scriptRead (how .nk import works)
Pythonnuke.createNode("Read")
Assistant (MCP)create_node(type="Read")
Tab searchread

Read properties

Localization

A Read can work from a local copy of its files instead of the network share (localization). Set localization policy: on always copies the files, from auto-localize path copies them only when they are under a folder listed in Preferences › Performance › Localization › auto-localize from, on demand copies them only when you click Update, off never copies them. Only the frames in the Read's frame range are copied, starting at the current frame. A bar at the top of the thumbnail shows the state: amber while copying, green when every frame is local, red when the source changed since it was copied (striped red: the Read is reading the source files meanwhile). See Localization.

Inputs and outputs

PortNameType
output 0Imageimage

Knobs

Panel tab Read, in panel order.

KnobLabelTypeDefaultRange / values.nk knobDescription
filepathfilefilefileFile path. Use #### for frame padding in sequences
localization_policylocalization policymenufromAutoLocalizePathon, fromAutoLocalizePath (from auto-localize path), onDemand (on demand), offlocalizationPolicywhen this Read's files are copied to the local cache (.nk localizationPolicy). New Reads take the Preferences' default.
updateLocalizationUpdatebutton (panel only)Update: copy the files now, or copy again the ones whose source changed (the only way an on demand Read is localized).
formatformattextformatNuke format text 'w h [x y r t] [pixel aspect] [name]'; empty = the file's own (header). Another size sets the display window; the pixels are not scaled
proxyproxyfileproxyFile used instead when the viewer is in proxy mode
proxy_formatproxy formattextproxy_formatFormat of the proxy file (Nuke proxy_format; kept for .nk)
first_frameframe rangefloat1-100000 to 100000 (integer)firstFirst frame of sequence
last_frametofloat1-100000 to 100000 (integer)lastLast frame of sequence
beforebeforemenuHOLDHOLD (hold), LOOP (loop), BOUNCE (bounce), BLACK (black)beforeWhat to show before the first frame
afteraftermenuHOLDHOLD (hold), LOOP (loop), BOUNCE (bounce), BLACK (black)afterWhat to show after the last frame
frame_modeframemenuEXPRESSIONEXPRESSION (expression), START_AT (start at), OFFSET (offset)frame_mode
frametextframeExpression (e.g. frame+10, frame*2), start frame, or offset; empty = none
orig_firstoriginal rangefloat1-100000 to 100000 (integer)origfirstFirst frame found on disk
orig_lasttofloat1-100000 to 100000 (integer)origlastLast frame found on disk
on_errormissing framesmenuERRORERROR (error), BLACK (black), CHECKERBOARD (checkerboard), NEAREST (nearest frame)on_error
reloadreloadbutton (panel only)
colorspaceinput transformmenudefaultdefault (default (by file type))colorspaceOCIO colorspace of the file; converted to scene_linear. 'default' = by file type (float=linear, log=compositing_log, 8/16-bit=sRGB)
premultipliedpremultipliedboolfalsepremultipliedFile is premultiplied: unpremultiply around the colorspace conversion
rawraw databoolfalserawNo colorspace conversion
auto_alphaauto alphaboolfalseauto_alphaSet alpha to 1 when the file has none (otherwise 0, like Nuke)
key1key1textkey1
value1value1textvalue1
key2key2textkey2
value2value2textvalue2
key3key3textkey3
value3value3textvalue3
key4key4textkey4
value4value4textvalue4

Other knobs (Python, .nk and the assistant; not on the panel)

KnobLabelTypeDefaultRange / values.nk knobDescription
gl_colorViewer Controls Colorfloat ×30, 0, 00 to 1
postage_stamp_frameStatic Frameint1-2147483648 to 2147483647
lifetimeStartLifetime Startint0-2147483648 to 2147483647
lifetimeEndLifetime Endint100-2147483648 to 2147483647
useLifetimeUse Lifetimebooleanfalse
cachedCachedbooleanfalse
bookmarkBookmarkbooleanfalse
dope_sheetDope Sheetbooleanfalse
clone_groupClone Groupstring
link_sourceLink Sourcestring
link_overridesLink Overridesstring
split_viewsSplit Viewsstring
is_sequenceSequencebooleanfalseTreat as image sequence
mov64_ycbcr_matrixYCbCr Matrixenumdefaultdefault, rec601, rec709, rec2020mov64_ycbcr_matrixMatrix that turns the movie's YCbCr into RGB
mov64_decode_video_levelsData Rangeenumdefaultdefault, video, fullmov64_decode_video_levelsCode value range of the movie's YCbCr
mov64_decoderDecoderenumautoauto, cpu, nvdecMovie decoder (not in Nuke: ours)
origsetOriginal Range SetbooleanfalseorigsetNuke origset (the original range was read from disk)
reload_serialReloadint0-2147483648 to 2147483647Bumped by the reload button: every cache of this Read is re-read from disk
offset_negative_display_windowOffset Negative Display Windowbooleantrueoffset_negative_display_windowA display window starting at a negative x: on = shift the image so it starts at x 0; off = shrink the format on both sides by that amount (overscan)
noprefixDo Not Attach PrefixbooleanfalsenoprefixMetadata keys as in the file, without the exr/ prefix
edge_pixelsEdge PixelsenumPLATE_DETECTPLATE_DETECT, EDGE_DETECT, REPEAT, BLACKedge_pixelsPixels outside the data window (bbox)
channel_filter_languageChannel Filterenumglobglob, regexchannel_filter_language
channel_filtersFilter Masksstring*channel_filtersEXR channel names to load, left to right: 'pattern' / +pattern on, -pattern off, #pattern ignored (e.g. '* -diffuse +rock_diffuse*'). rgba and depth always lo
disable_extra_channelsDisable Extra Channelsbooleanfalsedisable_extra_channelsLoad only RGBA and Z (depth)
pre_error_on_channel_limitPre-Error If Channel Limit Exceededbooleantruepre_error_on_channel_limitNuke's 1024-channel limit (Oink has none: kept for .nk)
mov64_first_track_onlyFirst Track Onlybooleantruemov64_first_track_onlyOnly the first video track (Oink reads the first track: kept for .nk)
mov64_no_prefixDo Not Attach Prefixbooleanfalsemov64_no_prefixMetadata keys without the quicktime/ prefix (container keys keep it)
mov64_match_meta_formatMatch Key Formatbooleantruemov64_match_meta_formatClean metadata keys into Nuke's key format
show_thumbnailShow ThumbnailbooleanfalseDisplay a preview thumbnail of the image

Knob names in .nk scripts

.nk knobKnob here
filefilepath
firstfirst_frame
lastlast_frame
origfirstorig_first
origlastorig_last
localizationPolicylocalization_policy
cacheLocallocalization_policy

Other .nk knobs use the same name here. See .nk import.

Examples

Open these from Help › Examples…, or from the ? menu in this node's Properties panel.

  • OCIOColorSpace: ACES2065-1 to scene linear (examples/color/ocio_aces_to_linear.oink): Carrots.exr is stored with ACES2065-1 (AP0) primaries. The Read is set to raw (no conversion) and the OCIOColorSpace converts AP0 to the working space (Linear Rec.709), which is what the Read's input transform does for you when you set it.
  • Read input transform: ACES2065-1 frame (examples/color/read_aces_input_transform.oink): One 4K frame of Netflix's Sparks (CC BY 4.0, Netflix Open Content): scene-linear ACES2065-1 with no chromaticities in the file, so the Read's input transform is set to ACES2065-1 by hand. The Reformat brings the 4096x2160 frame down to HD for a light comp.
  • Cryptomatte layers (examples/cryptomatte/cryptomatte_layers.oink): Psyop's Cryptomatte sample render (BSD-3-Clause): the file carries a preview layer (uCryptoObject, one flat colour per object) and the ID/coverage rank layers uCryptoObject00-02. The Shuffle shows the preview layer; switch its input layer to uCryptoObject00 to see raw IDs (red, blue) and coverage (green, alpha).
  • Data window outside the display window (examples/io/read_data_window.oink): openexr-images DisplayWindow/t08.exr: 400x300 pixels whose data window starts at (30, 40) inside a 501x401 display window. The Read keeps the whole data window as the bounding box; the Crop cuts it back to the format, like Nuke.
  • Read an EXR (examples/io/read_exr_basic.oink): A single scanline EXR photo (openexr-images ScanLines/Desk.exr) read into scene-linear and shown in the Viewer. Start here: open the Read's properties to see the file, frame range and colour knobs.
  • Bright values, NaN and inf (examples/io/read_hdr_nan_inf.oink): TestImages/BrightRingsNanInf.exr has rings brighter than 1000 and a few NaN / inf pixels in the middle. Oink never clamps in the pipeline, so they reach the Viewer as they are. The Clamp limits the rings to 0-1; the NaN pixels stay NaN (look at them with the Viewer's pixel readout), which is why you fix NaNs at the source before a blur spreads them.
  • Multi-part stereo EXR sequence (examples/io/read_multipart_stereo.oink): The Beachball sequence stored as EXR 2.0 multi-part files: one layer per part, left and right views, and a different data window per part. The Shuffle pulls the forward motion vectors into rgb.

On this page