Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Florian-Barthel/gaussian_viewer
Interactive 3D Gaussian Splatting viewer for python
https://github.com/Florian-Barthel/gaussian_viewer
3d-gaussian-splatting interactive python viewer
Last synced: 4 months ago
JSON representation
Interactive 3D Gaussian Splatting viewer for python
- Host: GitHub
- URL: https://github.com/Florian-Barthel/gaussian_viewer
- Owner: Florian-Barthel
- Created: 2024-02-19T13:10:12.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-03-06T16:28:27.000Z (4 months ago)
- Last Synced: 2024-03-07T12:11:00.478Z (4 months ago)
- Topics: 3d-gaussian-splatting, interactive, python, viewer
- Language: Python
- Homepage:
- Size: 32.6 MB
- Stars: 16
- Watchers: 3
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Lists
- awesome-3D-gaussian-splatting - Gaussian Viewer - Loads also Compact3D plys. (Open Source Implementations / Viewers)
README
# Gaussian Viewer
This interactive viewer allows to display 3D Gaussian Splatting objects
stored as .ply files or as compressed objects from
Compact 3D Scene Representation via Self-Organizing Gaussian Grids.
The viewer is fully written in python, which makes development and debugging very simple.
## Install
Clone repository **recursively** in order to install glm from the diff_gaussian_rasterization package.
```
git clone https://github.com/Florian-Barthel/gaussian_viewer --recursive
```Create conda environment:
```
conda env create -f environment.yml
conda activate gs-view
```Launch:
`
python main.py --data_path="path/to/directory/with/gaussian/objects"
`## Current Features
Currently, the viewer is equipped with the following features:
- Edit Widget
- Evaluate Widget
- Video Widget### Edit Widget
The edit widget allows to modify the Gaussian object interactively. The written code
is executed just before rendering the Gaussian object. All existing objects at that
state can be accessed and modified. An **example** looks as follows:````py
mask = torch.linalg.norm(gaussian._scaling, dim=1) < 10
gaussian._xyz = gaussian._xyz[mask, ...]
gaussian._rotation = gaussian._rotation[mask, ...]
gaussian._scaling = gaussian._scaling[mask, ...]
gaussian._opacity = gaussian._opacity[mask, ...]
gaussian._features_dc = gaussian._features_dc[mask, ...]
gaussian._features_rest = gaussian._features_rest[mask, ...]
````
this removes all gaussian splats with a scale greater than 10.You can also create slider variables that can be accessed in the code block with slider.varname. **Example**:
### Evaluate Widget
The evaluate widget can be used to debug the gaussian splatting object. By typing
python code, which is executed after the rendering, you can access any variable
from the rendering context.
### Video Widget
The video widget creates a video sequence of a full rotation around the current object.
Simply define the height of the camera and the rendering resolution. While the video is
rendering, the UI is frozen. A loading screen is shown in the terminal output.## Contribute
You are more than welcome to add further functionality to this interactive viewer!
The main goal is to create an easy-to-use tool that can be applied for debugging and for understanding
3D Gaussian Splatting objects. Possible extensions could be to visualize the model during
the training, visualize the gradients of the gaussian positions or to simulate a densification step.## References
This viewer is inspired by the visualizer from Efficient Geometry-aware 3D Generative Adversarial
Networks (EG3D).Compact 3D Scene Representation via Self-Organizing Gaussian Grids