# UTrice **Repository Path**: yejun668/UTrice ## Basic Information - **Project Name**: UTrice - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-20 - **Last Updated**: 2026-01-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

UTrice

Paper


Abstract Image

This repository is the official implementations of UTrice: Unifying Primitives in Differentiable Ray Tracing and Rasterization via Triangles for Particle-Based 3D Scenes. We propose a differentiable triangle-based ray tracing pipeline that treats triangles as primitives without proxy geometry, achieving higher rendering quality while maintaining real-time performance. It also directly renders triangles optimized by Triangle Splatting, unifying the primitives used in novel-view-synthesis.
Abstract Image
## Requirements - This project has been built and tested on Ubuntu 22.04 with Python 3.11 and CUDA 12.6. - To reproduce our results, we recommend a GPU with 24GB VRAM and Ray Tracing (RT) Cores. We tested on an RTX 4500 Ada and RTX 6000 Ada. ## Installation Clone this repository with submodules: ```bash git clone --recursive https://github.com/waizui/UTrice.git cd UTrice ``` We use Conda to manage the environments. Please install Conda in advance, then execute the following commands to create and activate an environment. ```bash conda env create -f environment.yaml conda activate utrice ``` Then install these two modules to finish the installation. ```bash pip install submodules/simple-knn --no-build-isolation pip install submodules/diff-triangle-tracer --no-build-isolation ``` ## Training To train our model, use the following command: ```bash python train.py -s -m --eval ``` Add **--outdoor** to train on outdoor scenes: ```bash python train.py -s -m --outdoor --eval ``` ## Rendering To render a scene, use: ```bash python render.py -m ``` ## Evaluation To evaluate the model, use: ```bash python metrics.py -m ``` ## Reproduce our results We provide a convinent script to reproduce the results of our paper, to run this scripts, please put all scenes inside a sibiling directory of this project and rename it to **datasets**. It should look like: ```bash / ├─ datasets/ │ ├─ bicycle/ │ ├─ garden/ │ └─ ... └─ / ``` Then, run following command: ```bash python eval_all.py ``` The results will be saved in the **UTrice/output** directory. ## Datasets The MipNeRF360 scenes are hosted by the paper authors [here](https://jonbarron.info/mipnerf360/). You can find SfM datasets for Tanks&Temples and Deep Blending [here](https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/datasets/input/tandt_db.zip). ## Render Effects We provide examples of ray tracing effects using --render_mode: dof, reflect, refract, envlight. ```bash python render.py -m --render_mode ```
## Citation ```bibtex @article{liu2025utrice, title = {UTrice: Unifying Primitives in Differentiable Ray Tracing and Rasterization via Triangles for Particle-Based 3D Scenes}, author = {Changhe Liu and Ehsan Javanmardi and Naren Bao and Alex Orsholits and Manabu Tsukada}, journal = {arXiv}, year = {2025}, } ``` ```bibtex @misc{liu2025utriceunifyingprimitivesdifferentiable, title={UTrice: Unifying Primitives in Differentiable Ray Tracing and Rasterization via Triangles for Particle-Based 3D Scenes}, author={Changhe Liu and Ehsan Javanmardi and Naren Bao and Alex Orsholits and Manabu Tsukada}, year={2025}, eprint={2512.04421}, archivePrefix={arXiv}, primaryClass={cs.CV}, url={https://arxiv.org/abs/2512.04421}, } ```