SplatCraft is a Maya-based toolkit for creating, importing, editing, and visualizing 3D Gaussian Splatting (3DGS) scenes. Upload a 2D image and automatically generate a 3D Gaussian Splat model inside Maya, then author complex multi-object scenes with real-time WebGL visualization.
- Upload an image in the Maya UI
- Background removal (optional)
- Generates a
.plyGaussian splat model using Splatter-Image - Automatically imports it into the Maya scene
- Multi-object scene management – Manage multiple 3DGS objects simultaneously
- Maya viewport proxy – LOD-controlled point cloud visualization (crash-safe)
- Transform and organize – Move, rotate, scale, duplicate splats like normal Maya objects
- Real-time synchronization – Object transforms automatically sync with WebGL viewer
- Automatic deletion detection – Remove objects from Maya, they disappear from viewer instantly
- Export edited scenes back to
.ply
- Multi-object rendering – View entire scene with all 3DGS objects simultaneously
- Bidirectional synchronization:
- WebGL → Maya: Camera movements update Maya viewport in real-time
- Maya → WebGL: Object transforms sync automatically (100ms polling)
- Interactive navigation – Manual camera controls (WASD/ZX movement, mouse rotation, scroll zoom)
- Visual aids – Toggle XZ ground plane grid, XYZ reference axes, and depth rendering modes
- Integrated controls – All features accessible via in-viewer button panel
- Reset view – Instantly return to initial camera position
Here's a quick preview of the full workflow — upload an image → generate 3D Gaussian Splats → auto-import into Maya → view/edit in real-time WebGL viewer.
SplatCraft/
├── maya_plugin/ # Main Maya authoring plugin
│ ├── ui/ # Qt-based Maya UI panels
│ │ ├── inference_panel.py # Image → 3DGS UI + progress bar
│ │ └── ...
│ ├── webgl_viewer/ # WebGL Gaussian viewer (embedded in Maya)
│ │ ├── gaussian_viewer.html # Main HTML viewer interface
│ │ ├── gaussian_renderer.js # WebGL rendering engine (multi-object)
│ │ └── ...
│ ├── splatcraft_node.py # Custom Maya node for 3DGS data
│ ├── splatcraft_plugin.py # Maya plugin loader
│ ├── import_gaussians.py # PLY importer + scene loader
│ ├── maya_webgl_panel.py # Embeds WebGL into Maya dockable panel
│ │ # Handles multi-object sync & deletion detection
│ ├── splatter_subprocess.py # Spawns backend inference in Conda
│ ├── load_splatcraft.py # Plugin initialization helper
│ └── start_clean.py # Quick startup script (Windows + WSL)
└── splatter-image/ # Backend: image → 3D Gaussian Splats
| Component | Requirement |
|---|---|
| OS | Windows 10/11 with WSL Ubuntu or native Linux |
| GPU | NVIDIA GPU with CUDA 12.x (for splatter-image) |
| Maya | Autodesk Maya 2022–2025 (Python 3.9–3.10) |
| Python | Maya-side: Python 3.9 / Backend: Python 3.10 |
| Backend | Conda env with PyTorch + CUDA |
| Viewer | PySide2 or PySide6 + WebGL-enabled Qt |
- Autodesk Maya
- WSL Ubuntu (if on Windows)
wsl --install -d Ubuntu
- Conda for backend
- NVIDIA CUDA drivers (Windows or WSL)
- PySide2 / PySide6 available in Maya's Python
One-line command (Windows + WSL):
exec(open(r'\\wsl$\Ubuntu\root\SplatMayaTool\maya_plugin\start_clean.py').read())Or step-by-step:
# 1. Add plugin to path
import sys
sys.path.insert(0, r'/path/to/SplatMayaTool/maya_plugin')
# 2. Load plugin
import load_splatcraft
load_splatcraft.load_plugin()
# 3. Open inference UI
from ui.inference_panel import show_inference_panel
show_inference_panel(conda_env='splatter-image')- Launch Maya and run the quick start command
- In the inference panel:
- Click "Browse Image..." to select an input image
- (Optional) Enable "Remove Background" for cleaner results
- Click "Generate 3D Gaussian Splat"
- The generated
.plyfile automatically imports into Maya - WebGL viewer opens automatically showing the full-resolution Gaussian splat
Import multiple objects into your scene:
import import_gaussians
# Import multiple PLY files
node1, _ = import_gaussians.import_gaussian_scene('/path/to/object1.ply')
node2, _ = import_gaussians.import_gaussian_scene('/path/to/object2.ply')
node3, _ = import_gaussians.import_gaussian_scene('/path/to/object3.ply')Scene management:
- WebGL viewer displays all objects simultaneously
- Transform objects in Maya → Changes sync to WebGL in real-time
- Delete objects in Maya → They disappear from WebGL automatically
- Navigate in WebGL → Maya camera follows your movements
- Info panel shows:
Objects: 3 | Gaussians: 500,000
| Button | Function |
|---|---|
| Manual Control | Toggle manual camera navigation (default: ON) |
| Grid | Show/hide XZ ground plane grid and XYZ reference axes |
| Reset View | Return camera to initial position |
| Camera Sync | Toggle WebGL → Maya camera synchronization (default: ON) |
| Object Sync | Toggle Maya → WebGL object transform sync (default: ON) |
| Input | Action |
|---|---|
| Mouse Drag | Rotate camera (orbit around target) |
| Mouse Wheel | Zoom in/out |
| W / A / S / D | Move forward / left / back / right |
| Z / X | Move up / down |
| O | Toggle depth write (solid vs. alpha-blended rendering) |
- Objects: 3DGS object count in scene
- Gaussians: Total splat count across all objects
- FPS: Rendering frame rate
- Camera: Current mode (Manual / Synced)
SplatCraft uses the Splatter Image model as its core backend for single-image to 3D Gaussian Splat (3DGS) generation.
This feed-forward network enables fast, one-shot reconstruction of 3D splats directly from a single RGB input, allowing seamless integration with the Maya authoring pipeline.
See individual component licenses in their respective directories.
