lhmd commited on
Commit
77bc72c
·
verified ·
1 Parent(s): 0cf1ca0

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +183 -0
README.md CHANGED
@@ -1,3 +1,186 @@
1
  ---
2
  license: mit
 
 
 
 
 
 
 
 
3
  ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
  license: mit
3
+ pipeline_tag: image-to-3d
4
+ tags:
5
+ - 3d
6
+ - novel-view-synthesis
7
+ - triangle-splatting
8
+ - simulation
9
+ datasets:
10
+ - lhmd/re10k_torch
11
  ---
12
+
13
+ <h1 align="center">TriSplat: Simulation-Ready Feed-Forward 3D Scene Reconstruction</h1>
14
+
15
+ <p align="center">
16
+ <a href="https://lhmd.top/trisplat"><img src="https://img.shields.io/badge/Paper-B31B1B?style=for-the-badge&logo=arxiv&logoColor=white" alt="Paper"></a>
17
+ <a href="https://lhmd.top/trisplat"><img src="https://img.shields.io/badge/Project%20Page-000000?style=for-the-badge&logo=googlechrome&logoColor=white" alt="Project Page"></a>
18
+ <a href="https://github.com/ziplab/TriSplat"><img src="https://img.shields.io/badge/Code-181717?style=for-the-badge&logo=github&logoColor=white" alt="Code"></a>
19
+ <a href="https://huggingface.co/lhmd/TriSplat"><img src="https://img.shields.io/badge/Models-FFD21E?style=for-the-badge&logo=huggingface&logoColor=black" alt="Models"></a>
20
+ </p>
21
+
22
+ <p align="center">
23
+ <a href="https://lhmd.top/">Weijie Wang</a><sup>1,*</sup>
24
+ <a href="https://github.com/puLangMu">Zimu Li</a><sup>1,*</sup>
25
+ <a href="https://chuan-10.github.io/">Jinchuan Shi</a><sup>1</sup>
26
+ <a href="https://steve-zeyu-zhang.github.io/">Zeyu Zhang</a><sup>1</sup>
27
+ <a href="https://botaoye.github.io/">Botao Ye</a><sup>2,3</sup>
28
+ <a href="https://people.inf.ethz.ch/~pomarc/">Marc Pollefeys</a><sup>2,4</sup>
29
+ <a href="https://donydchen.github.io/">Donny Y. Chen</a><sup>5</sup>
30
+ <a href="https://bohanzhuang.github.io/">Bohan Zhuang</a><sup>1</sup>
31
+ </p>
32
+
33
+ <p align="center">
34
+ <sup>1</sup>Zhejiang University
35
+ <sup>2</sup>ETH Zurich
36
+ <sup>3</sup>ETH AI Center
37
+ <sup>4</sup>Microsoft
38
+ <sup>5</sup>Monash University
39
+ </p>
40
+
41
+ <p align="center">
42
+ <img src="https://lhmd.top/trisplat/assets/images/teaser.jpg" alt="TriSplat teaser" width="100%">
43
+ </p>
44
+
45
+ TriSplat is a feed-forward 3D reconstruction model that predicts simulation-ready triangle meshes from sparse, unposed images. Unlike Gaussian-splatting pipelines that require post-hoc mesh extraction, TriSplat directly predicts oriented triangle primitives, camera poses, point maps, and appearance attributes in one forward pass. We train on RealEstate10K and DL3DV, and evaluate zero-shot generalization on ScanNet with RE10K-trained models.
46
+
47
+ ## Method
48
+
49
+ <p align="center">
50
+ <img src="https://lhmd.top/trisplat/assets/figures/web/pipeline2.png" alt="TriSplat pipeline" width="100%">
51
+ </p>
52
+
53
+ Given sparse input views, TriSplat predicts dense local point maps, triangle attributes, camera poses, and optional intrinsics. Point-map geometry anchors triangle orientation through geometry normals, a learned normal refiner, and a monocular-normal bootstrap. A differentiable triangle rasterizer renders RGB, depth, and normals, while mesh export only needs opacity filtering, winding correction, and duplicate-vertex merging.
54
+
55
+ ## Installation
56
+
57
+ Create the environment:
58
+
59
+ ```bash
60
+ conda create -y -n trisplat python=3.10
61
+ conda activate trisplat
62
+ pip install --upgrade pip
63
+ ```
64
+
65
+ Install PyTorch and Python dependencies:
66
+
67
+ ```bash
68
+ pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 \
69
+ --index-url https://download.pytorch.org/whl/cu118
70
+ pip install -r requirements.txt --no-build-isolation
71
+ ```
72
+
73
+ Build CUDA extensions:
74
+
75
+ ```bash
76
+ bash scripts/env/rebuild_extensions.sh
77
+ ```
78
+
79
+ Download initialization weights used by the model:
80
+
81
+ ```bash
82
+ mkdir -p pretrained_weights
83
+ wget -O pretrained_weights/pi3.safetensors \
84
+ https://huggingface.co/yyfz233/Pi3/resolve/main/model.safetensors
85
+ wget -O pretrained_weights/omnidata_dpt_normal_v2.ckpt \
86
+ 'https://zenodo.org/records/10447888/files/omnidata_dpt_normal_v2.ckpt?download=1'
87
+ ```
88
+
89
+ ## Models
90
+
91
+ Download released TriSplat checkpoints from [lhmd/TriSplat](https://huggingface.co/lhmd/TriSplat):
92
+
93
+ ```bash
94
+ mkdir -p checkpoints
95
+ wget -O checkpoints/re10k_trisplat.ckpt \
96
+ https://huggingface.co/lhmd/TriSplat/resolve/main/re10k_trisplat.ckpt
97
+ wget -O checkpoints/dl3dv_trisplat.ckpt \
98
+ https://huggingface.co/lhmd/TriSplat/resolve/main/dl3dv_trisplat.ckpt
99
+ ```
100
+
101
+ ## Datasets
102
+
103
+ Packed `.torch` datasets default to:
104
+
105
+ ```text
106
+ data/re10k
107
+ data/dl3dv
108
+ ```
109
+
110
+ You can also set:
111
+
112
+ ```bash
113
+ export RE10K_ROOT="$PWD/data/re10k"
114
+ export DL3DV_ROOT="$PWD/data/dl3dv"
115
+ ```
116
+
117
+ ## Training
118
+
119
+ Train on RealEstate10K:
120
+
121
+ ```bash
122
+ bash scripts/train/train_re10k.sh --gpus 0,1,2,3,4,5,6,7 --wandb-mode offline
123
+ ```
124
+
125
+ Train on DL3DV:
126
+
127
+ ```bash
128
+ bash scripts/train/train_dl3dv.sh --gpus 0,1,2,3,4,5,6,7 --wandb-mode offline
129
+ ```
130
+
131
+ Extra arguments after `--` are passed to Hydra. Use `--ckpt` to resume or initialize from a checkpoint.
132
+
133
+ ## Evaluation
134
+
135
+ Evaluate and render RealEstate10K meshes:
136
+
137
+ ```bash
138
+ bash scripts/eval/eval_re10k_mesh.sh \
139
+ --ckpt checkpoints/re10k_trisplat.ckpt \
140
+ --data-root "$RE10K_ROOT"
141
+ ```
142
+
143
+ Evaluate and render DL3DV meshes:
144
+
145
+ ```bash
146
+ bash scripts/eval/eval_dl3dv_mesh.sh \
147
+ --ckpt checkpoints/dl3dv_trisplat.ckpt \
148
+ --data-root "$DL3DV_ROOT"
149
+ ```
150
+
151
+
152
+ ## Simulation
153
+
154
+ TriSplat exports ordinary triangle meshes, so the output can be opened directly by common graphics and simulation tools. The evaluation scripts above write per-scene meshes under:
155
+
156
+ ```text
157
+ outputs/<eval_root>/<run_name>/<scene>/mesh/DIRECT_triangle_mesh.ply
158
+ outputs/<eval_root>/<run_name>/<scene>/mesh/DIRECT_triangle_mesh.off
159
+ outputs/<eval_root>/<run_name>/<scene>/mesh/DIRECT_triangle_mesh_post.ply
160
+ outputs/<eval_root>/<run_name>/<scene>/mesh/DIRECT_triangle_mesh_post.off
161
+ ```
162
+
163
+ The `_post` mesh is the default rendering and simulation output. It applies connected-component cleanup to the direct mesh, keeping the largest components and removing small disconnected floaters, unreferenced vertices, and degenerate triangles. For example, after running `scripts/eval/eval_re10k_mesh.sh`, use:
164
+
165
+ ```bash
166
+ ls outputs/re10k_mesh_eval/re10k_mesh_eval/*/mesh/DIRECT_triangle_mesh_post.ply
167
+ ```
168
+
169
+ The exported `_post.ply` mesh is vertex-colored and can be imported into [Blender](https://www.blender.org/), [Open3D](https://www.open3d.org/), [Isaac Sim](https://developer.nvidia.com/isaac/sim), [Unity](https://unity.com/), or [PyBullet](https://pybullet.org/) as a static triangle mesh. For simulation, use the `.ply` mesh for visual geometry and generate a collision mesh in your simulator if needed; for example, simplify or convex-decompose it before rigid-body simulation when the raw mesh is too dense.
170
+
171
+ ## Citation
172
+
173
+ If you find this repository useful, please cite:
174
+
175
+ ```bibtex
176
+ @article{wang2026trisplat,
177
+ title={TriSplat: Simulation-Ready Feed-Forward 3D Scene Reconstruction},
178
+ author={Wang, Weijie and Li, Zimu and Shi, Jinchuan and Zhang, Zeyu and Ye, Botao and Pollefeys, Marc and Chen, Donny Y. and Zhuang, Bohan},
179
+ journal={arXiv preprint},
180
+ year={2026}
181
+ }
182
+ ```
183
+
184
+ ## Acknowledgements
185
+
186
+ This codebase builds on open-source work including [YoNoSplat](https://github.com/justimyhxu/YoNoSplat), [MVSplat](https://github.com/donydchen/mvsplat), [pixelSplat](https://github.com/dcharatan/pixelsplat), [CroCo](https://github.com/naver/croco), [DINOv2](https://github.com/facebookresearch/dinov2), [Omnidata](https://github.com/EPFL-VILAB/omnidata), [3D Gaussian Splatting](https://github.com/graphdeco-inria/gaussian-splatting), and [Triangle Splatting](https://github.com/trianglesplatting/triangle-splatting).