3DGRUT VIS is a high-performance 3D Gaussian Splatting visualization engine tightly integrated with the 3dgrut repository, leveraging ANARI and VisRTX rendering backends. It provides both native C++ interactive and headless viewers, as well as Python bindings and a flexible Polyscope-based interactive viewer.
- Interactive Viewer: High-performance C++ viewer using GLFW and ImGui for real-time 3D navigation and parameter tuning.
- Headless Command Line Viewer: C++ application to render 3D Gaussian scenes to PNG files directly.
- Polyscope Viewer (Python): A unified Python viewer that allows seamless on-the-fly switching between multiple rendering backends (
anari,3dgrt,3dgut). - CUDA-GL Interop: Zero-copy display path on supported devices for maximum performance.
- Python Bindings: Exposes the
GaussianRendererCorethroughpybind11for custom integration.
- CMake >= 3.17
- OptiX SDK (Downloaded automatically if not found locally)
- CUDA Toolkit (Optional, but required for
3dgrt/3dgutbackends and CUDA-GL interop)
You can install the Python package, which automatically builds the C++ core and exposes the Python bindings.
Using uv (recommended):
uv syncOr using pip:
pip install .To include the dependencies for the Polyscope interactive viewer:
pip install .[polyscope]To build the native viewers directly, you can use the provided build scripts:
Linux / macOS:
./build_visualization.shWindows:
.\build_visualization.ps1Alternatively, you can build manually with CMake:
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . --parallelThe Polyscope viewer provides a rich GUI and allows switching rendering backends dynamically:
polyscope-viewer /path/to/scene.ply [--renderer anari|3dgrt|3dgut](Note: 3dgrt and 3dgut backends require the threedgrut repository to be installed).
The native interactive viewer offers maximum performance:
interactive-viewer /path/to/scene.ply [options]Controls:
- LMB drag: Orbit
- RMB drag: Pan
- Scroll: Zoom
- W/S: Dolly forward/backward
- A/D: Strafe left/right
- Q/E: Orbit pitch (up/down)
- G: Toggle GUI
- S: Save screenshot
- Escape: Quit
Render directly to an image file:
gaussian-viewer /path/to/scene.ply [options]Outputs gaussian_viewer.png by default.
src/- Core C++ implementation, containing theGaussianRendererCore,pybind11wrappers, and standalone viewers.gaussian_viewer/- Python package containing thepolyscope_viewerand launcher scripts.CMakeLists.txt- CMake build system configuring ANARI, VisRTX, and OptiX dependencies.pyproject.toml- Python packaging configuration usingscikit-build-core.
