Skip to content

Latest commit

Β 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

NEXUS GS Viewer

NEXUS GS Viewer

View, clean, animate and export Gaussian Splats β€” a playblast-ready splat editor built for VFX pipelines.

Version Platform Electron License PRs

English | FranΓ§ais

πŸ“¬ Building AI Γ— VFX pipeline tools. Follow along and get new tools + breakdowns first β†’ Patrick Crucke on LinkedIn

NEXUS GS Viewer demo β€” 2M splat scene playblast

What it does

NEXUS GS Viewer is a standalone Gaussian Splatting viewer and editor for Windows, macOS and Linux. Drop in a .ply, .spz, .splat or .ksplat scan and you get a fast, 60 fps viewer with Photoshop-style layers β€” plus the two things most splat viewers are missing:

  • a camera animation timeline with a Blender-style camera frame, that exports playblasts (MP4, alpha PNG sequences) and Nuke cameras (.chan, both directions),
  • a full cleanup toolset β€” keep/erase shapes, an eraser brush, splat selection with cut/copy/paste to layers, and destructive baking β€” so a raw scan becomes a clean, re-exportable asset without leaving the app.

It's the missing bridge between splat training tools and your compositing pipeline, and it's 100% local: no accounts, no cloud, no telemetry.

Why it matters

Gaussian Splat scans come out of training noisy β€” floaters, stray ground, blown-out edges β€” and reviewing them means screen-recording a viewport. With NEXUS GS Viewer, the same tool that cleans the scan also blocks the shot: set camera keys like in a DCC, export a 1080p/4K playblast with burn-in timecode, hand the matching .chan camera to Nuke, and composite the alpha PNG sequence directly. A scan goes from trained to in the comp in minutes.

Features

  • πŸš€ Fast β€” streams multi-GB scans from disk, 2,000,000 splats at 60 fps on a modern GPU
  • πŸ—‚οΈ Layers β€” one per file: rename, reorder visibility, per-layer opacity, transform with move/rotate/scale gizmo
  • 🎬 Camera timeline β€” keyframes with easing per key, Catmull-Rom curves, Blender-style camera frame with composition guides (thirds, safe areas)
  • πŸ“Ό Playblast export β€” MP4 (H.264) or PNG sequence with alpha, fixed 1080p/4K/Scope/vertical formats, burn-in timecode option
  • πŸŽ₯ Nuke camera round-trip β€” export the animated camera as .chan, or import a tracked .chan from Nuke and replay it on the splats
  • 🧹 Cleanup shapes β€” boxes, spheres, cylinders and cutting planes in Keep / Erase / Select mode, soft-edge falloff, real-time SDF masking
  • πŸ–ŒοΈ Brushes β€” paint directly on the splats to erase or select (wheel = radius)
  • βœ‚οΈ Splat selection ops β€” extract (cut), duplicate (copy/paste) or delete the selection; extracted splats become a movable layer
  • πŸ”₯ Bake β€” apply edits destructively (undoable), then iterate: slice the ground β†’ apply β†’ brush the floaters β†’ apply
  • πŸ’Ύ Scene sidecar β€” layers, transforms, animation, shapes and settings auto-save next to your file and restore on reopen
  • ↩️ Undo/redo everywhere β€” including bakes and selection extractions
  • πŸ–₯️ Headless CLI β€” batch-render playblasts from scripts or a render farm
  • 🌐 English / French UI (L or the FR/EN button)
  • πŸ†“ MIT, fully local β€” your scans never leave your machine

Screenshots

Viewer β€” 2M splats @ 60 fps Camera timeline & frame
Viewer Timeline
Cleanup shapes (Keep / Erase) Eraser brush
Edit Brush

Installation

Option 1 β€” Release build (recommended)

Windows

  1. Download the latest NEXUS-GS-Viewer-win32-x64.zip from Releases
  2. Unzip anywhere (e.g. C:\Tools\NEXUS GS Viewer\)
  3. Run NEXUS GS Viewer.exe

On first launch the app registers itself (per-user, no admin rights): .spz, .splat and .ksplat open on double-click, and .ply gets an "Open with" entry.

macOS (Apple Silicon: arm64 Β· Intel: x64)

One-line install β€” paste in Terminal, then launch normally from Applications:

curl -L https://github.com/NXStorm/nexus-gs-viewer/releases/latest/download/NEXUS-GS-Viewer-macos-arm64.tar.gz | tar xz -C /Applications

(Intel Macs: replace arm64 with x64.) Downloading with curl skips the browser quarantine entirely, so no Gatekeeper warning and no xattr step.

