SplatTrain
SplatTrain: Gaussian splats trained from your plate (gsplat, Apache-2.0, in the AI worker).
SplatTrain: Gaussian splats trained from your plate (gsplat, Apache-2.0, in the AI worker). Connect the plate, an animated Camera (CameraTracker export or any Camera), optionally a mask (alpha = ignore, e.g. AIRoto on moving objects) and initial points (CameraTrackerPointCloud / DepthToPoints). Trains in scene-linear float (HDR kept). The viewer shows live previews; Cancel keeps a checkpoint, Resume continues. Output: splats for the 3D viewer / ScanlineRender; Export writes a standard 3DGS .ply. Mode 3DGS (ellipsoids) or 2DGS (flat discs, sharper surfaces); Densification MCMC (default, fixed budget set by Max Splats) or default.
| Node | SplatTrain |
|---|---|
| Type id | OC_N_splattrain |
| Menu | AI › SplatTrain |
| Nuke class | none: saved in .nk files as an Oink node |
| Code | opencomp_core/nodes/ai/splat_train.py |

Inputs and outputs
| Port | Name | Type |
|---|---|---|
| input 0 | plate | image |
| input 1 | camera | scene |
| input 2 | mask | image |
| input 3 | points | scene |
| output 0 | scene | scene |
Knobs
Panel tab Splattrain, in panel order.
| Knob | Label | Type | Default | Range / values | Nuke knob | Description |
|---|---|---|---|---|---|---|
frame_range | frame range | menu | project | project, custom | ||
range_first | first | float | 1 | -100000 to 100000 (integer) | ||
range_last | last | float | 100 | -100000 to 100000 (integer) | ||
frame_step | every Nth frame | float | 1 | 1 to 100 (integer) | ||
holdout_every | hold out every | float | 0 | 0 to 100 (integer) | Every Nth frame is not trained, only scored (PSNR / SSIM). 0 = train on all | |
resolution_scale | resolution scale | float | 0.5 | 0.05 to 1 | ||
mask_mode | mask | menu | exclude | none, exclude (alpha = ignore), include (alpha = train) | ||
iterations | iterations | float | 7000 | 1 to 1000000 (integer) | ||
sh_degree | SH degree | menu | 3 | 0 (0 (DC only)), 1, 2, 3 | Spherical-harmonic bands trained (view-dependent colour) | |
mode | mode | menu | 3dgs | 3dgs (3DGS), 2dgs (2DGS (surfels)) | ||
antialiased | anti-aliased (Mip) | bool | false | Mip-Splatting 2D filter (3DGS). Note: Oink's renderers draw classic splats | ||
strategy | densification | menu | mcmc | default, mcmc (MCMC) | ||
densify | densify | bool | true | |||
densify_from | densify from | float | 500 | 0 to 1000000 (integer) | ||
densify_until | densify until | float | 15000 | 0 to 1000000 (integer) | ||
densify_every | densify every | float | 100 | 1 to 10000 (integer) | ||
grad_threshold | grow threshold | float | 0.0002 | 0 to 0.01 | Screen-space gradient that clones / splits a splat | |
opacity_reset_every | opacity reset every | float | 3000 | 0 to 1000000 (integer) | ||
max_splats | max splats (MCMC) | float | 1000000 | 1000 to 20000000 (integer) | MCMC budget | |
init_count | random init splats | float | 100000 | 100 to 5000000 (integer) | Without the points input: splats seeded along the camera rays | |
background | background | colour ×3 | 0, 0, 0 | 0 to 1 | Colour behind the splats while training (linear) | |
preview_every | preview every | float | 500 | 0 to 100000 (integer) | Steps between live previews in the viewer (0 = none) | |
seed | seed | float | 0 | 0 to 1000000 (integer) | ||
display_as | display as | menu | splats | splats, points | ||
render_sh | render SH | menu | 3 | 0 (0 (DC only)), 1, 2, 3 | ||
render_splats | render splats | float | 0 | 0 to 20000000 (integer) | Most splats rendered, the most visible first (0 = all) | |
viewer_splats | viewer splats | float | 3000000 | 1000 to 20000000 (integer) | ||
run_dir | run folder | text | Checkpoint + results (empty = new folder in $OPENCOMP_SPLAT_DIR or the NAS) | |||
export_file | export file | file | Standard 3DGS .ply |
Other knobs (Python, .nk and the assistant; not on the panel)
| Knob | Label | Type | Default | Range / values | Nuke knob | Description |
|---|---|---|---|---|---|---|
gl_color | Viewer Controls Color | float ×3 | 0, 0, 0 | 0 to 1 | ||
postage_stamp_frame | Static Frame | int | 1 | -2147483648 to 2147483647 | ||
lifetimeStart | Lifetime Start | int | 0 | -2147483648 to 2147483647 | ||
lifetimeEnd | Lifetime End | int | 100 | -2147483648 to 2147483647 | ||
useLifetime | Use Lifetime | boolean | false | |||
cached | Cached | boolean | false | |||
bookmark | Bookmark | boolean | false | |||
dope_sheet | Dope Sheet | boolean | false | |||
clone_group | Clone Group | string | ||||
link_source | Link Source | string | ||||
link_overrides | Link Overrides | string | ||||
split_views | Split Views | string | ||||
result_file | Result | string | ||||
preview_file | Preview | string | ||||
generation | Generation | int | 0 | -2147483648 to 2147483647 | ||
splat_count | Splats | int | 0 | -2147483648 to 2147483647 | ||
trained_steps | Trained Steps | int | 0 | -2147483648 to 2147483647 | ||
train_psnr | Train PSNR | float | 0 | -3.4028234663852886e+38 to 3.4028234663852886e+38 | ||
eval_psnr | Held-out PSNR | float | 0 | -3.4028234663852886e+38 to 3.4028234663852886e+38 | ||
eval_ssim | Held-out SSIM | float | 0 | -3.4028234663852886e+38 to 3.4028234663852886e+38 | ||
train_seconds | Train Time (s) | float | 0 | -3.4028234663852886e+38 to 3.4028234663852886e+38 | ||
peak_vram | Peak VRAM (GB) | float | 0 | -3.4028234663852886e+38 to 3.4028234663852886e+38 |
Nuke equivalent
No Nuke class. In a .nk file this node is written as an Oink node that Nuke will not recognise.