707 lines
8.5 KiB
Markdown
707 lines
8.5 KiB
Markdown
# VFXReview Connector for Nuke
|
|
|
|
A dockable PySide-based panel for Foundry Nuke that integrates with the VFXReview platform to streamline shot setup, review publishing, render management, and compositing workflows for VFX production pipelines.
|
|
|
|
---
|
|
|
|
# Overview
|
|
|
|
The Nuke Connector is designed around a single principle:
|
|
|
|
> Artists should not spend time building standard node graphs, locating plates, configuring write nodes, or publishing reviews.
|
|
|
|
The connector automates these repetitive tasks and standardises shot structure across the project.
|
|
|
|
---
|
|
|
|
# Configuration
|
|
|
|
The connector uses the following global configuration variables.
|
|
|
|
| Variable | Description |
|
|
| ------------ | --------------------------- |
|
|
| TOKEN | API authentication token |
|
|
| BASE_URL | VFXReview platform URL |
|
|
| PROJECT_CODE | Project identifier |
|
|
| PROJECT_ROOT | Root project directory |
|
|
| FOOTAGE_ROOT | Source footage location |
|
|
| EXPORT_ROOT | Published render location |
|
|
| PICLOCK_ROOT | Picture lock location |
|
|
| NK_ROOT | Nuke script location |
|
|
| OCIO_CONFIG | Facility OCIO configuration |
|
|
|
|
Example:
|
|
|
|
```python
|
|
TOKEN = "xxxxx"
|
|
BASE_URL = "https://review.twotalesvfx.com"
|
|
PROJECT_CODE = "UNG_S1"
|
|
|
|
PROJECT_ROOT = "X:/shared_projects_2026/UNGO_VFX"
|
|
FOOTAGE_ROOT = PROJECT_ROOT + "/production/plates"
|
|
EXPORT_ROOT = PROJECT_ROOT + "/production/renders"
|
|
PICLOCK_ROOT = PROJECT_ROOT + "/production/piclocks"
|
|
NK_ROOT = PROJECT_ROOT + "/production/nuke"
|
|
|
|
OCIO_CONFIG = PROJECT_ROOT + "/config/aces/config.ocio"
|
|
```
|
|
|
|
---
|
|
|
|
# Panel Layout
|
|
|
|
The panel is divided into six sections.
|
|
|
|
1. Shot Builder
|
|
2. Publishing
|
|
3. References
|
|
4. Utilities
|
|
5. Color Management
|
|
6. Status
|
|
|
|
---
|
|
|
|
# Shot Builder
|
|
|
|
---
|
|
|
|
## Episode Dropdown
|
|
|
|
Queries:
|
|
|
|
```http
|
|
GET /api/ext/projects/{PROJECT_CODE}/episodes
|
|
```
|
|
|
|
Displays:
|
|
|
|
```text
|
|
UNG_101
|
|
UNG_102
|
|
UNG_103
|
|
...
|
|
```
|
|
|
|
---
|
|
|
|
## Shot Dropdown
|
|
|
|
Queries:
|
|
|
|
```http
|
|
GET /api/ext/projects/{PROJECT_CODE}/shots?episode={episode}
|
|
```
|
|
|
|
Displays:
|
|
|
|
```text
|
|
UNG_106_010_020
|
|
UNG_106_010_030
|
|
UNG_106_010_040
|
|
```
|
|
|
|
---
|
|
|
|
## Build Shot
|
|
|
|
Creates a complete Nuke script for the selected shot.
|
|
|
|
### Process
|
|
|
|
1. Retrieve shot metadata from VFXReview.
|
|
2. Locate latest plate sequences.
|
|
3. Create Read nodes.
|
|
4. Create project Backdrop.
|
|
5. Configure project settings.
|
|
6. Create standard Write nodes.
|
|
7. Create Review branch.
|
|
8. Create Viewer.
|
|
9. Save script.
|
|
|
|
### Script Structure
|
|
|
|
```text
|
|
PLATES
|
|
Read_Plate
|
|
|
|
|
OCIOColorSpace
|
|
|
|
|
Dot
|
|
|
|
|
--------------------------------
|
|
| |
|
|
COMP REVIEW
|
|
| |
|
|
Write_EXR ReviewSlate
|
|
|
|
|
Write_MOV
|
|
```
|
|
|
|
### Script Settings
|
|
|
|
```python
|
|
fps = 24
|
|
format = UHD
|
|
colorManagement = OCIO
|
|
```
|
|
|
|
### Save Location
|
|
|
|
```text
|
|
{NK_ROOT}/{episode}/{shotCode}/{shotCode}_comp_v001.nk
|
|
```
|
|
|
|
---
|
|
|
|
## Build Cleanup Script
|
|
|
|
Creates a prebuilt cleanup template.
|
|
|
|
### Graph
|
|
|
|
```text
|
|
Read
|
|
|
|
|
FrameHold
|
|
|
|
|
RotoPaint
|
|
|
|
|
Merge
|
|
|
|
|
Write
|
|
```
|
|
|
|
Used for:
|
|
|
|
* Reflection removal
|
|
* Wire removal
|
|
* Crew cleanup
|
|
* Sign removal
|
|
* Set extensions
|
|
|
|
---
|
|
|
|
## Build Projection Script
|
|
|
|
Creates a standard projection setup.
|
|
|
|
### Graph
|
|
|
|
```text
|
|
Read
|
|
|
|
|
Project3D
|
|
|
|
|
Card
|
|
|
|
|
ScanlineRender
|
|
```
|
|
|
|
Additional nodes:
|
|
|
|
```text
|
|
Camera
|
|
Axis
|
|
Scene
|
|
```
|
|
|
|
---
|
|
|
|
## Build Screen Comp Script
|
|
|
|
Creates a standard monitor replacement setup.
|
|
|
|
### Graph
|
|
|
|
```text
|
|
Read
|
|
|
|
|
PlanarTracker
|
|
|
|
|
CornerPin
|
|
|
|
|
Merge
|
|
```
|
|
|
|
Creates placeholders for:
|
|
|
|
* Screen source
|
|
* Reflection source
|
|
* Grade stack
|
|
|
|
---
|
|
|
|
# Publishing
|
|
|
|
---
|
|
|
|
## Publish EXR
|
|
|
|
Creates or updates:
|
|
|
|
```text
|
|
Write_EXR
|
|
```
|
|
|
|
### Settings
|
|
|
|
```text
|
|
Datatype: 16-bit half
|
|
Compression: ZIP
|
|
Colorspace: ACEScg
|
|
```
|
|
|
|
### Output
|
|
|
|
```text
|
|
{EXPORT_ROOT}/{shotCode}/{exrOutput}.####.exr
|
|
```
|
|
|
|
---
|
|
|
|
## Publish Review MOV
|
|
|
|
Creates:
|
|
|
|
```text
|
|
Write_Review
|
|
```
|
|
|
|
### Output
|
|
|
|
```text
|
|
{EXPORT_ROOT}/{shotCode}_cmp_TT_v001.mov
|
|
```
|
|
|
|
### Review Slate
|
|
|
|
Automatically inserts:
|
|
|
|
```text
|
|
ReviewSlate
|
|
```
|
|
|
|
Populated from API metadata.
|
|
|
|
Fields:
|
|
|
|
* Shot Name
|
|
* Description
|
|
* Notes
|
|
* Episode
|
|
* Scene
|
|
* Date
|
|
* Version
|
|
* Artist
|
|
|
|
---
|
|
|
|
## Publish to VFXReview
|
|
|
|
One-click publish.
|
|
|
|
### Process
|
|
|
|
1. Render review MOV.
|
|
2. Generate thumbnail.
|
|
3. Upload MOV.
|
|
4. Upload thumbnail.
|
|
5. Update review status.
|
|
6. Attach version notes.
|
|
|
|
### API
|
|
|
|
```http
|
|
POST /api/ext/reviews
|
|
```
|
|
|
|
---
|
|
|
|
## Version Up
|
|
|
|
Automatically increments:
|
|
|
|
```text
|
|
UNG_106_010_020_comp_v001.nk
|
|
```
|
|
|
|
to
|
|
|
|
```text
|
|
UNG_106_010_020_comp_v002.nk
|
|
```
|
|
|
|
Updates:
|
|
|
|
* Script filename
|
|
* Write nodes
|
|
* Review paths
|
|
* Slate version
|
|
|
|
---
|
|
|
|
# References
|
|
|
|
---
|
|
|
|
## Pull Picture Lock
|
|
|
|
Retrieves picture lock reference.
|
|
|
|
### Process
|
|
|
|
1. Query sequence timecodes.
|
|
2. Locate offline.
|
|
3. Create Read node.
|
|
4. Set frame range.
|
|
5. Place in REFERENCE backdrop.
|
|
|
|
### Graph
|
|
|
|
```text
|
|
Read_Piclock
|
|
```
|
|
|
|
Positioned separately from comp graph.
|
|
|
|
---
|
|
|
|
## Pull Latest Plate
|
|
|
|
Scans:
|
|
|
|
```text
|
|
FOOTAGE_ROOT
|
|
```
|
|
|
|
Imports latest available plate version.
|
|
|
|
Creates:
|
|
|
|
```text
|
|
Read_Plate
|
|
```
|
|
|
|
---
|
|
|
|
## Pull Latest Render
|
|
|
|
Scans render folder.
|
|
|
|
Creates Read nodes for:
|
|
|
|
```text
|
|
beauty
|
|
matte
|
|
atmos
|
|
fx
|
|
comp
|
|
```
|
|
|
|
where available.
|
|
|
|
---
|
|
|
|
## Pull Client Notes
|
|
|
|
Queries VFXReview.
|
|
|
|
Displays:
|
|
|
|
* Description
|
|
* Notes
|
|
* Latest review comments
|
|
* Client feedback
|
|
|
|
inside panel.
|
|
|
|
---
|
|
|
|
# Utilities
|
|
|
|
---
|
|
|
|
## Auto Cryptomatte Setup
|
|
|
|
Scans channels.
|
|
|
|
Automatically creates:
|
|
|
|
```text
|
|
Cryptomatte_Object
|
|
Cryptomatte_Material
|
|
Cryptomatte_Asset
|
|
```
|
|
|
|
where available.
|
|
|
|
---
|
|
|
|
## Auto Shuffle Setup
|
|
|
|
Creates shuffles for common passes.
|
|
|
|
Examples:
|
|
|
|
```text
|
|
rgba
|
|
depth
|
|
motion
|
|
position
|
|
normal
|
|
specular
|
|
diffuse
|
|
emission
|
|
```
|
|
|
|
---
|
|
|
|
## Import Render Package
|
|
|
|
Imports all render layers from a render directory.
|
|
|
|
Creates:
|
|
|
|
```text
|
|
Read nodes
|
|
Backdrop
|
|
```
|
|
|
|
Organised automatically.
|
|
|
|
---
|
|
|
|
## Fix Paths
|
|
|
|
Searches entire script.
|
|
|
|
Updates:
|
|
|
|
```text
|
|
old path
|
|
```
|
|
|
|
to
|
|
|
|
```text
|
|
current project path
|
|
```
|
|
|
|
Useful when artists move between machines.
|
|
|
|
---
|
|
|
|
## Script Health Check
|
|
|
|
Scans script for:
|
|
|
|
* Missing footage
|
|
* Missing renders
|
|
* Missing OCIO config
|
|
* Disabled Write nodes
|
|
* Broken file paths
|
|
|
|
Returns report.
|
|
|
|
---
|
|
|
|
# Color Management
|
|
|
|
---
|
|
|
|
## Configure OCIO
|
|
|
|
Sets:
|
|
|
|
```python
|
|
nuke.root()["colorManagement"].setValue("OCIO")
|
|
```
|
|
|
|
Loads facility OCIO config.
|
|
|
|
---
|
|
|
|
## Configure Project
|
|
|
|
Sets:
|
|
|
|
```text
|
|
FPS = 24
|
|
Format = UHD
|
|
Viewer = ACES 1.0 SDR Video
|
|
```
|
|
|
|
or project-specific viewer process.
|
|
|
|
---
|
|
|
|
## Apply Colorspaces
|
|
|
|
Automatically assigns colorspaces to Read nodes based on:
|
|
|
|
* Metadata
|
|
* Filename conventions
|
|
* Folder structure
|
|
|
|
Examples:
|
|
|
|
```text
|
|
plates = ACES2065-1
|
|
cg = ACEScg
|
|
jpg = Utility - sRGB
|
|
mov = Rec709
|
|
```
|
|
|
|
---
|
|
|
|
# API Reference
|
|
|
|
All requests include:
|
|
|
|
```http
|
|
Authorization: Bearer {TOKEN}
|
|
Accept: application/json
|
|
```
|
|
|
|
---
|
|
|
|
## Endpoints
|
|
|
|
### Episodes
|
|
|
|
```http
|
|
GET /api/ext/projects/{PROJECT_CODE}/episodes
|
|
```
|
|
|
|
### Shots
|
|
|
|
```http
|
|
GET /api/ext/projects/{PROJECT_CODE}/shots
|
|
```
|
|
|
|
### Shot Lookup
|
|
|
|
```http
|
|
GET /api/ext/shots/lookup
|
|
```
|
|
|
|
### Publish Review
|
|
|
|
```http
|
|
POST /api/ext/reviews
|
|
```
|
|
|
|
### Update Status
|
|
|
|
```http
|
|
POST /api/ext/shots/status
|
|
```
|
|
|
|
---
|
|
|
|
# Shot Metadata Fields
|
|
|
|
| Field | Purpose |
|
|
| ---------------- | -------------------- |
|
|
| shotCode | Canonical identifier |
|
|
| exrOutput | EXR publish filename |
|
|
| description | Review slate |
|
|
| notes | Review slate |
|
|
| episode | Metadata |
|
|
| scene | Metadata |
|
|
| seqTimecodeStart | Picture lock |
|
|
| seqTimecodeEnd | Picture lock |
|
|
| status | Tracking |
|
|
| artist | Review metadata |
|
|
|
|
---
|
|
|
|
# Standard Node Backdrops
|
|
|
|
The connector automatically creates the following backdrops:
|
|
|
|
```text
|
|
INPUTS
|
|
REFERENCE
|
|
COMP
|
|
REVIEW
|
|
WRITE
|
|
UTILITIES
|
|
```
|
|
|
|
This ensures every artist works with a consistent node graph layout.
|
|
|
|
---
|
|
|
|
# Status Panel
|
|
|
|
The bottom panel displays:
|
|
|
|
### Line 1
|
|
|
|
```text
|
|
Current Shot
|
|
```
|
|
|
|
Example:
|
|
|
|
```text
|
|
UNG_106_010_020
|
|
```
|
|
|
|
### Line 2
|
|
|
|
```text
|
|
Current Script Version
|
|
```
|
|
|
|
Example:
|
|
|
|
```text
|
|
v012
|
|
```
|
|
|
|
### Line 3
|
|
|
|
```text
|
|
Last Action
|
|
```
|
|
|
|
Example:
|
|
|
|
```text
|
|
Published review successfully
|
|
```
|
|
|
|
### Line 4
|
|
|
|
```text
|
|
Warnings
|
|
```
|
|
|
|
Examples:
|
|
|
|
```text
|
|
Missing Cryptomatte
|
|
Missing Plate
|
|
Broken Read Node
|
|
```
|
|
|
|
---
|
|
|
|
# Future Features
|
|
|
|
* Farm submission
|
|
* Deadline integration
|
|
* Render progress tracking
|
|
* Automatic review generation
|
|
* AI-assisted cleanup setup
|
|
* AI-assisted screen comp setup
|
|
* AI-assisted roto setup
|
|
* Automatic shot diagnostics
|
|
* Direct VFXReview note syncing
|
|
* Multi-show support
|
|
* Nuke Studio integration
|
|
|
|
The primary goal of the connector is to allow an artist to open a shot and begin compositing immediately with all infrastructure, references, review outputs, and publish paths already configured.
|