Oriol Jiménez-Ayguadé, Antonio Agudo
Institut de Robòtica i Informàtica Industrial, CSIC-UPC, Barcelona
This repository contains the official implementation of Deformable Triangle Splatting (DETRIS).
DETRIS augments each triangle primitive with K learnable control points per edge, each parameterized by a single scalar displacement that shifts the boundary inward or outward along the edge normal. This lets a single primitive represent non-convex shapes (crescents, arrows, concavities) while keeping the three base vertices that define its 3D plane. All boundary deformations and per-pixel distance computations are performed in the triangle's barycentric coordinate frame, making the learned shape strictly view-independent. Rendering combines a ray-casting winding-number test, a polynomial smooth-minimum distance field with learnable corner rounding, and a power-law opacity window, all implemented as a custom CUDA rasterizer.
This code builds directly on top of Triangle Splatting, which itself builds on 3D Convex Splatting and 3D Gaussian Splatting.
The code has been tested with Python 3.11 on CUDA 13.0 (PyTorch 2.9) and
CUDA 12.1. To run on CUDA 12.x, set cuda-toolkit to your version and a
matching PyTorch build in requirements.yaml (e.g. for CUDA 12.1:
cuda-toolkit=12.1, torch==2.5.1+cu121, torchvision==0.20.1+cu121).
git clone <repo-url> deformable-triangle-splatting
cd deformable-triangle-splattingWe suggest using a virtual environment for the dependencies. This creates an
environment named detris (Python 3.11, CUDA 13.0, PyTorch 2.9):
micromamba create -f requirements.yaml
micromamba activate detris(If you use conda, replace micromamba with conda.)
Then compile the custom CUDA rasterizer and the simple-knn helper:
bash compile.sh
cd submodules/simple-knn
pip install .
cd ../..Pretrained models for all 11 evaluated scenes (Mip-NeRF 360 ×9, Tanks & Temples ×2), as final 30k-iteration checkpoints, are available on the Hugging Face Hub. To skip training and render a scene directly:
# requires: pip install huggingface_hub
hf download Orioljim/detris-models detris_models.zip --local-dir .
unzip detris_models.zip
python render.py -m main_results/mipnerf360/gardenTo train on indoor scenes:
python train.py -s <path_to_scene> -m <output_model_path> --evalFor outdoor scenes, add the --outdoor flag:
python train.py -s <path_to_scene> -m <output_model_path> --outdoor --evalThe number of control points per edge K is set with --n_subdivisions (default 3):
python train.py -s <path_to_scene> -m <output_model_path> --eval --n_subdivisions 3python render.py -m <path_to_model>python metrics.py -m <path_to_model>python create_video.py -m <path_to_model>python full_eval.py --output_path <output_path> -m360 <path_to_MipNeRF360> -tat <path_to_T&T>Note on corner rounding (delta). The learnable corner-rounding smoothing (delta) is disabled by default in
train.py/render.pyto provide a faster variant: the majority of the perceptual gain is driven by the per-edge control points, so turning delta off yields a substantial speed-up at only a small quality cost. The paper's results were produced with delta enabled, and thefull_eval.pycommand above already runs with delta on. To enable it in a standalone run, pass--enable_deltato bothtrain.pyandrender.py.
If you find our work useful, please cite:
@inproceedings{JimenezAyguade2026Deformable,
title = {Deformable Triangle Splatting: Flexible Primitives for Real-Time Radiance Field Rendering},
author = {Jiménez-Ayguadé, Oriol and Agudo, Antonio},
booktitle = {Proceedings of the European Conference on Computer Vision (ECCV)},
year = {2026},
}As this work builds on Triangle Splatting and 3D Convex Splatting, please also cite them:
@article{Held2025Triangle,
title = {Triangle Splatting for Real-Time Radiance Field Rendering},
author = {Held, Jan and Vandeghen, Renaud and Deliege, Adrien and Hamdi, Abdullah and Cioppa, Anthony and Giancola, Silvio and Vedaldi, Andrea and Ghanem, Bernard and Tagliasacchi, Andrea and Van Droogenbroeck, Marc},
journal = {arXiv},
year = {2025},
}
@inproceedings{Held2025Convex,
title = {3D Convex Splatting: Radiance Field Rendering with 3D Smooth Convexes},
author = {Held, Jan and Vandeghen, Renaud and Hamdi, Abdullah and Deliege, Adrien and Cioppa, Anthony and Giancola, Silvio and Vedaldi, Andrea and Ghanem, Bernard and Van Droogenbroeck, Marc},
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
year = {2025},
}This project builds upon Triangle Splatting, 3D Convex Splatting and 3D Gaussian Splatting. The modifications are released under the terms in LICENSE.md; the original Gaussian Splatting code remains under the Inria/GRAPHDECO research license in LICENSE_GS.md.
This implementation is built on top of Triangle Splatting and 3D Gaussian Splatting. We thank the authors for releasing their code.