Introduction to Splatviz
Splatviz is an innovative interactive viewer designed to facilitate the display and editing of 3D Gaussian Splatting (3DGS) scenes in real time. Utilizing the versatility of the pyimgui library, splatviz allows users to directly manipulate Gaussian objects in Python right before rendering, opening up broad possibilities for editing and visualizing 3D scenes. This tool provides a robust platform for users to evaluate Python expressions post-rendering, enabling real-time scene debugging and access.
Key Features
- Real-Time Editing: Users can modify 3D Gaussian objects on the fly, enabling endless creative and functional possibilities.
- Multiple Scene Visualization: It supports side-by-side comparison or splitscreen views of multiple scenes.
- Scene Export Options: Users can save edited scenes as renderings, ply files, or even videos showcasing a 360° rotation around the object.
- Live Training Tracking: This newly added feature allows the monitoring of ongoing 3DGS training processes.
Installation and Launching
Installation
-
Cloning the Repository: Begin by cloning the project repository recursively to install required packages.
git clone https://github.com/Florian-Barthel/splatviz.git --recursive
-
Environment Setup: Create and activate a conda environment with:
conda env create -f environment.yml conda activate gs-view
Alternatively, micromamba can also be used:
micromamba env create --file environment.yml --channel-priority flexible -y micromamba activate gs-view
Launch Modes
- Default Mode: Renders standard 3DGS scenes. Use
python run_main.py
or specify a data path. - Attach to Training: Edit and view a running 3DGS training with
--mode=attach
. - Decoder Mode: For rendering 3D GAN-generated human heads, utilize
--mode=decoder
with requisite data paths.
Widgets Functionality
Load Widget
- Allows browsing and filtering of scenes. Supports multiple scene viewing through added scenes and splitscreen functionality.
Edit Widget
- Central to the application, this widget supports real-time code execution for scene editing. Users can include sliders for dynamic editing, and save/load presets for recurring tasks.
Eval Widget
- Aids in debugging by evaluating post-rendering Python code. Variables like gaussian or render can be accessed for insights.
Camera Widget
- Offers control over the camera mode, with options for "Orbit" or "WASD" to facilitate navigation through the 3D space.
Video Widget
- Generates video sequences of a full rotation around the object, though the feature is under development for better usability.
Performance and Other Widgets
- Performance, Render, and Save Widgets offer FPS tracking, resolution settings, and scene saving functionalities, respectively, enhancing user experience and control.
Recent Features and Future Plans
Recent updates include a Training Widget for live statistics and enhanced editing functionalities. Future objectives focus on extending support to OSX, refining video features, and creating tutorials.
Contribution and Community
The project welcomes contributors to enhance its functionality and user design. Users are encouraged to apply black for code formatting.
Citation
Splatviz is part of the ongoing research into 3DGS, and users finding it beneficial are encouraged to cite the related research work, enhancing its academic footprint.
Splatviz represents a state-of-the-art tool in 3D scene visualization and editing, building upon robust libraries like pyimgui and insights from established projects like EG3D. It aims to empower developers and creators in the field with a practical and efficient platform.