Files
VFXProxy/PROMPT.md
T
twotalesanimation 1a2ece6f12 Initial Commit
2026-07-04 15:54:19 +02:00

2.7 KiB

Create a Python desktop application using PySide6 called "VFX Pull Processor".

Purpose: This application scans one or more selected folders recursively for EXR image sequences, then uses Nuke in terminal mode to render proxy movies using a template Nuke script.

Architecture:

  • PySide6 GUI
  • Separate modules
    • app.py
    • gui.py
    • scanner.py
    • parser.py
    • jobs.py
    • nuke_runner.py
    • process.py (runs inside Nuke)
    • config.json

The GUI should contain:


VFX Pull Processor

Pull Folder [_________________________] [Browse]

Output Root [ V:_FOOTAGE ] [Browse]

Nuke Executable [ C:\Program Files\Nuke16.0v1\Nuke16.0.exe ] [Browse]

Template Script [ proxy_template.nk ] [Browse]


Sequences Found

(QTableWidget)

Columns:

Checkbox Shot Frames Resolution Status


[ Scan ]

[ Render Selected ]

Progress Bar

Log Window


Requirements

When Scan is pressed:

  • recursively search every selected folder
  • identify EXR sequences
  • group frames into sequences
  • detect missing frames
  • determine first and last frame
  • populate the table

Filename format is always:

SHOW_EPISODE_SEQUENCE_SHOT_ELEMENT_TASK_VERSION.FRAME.exr

Example:

UNG_101_012_010_BG01_TT_v001.01001.exr

Parse into:

show = UNG episode = 101 sequence = 012 shot = 010 element = BG01 task = TT version = v001

Create a Shot object containing:

show episode sequence shot element task version basename firstFrame lastFrame inputSequence outputFolder outputMovie

basename should equal:

UNG_101_012_010_BG01_TT_v001

Output folder should be:

V:/FOOTAGE/ {show}/ {show}{episode}/ {basename}/

Output files should be:

{basename}.exr {basename}.mov

When Render Selected is pressed:

Launch Nuke ONCE using:

Nuke.exe -t process.py jobs.json

Do NOT launch Nuke once per shot.

Instead:

  • create jobs.json
  • pass it to process.py

process.py should:

  • load proxy_template.nk
  • locate nodes named: Read_Input Write_Output
  • for each job: set Read_Input.file set Write_Output.file execute render
  • clear caches between jobs if needed
  • print progress to stdout

The GUI should capture stdout from Nuke and display it in the log window.

Design the code cleanly using dataclasses where appropriate.

Keep parsing logic, scanning logic, GUI, and Nuke execution completely separate.

The code should be easy to extend later for:

  • JPG proxies
  • PNG proxies
  • Contact sheets
  • Thumbnail generation
  • Validation reports

Do not put any pipeline logic inside the Nuke script. The Nuke script is only a visual template.