Files
twotalesanimation 1a2ece6f12 Initial Commit
2026-07-04 15:54:19 +02:00

162 lines
2.7 KiB
Markdown

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.