@@ -0,0 +1,706 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user