A CLI and visualization tool for smoothly interpolating between two or more Gaussian Splatting Models.
It builds intelligent point correspondences and generates intermediate morphs that transition seamlessly.
Includes both command-line and real-time interactive visualizer modes.
- Interpolate between multiple Gaussian Splatting models
- Automatic one-to-one point correspondences based on spatial and color similarity
- Spherical linear interpolation (SLERP) for rotations
- Optional real-time visualizer with interactive morphing slider
- GPU-accelerated (PyTorch) processing
- Save interpolated frames as
.plyfiles for animation sequences
Clone the repository and install the base dependencies:
git clone https://github.com/feel3x/Gaussian_Splat_Morpher.git
cd Gaussian_Splat_Morpher
pip install -r requirements.txtIf you want to use the visualizer, install the extra dependencies:
pip install -r requirements_visualizer.txtYou can interpolate between .ply Gaussian Splat models directly from the command line.
python GaussianInterpolator.py -d ./models/ -o ./output/This searches the ./models/ folder for .ply files and generates intermediate models in ./output/.
python GaussianInterpolator.py -m model1.ply model2.ply model3.ply -o ./output/| Option | Description | Default |
|---|---|---|
--models_to_create |
Number of intermediate models per pair | 10 |
--direct_interpolation_value |
Create a single interpolated model between two specific models (e.g. 1.3) |
None |
--spatial_weight |
Weight for spatial distance during correspondence | 0.7 |
--color_weight |
Weight for color difference during correspondence | 0.3 |
--distance_threshold |
Max allowed distance for point matching | None |
--batch_size |
Size of point batches for matching (reduce for lower VRAM) | 512 |
--recenter_models |
Recenter all models before interpolation | False |
--normalize_scales |
Normalize scales of models | False |
python GaussianInterpolator.py -m bunny_A.ply bunny_B.ply -o ./morph_output --models_to_create 20python GaussianInterpolator.py -m face_1.ply face_2.ply -o ./output --direct_interpolation_value 0.4This saves one .ply at 40% interpolation between the first and second models.
To explore morphs interactively:
python visualizer.py -m model1.ply model2.plyThis launches a GUI with a slider that lets you morph smoothly between loaded Gaussian Splat models in real time.
(Visualizer requires extra dependencies from requirements_visualizer.txt.)
- Loads two or more Gaussian Splat models (
.plyformat) - Builds point correspondences between consecutive models
- Interpolates:
- Positions, features, scales, and opacities (linearly)
- Rotations using SLERP
- Handles unmatched points via fade-in/out blending
- Outputs intermediate
.plymodels or visualizes them in real time
This project is released under the MIT License.
See the LICENSE file for details.
Author: Felix Hirt
Copyright © 2025
This project builds upon Gaussian Splatting concepts.
The visualizer uses Nerfstudio's gSplat rasterizer: GitHub
Enjoy morphing! 🧩