If you download the .zip through a browser instead, macOS quarantines it (the app isn't notarized): unzip, then run xattr -cr "NEXUS GS Viewer.app" once.

Linux (x64)

curl -L https://github.com/NXStorm/nexus-gs-viewer/releases/latest/download/NEXUS-GS-Viewer-linux-x64.tar.gz | tar xz
"./NEXUS GS Viewer-linux-x64/nexus-gs-viewer"

Option 2 β€” From source

git clone https://github.com/NXStorm/nexus-gs-viewer.git
cd nex-gs-viewer
npm install
npm start          # development
npm run package    # builds release/NEXUS GS Viewer-win32-x64/

Requires Node.js 18+.

Usage

Getting around

Action Input
Orbit / zoom / pan Left click / wheel / middle click
Fly mode (Unreal-style) Hold right click + WASD, wheel = speed, Shift = boost
Frame the scene F
Ground grid V
Screenshot (drops a 3D camera marker) P

Camera animation & playblast

  1. Press T to open the timeline β€” the Blender-style camera frame appears (what's inside is exactly what renders)
  2. Frame your shot, press K to set a key; the playhead advances 1 s β€” repeat frame β†’ K to block the move
  3. Space plays the loop; drag keys to retime, double-click one for per-key easing, click a 3D diamond to jump to it
  4. Open βš™ Settings for curve type, duration, fps, format (1080p / 4K / Scope 2.39 / vertical / square), composition guides, burn-in TC and alpha
  5. Hit Export and pick the output type in the save dialog: MP4, PNG sequence (with alpha if enabled) or Nuke .chan camera

Cleanup & splat editing

  1. Press C to enter Edit mode β€” a bounding box in Keep mode is created
  2. Add shapes (+ Box, + Sphere, + Cyl., + Plane) and set each to Keep (amber β€” masks everything outside the union), Erase (red β€” deletes inside) or Select (blue)
  3. Move shapes with the gizmo, or drag a box face directly; B cycles the eraser / selection brush (wheel = radius)
  4. With a selection: Extract (cut to a new layer), Duplicate (copy to a new layer) or Delete β€” the new layer moves with the gizmo
  5. Apply edits bakes everything destructively (undoable) so you can iterate; Export writes the cleaned .spz/.ply

πŸ”Œ Working in Nuke? Install Nexus-x-Nuke β€” a NEXUS Edit node that opens your splat in the viewer and imports the cleaned result back as a GeoImport, one click each way.

Nuke round-trip

  • NEX β†’ Nuke: export .chan from the timeline, import it on a Camera node (default ZXY rotation order, focal matches the default 18.672 vertical aperture). The camera matches the playblast frame-for-frame β€” composite the alpha PNG sequence directly.
  • Nuke β†’ NEX: export a tracked camera as .chan from Nuke, click – Chan in the timeline (set the timeline fps first). One key per frame, Linear curve, exact replay.

Headless CLI

"NEXUS GS Viewer.exe" scene.ply --render out.mp4 --res 3840x2160 --fps 30

Renders the scene's saved animation (or an automatic orbit) and quits. out can be .mp4, .png (sequence) or .chan.

Keyboard shortcuts

Key Action Key Action
O Open T Timeline
F Frame view K Set camera key
P Screenshot Space Play / pause
V Ground grid G Frame guides
C Edit mode A Key easing
B Brush (erase/select) S Settings panel
W/E/R Move / rotate / scale gizmo Ctrl+Z/Y Undo / redo
L Language H Shortcuts panel

File structure

nex-gs-viewer/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ main/index.js        # Electron main β€” IPC, CLI, file associations
β”‚   β”œβ”€β”€ preload/index.js     # Safe bridge between main and renderer
β”‚   └── renderer/            # The app: viewer, timeline, editor, i18n
β”œβ”€β”€ scripts/
β”‚   β”œβ”€β”€ package.mjs          # npm run package β†’ portable win32-x64 build
β”‚   └── make-test-ply.mjs    # Generates the 2k-splat test sphere
β”œβ”€β”€ docs/                    # Screenshots, hero GIF, French README
β”œβ”€β”€ LICENSE                  # MIT
└── README.md

Requirements

  • Windows 10/11, macOS 12+ (Apple Silicon & Intel) or Linux x64, GPU with WebGL2 (tested up to 2M splats at 60 fps on an RTX 5090)
  • Node.js 18+ only if building from source
  • No external dependencies, no account, no network access

Troubleshooting

Problem Solution
Scan loads but looks upside down Press X (flip) β€” many trainers export Y-down
Playblast is black Update GPU drivers; the export uses WebCodecs H.264 hardware encoding
.chan import plays too fast/slow Set the timeline fps to the .chan's frame rate before importing
Cleaned SPZ lost view-dependent shading Expected: cleanup/bake rebuilds splats without SH>0 harmonics
Scene edits gone after reopening Bakes and extracted layers aren't in the sidecar β€” export them as .spz/.ply to keep them
Double-click doesn't open files Launch the app once manually β€” associations register on first run
macOS says the app is "damaged" Browser-downloaded zip quarantine β€” use the curl | tar one-liner instead, or run xattr -cr "NEXUS GS Viewer.app" once
Linux: "SUID sandbox helper" error sudo chown root:root chrome-sandbox && sudo chmod 4755 chrome-sandbox (inside the app folder), or launch with --no-sandbox
Linux: MP4 export fails Some distros lack a WebCodecs H.264 encoder β€” export a PNG sequence instead

Roadmap

  • Attenuate/tint shape mode (dim instead of delete)
  • Motion blur (sub-frame accumulation) for playblasts
  • Exposure/gamma viewport grading
  • Signed/notarized macOS builds (removes the quarantine caveat for browser downloads)

Have an idea? Open an issue or ping me on LinkedIn.

Contributing

PRs and issues welcome. If you clean up or previz a shot with NEXUS GS Viewer, I'd love to see it β€” tag me on LinkedIn.

License

Released under the MIT License. Free to use, modify, and ship in commercial work.

Credits

  • Spark by World Labs β€” the WebGL Gaussian Splatting renderer that powers the viewport and real-time edits
  • three.js β€” 3D framework
  • Electron + electron-vite β€” desktop shell
  • mp4-muxer β€” in-process MP4 muxing

Built and maintained by SINAI R&D.

About the author

Patrick Crucke explores the intersection of AI, 3D, and audiovisual production, building tools that bring generative pipelines into the hands of working VFX artists.

If this project saved you time, a ⭐ on the repo goes a long way.


NEXUS GS Viewer. Open source VFX tooling, made with care.

About

Gaussian Splatting viewer and editor for Windows - camera timeline, MP4/alpha-PNG playblasts, Nuke .chan camera round-trip, multi-shape cleanup, brushes and splat selection. Electron + Three.js + Spark.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages