This Python tool is a Python Panel for Nuke that allows for the ingestion of footage to be outputted to an EXR sequence with arbitrary metadata tags added. The tool uses a custom UI built via QtDesigner and managed with the PySide2 modules. The tool also allows for EDL (Edit Decision List) files to be parsed so that footage can automatically be imported into the tool, with the proper frame ranges of shots populated. This workflow makes sense for footage files that might equate to multiple different "shots" (and ultimately, EXR sequences) from editorial.


Checkout the Github repository here.


Footage Import


Any number of footage files can be imported into the tool. The process is then to add shots for each of these files. The frame ranges specified for each shot is what will get created into an EXR sequence (not the whole footage file). As stated above, each incoming file could be pointing to multiple shots - depending on how it was used in editorial. The columns Start/End/Inc are self explanatory for frame ranges. Handles determines if extra frame padding will be added on either end of the explicitly defined frame range. The following column determines that padding amount (length). When importing via EDL, all footage that the EDL references, along with the shots each footage encompasses are automatically populated based on the timecode information in the EDL.


Nuke Ingest

Footage Ingestion Tool (On going WIP)

The Shots table layout is unique for whatever footage file is selected above. Shot number determines how the particular frame range specified (from the same incoming file) gets translated into the EXR sequence as a shot.



Mappings determines how the file name of the incoming footage gets translated to the EXR sequence name(s) and the potential subdirectories they live in. The tool allows for this mapping data to be parsed by a simple user-defined CSV file, or by manually adding them inside the interface. The expected format is a pseudo-regex-style variable mapping, which matches tokens in the input to be later used in the output. For example, in our sample above the footage called TestFootage_Seq2_Shot1.mov would map SEQ to 2 and SHOT to 1, which would get repopulated in the output EXR sequence as subdirectories sq2 and s1.




This tab allows the user to add any arbitrary amount of variables that is then tagged onto the EXR sequence. For example, the incoming file could be tagged with department names that will be working on the shot, or names of assets that need to be included in the shot. The idea is that all this metadata can then be utilized by other tools to then make smarter decisions about what we show or do for the user.


Variable names are enclosed by curly braces ({}). Whatever the variable fills in within the input string is placed in the output string. For example for an incoming footage path /foo/bar/testFootage.R3D, and input mapping of /foo/bar/{NAME}.R3D with output mapping of /plates/{NAME}.####.exr will be translated as /plates/testFootage.####.exr since {NAME} has replaced testFootage in the original input.

When importing from EDL, a root directory for footage must be specified. All referenced footage will be looked for in this directory and any of its children.



There are various minor options the user can specify prior to ingestion. The user can choose to downscale the incoming footage by a certain percentage and/or specify an additional "proxy" sequence to be exported (with further downscaling if necessary). Post-write script is a shell script to be run after each EXR sequence is written. Variables from the mappings tab along with the reserved {SHOT} variable can be used in the provided string.