Image-to-3D
Trellis
Safetensors
localmesh-engine
mesh
gltf
multi-view
3d-generation
Qtn-Cls commited on
Commit
76f8a64
·
verified ·
1 Parent(s): 4948f4e

model card

Browse files
Files changed (1) hide show
  1. README.md +181 -3
README.md CHANGED
@@ -1,3 +1,181 @@
1
- ---
2
- license: apache-2.0
3
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ pipeline_tag: image-to-3d
4
+ tags:
5
+ - localmesh-engine
6
+ - image-to-3d
7
+ - mesh
8
+ - gltf
9
+ - trellis
10
+ - multi-view
11
+ - 3d-generation
12
+ base_model: TencentARC/Pixal3D
13
+ base_model_relation: quantized
14
+ ---
15
+
16
+ ![LocalMesh Engine](https://raw.githubusercontent.com/Quentincls/localmesh-engine/main/assets/banner.png)
17
+
18
+ # LocalMesh Engine, multi-view weights
19
+
20
+ LocalMesh Engine turns one photo, or four sides of the same subject, into a
21
+ textured `.glb`. It runs on an 8 GB NVIDIA card. The code is Apache-2.0 and
22
+ lives on [GitHub](https://github.com/Quentincls/localmesh-engine). The project
23
+ page is [local-mesh.com/localmesh-engine](https://local-mesh.com/localmesh-engine/).
24
+
25
+ TRELLIS.2 works from a single image. This repository holds the weights of the
26
+ four view path: the three fp8 conversions of the Pixal3D multi-view models,
27
+ and the field network that recovers detail between image tokens. The three
28
+ conversions exist nowhere else. Everything else the engine needs comes from
29
+ upstream repositories and is listed below.
30
+
31
+ ## What is in this repository
32
+
33
+ | File | Size | What it does | Source |
34
+ |---|---|---|---|
35
+ | `structure_mv_fp8.safetensors` + `.json` | 1.39 GB | Fuses the four encoded views into a sparse volume of cells. Each view is projected onto the shared grid by its own camera. | fp8 conversion of `ckpts/ss_flow_img_dit_1_3B_64_bf16_mv.safetensors`, TencentARC/Pixal3D |
36
+ | `forme_512_mv_fp8.safetensors` + `.json` | 1.44 GB | First shape pass, on the grid inherited from the structure. | fp8 conversion of `ckpts/slat_flow_img2shape_dit_1_3B_512_bf16_mv.safetensors`, TencentARC/Pixal3D |
37
+ | `forme_1024_mv_fp8.safetensors` + `.json` | 1.44 GB | Second shape pass. The TRELLIS.2 shape decoder turns its latent into the mesh. | fp8 conversion of `ckpts/slat_flow_img2shape_dit_1_3B_1024_bf16_mv.safetensors`, TencentARC/Pixal3D |
38
+ | `champ.safetensors` | 2.7 MB | NAF field network. Returns a 512 by 512 query map, which fills the detail the token map loses: the token map is sixteen times coarser than the photo. | valeoai/NAF, official checkpoint, tensors unchanged |
39
+
40
+ 4.28 GB in total, seven files. Keep the three `.json` descriptors next to their
41
+ `.safetensors`: the engine builds each flow model on the `meta` device from that
42
+ descriptor, then loads the tensors in place, so the weights are never held
43
+ twice. The descriptors declare `dtype: float8_e4m3fn`.
44
+
45
+ The four view path serves the `draft`, `standard` and `high` tiers. The
46
+ multi-view weights exist at 512 and 1024 only, so `max` falls back to the
47
+ earlier way of blending the views rather than shipping a `standard` shape under
48
+ another name.
49
+
50
+ ## What is not in this repository
51
+
52
+ | Weights | Where | Licence | Note |
53
+ |---|---|---|---|
54
+ | TRELLIS.2-4B, fp8 | https://huggingface.co/visualbruno/TRELLIS.2-4B-FP8 | MIT | 8.1 GB. Texture on both paths, the single photo path, and the shape decoder the four view path ends on. Required either way. |
55
+ | TRELLIS-image-large, structure decoder | https://huggingface.co/microsoft/TRELLIS-image-large | MIT | Two files, `ss_dec_conv3d_16l8_fp16.json` and `.safetensors`. |
56
+ | DINOv3 ViT-L/16 | https://huggingface.co/facebook/dinov3-vitl16-pretrain-lvd1689m | DINOv3 License, Meta | Image encoder, required on both paths. Access is gated and approved by hand, so ask for it first. |
57
+ | BiRefNet_HR | https://huggingface.co/ZhengPeng7/BiRefNet_HR | MIT | Cutout. The engine fetches this one from the Hub on the first generation if the cache is empty, and loads it with `trust_remote_code=True`, so that first run executes code from the Hub. |
58
+ | DA3-BASE | https://huggingface.co/depth-anything/DA3-BASE | Apache-2.0 | `model.safetensors` (541 MB) and `config.json`, plus the `depth_anything_3` source tree beside them: 544 MB in place. Measures the azimuth of each shot and which side each profile shows. The engine runs without it, but it then guesses which side each profile is on, and says so in its result. A wrong guess puts a face at the front and at the back. |
59
+
60
+ ## Using them
61
+
62
+ Set `LOCALMESH_ROOT` to the folder that holds `models/`, then:
63
+
64
+ ```bash
65
+ pip install -U huggingface_hub
66
+ hf download Qtn-Cls/LocalMeshEngine --local-dir "$LOCALMESH_ROOT/models/multivue"
67
+ ```
68
+
69
+ This repository is flat, so the seven files land exactly where the engine looks
70
+ for them. There is nothing to move afterwards.
71
+
72
+ The layout the engine reads:
73
+
74
+ ```
75
+ <LOCALMESH_ROOT>/models/
76
+ TRELLIS.2-4B/ pipeline.json (or pipeline_fp8.json), ckpts_fp8/
77
+ microsoft/TRELLIS-image-large/ckpts/ ss_dec_conv3d_16l8_fp16.json + .safetensors
78
+ facebook/dinov3-vitl16-pretrain-lvd1689m/
79
+ multivue/ this repository
80
+ multivue/cameras/ DA3-BASE, model.safetensors + config.json
81
+ hf/ Hugging Face cache (HF_HOME), where BiRefNet_HR lands
82
+ ```
83
+
84
+ Then, from the four sides of one subject:
85
+
86
+ ```bash
87
+ python -m localmesh_engine face.png --droite right.png --gauche left.png --dos back.png --vers out/
88
+ ```
89
+
90
+ `--palier` picks the tier: `draft`, `standard`, `high` or `max`, written
91
+ Draft, Standard, Detailed and Extreme where these pages spell them out.
92
+ `--graine` sets the seed, `--vers` the output folder. The command assumes the package is installed.
93
+ The four view path also needs `natten`. Installation, including the three CUDA
94
+ extensions that are not on PyPI, is written up in `docs/INSTALL.md` in the
95
+ GitHub repository; the four tiers, frozen, are in `docs/RECIPES.md`.
96
+
97
+ ## Results
98
+
99
+ ![Four views to one .glb](https://raw.githubusercontent.com/Quentincls/localmesh-engine/main/assets/four-views.png)
100
+
101
+ ![Gallery](https://raw.githubusercontent.com/Quentincls/localmesh-engine/main/assets/gallery.png)
102
+
103
+ ![Turntable](https://raw.githubusercontent.com/Quentincls/localmesh-engine/main/assets/turntable.gif)
104
+
105
+ Six subjects, four photos each, `high` tier, RTX 4060 Laptop 8 GB: samurai on a
106
+ base, crowned stone head, sword in the stone, motorcycle, cassette with a clear
107
+ shell, traffic light.
108
+
109
+ | Tier | Four views, measured over the six subjects |
110
+ |---|---|
111
+ | Standard, `standard` | 6 min 30 to 8 min 30 |
112
+ | Detailed, `high` | 9 min 20 to 13 min |
113
+
114
+ Texture accounts for about 60 % of that time.
115
+
116
+ ## The conversion
117
+
118
+ The three flow models start from the official `*_mv` weights of
119
+ TencentARC/Pixal3D. Their tensors are stored in float32, despite the `bf16` in
120
+ their filenames. The transformer blocks are cast to `float8_e4m3fn`, and the
121
+ descriptor beside each file records that dtype, so the engine builds the model
122
+ in fp8 rather than casting after the fact. Of each model, 480 tensors are
123
+ converted; the input and output layers, the norms and modulations, and the
124
+ structure model's complex rotary table are left as they were.
125
+
126
+ Measured against the source: RMSE of 0.025 to 0.026 on the weights, and 0.027
127
+ on a projection probe.
128
+
129
+ `champ.safetensors` is not converted. It carries the tensors of the official
130
+ valeoai/NAF checkpoint, `naf_release.pth`, unchanged, re-serialised to
131
+ safetensors. The file records the source URL and its SHA-256 in its own
132
+ metadata.
133
+
134
+ ## Licences and attribution
135
+
136
+ The `license` field above is the repository tag. It is Apache-2.0, the licence
137
+ of the engine code and of this card. The files themselves keep the licence of
138
+ their own source:
139
+
140
+ - The three fp8 conversions derive from **TencentARC/Pixal3D**, MIT License,
141
+ Copyright (c) 2026 Tencent. Code: https://github.com/TencentARC/Pixal3D,
142
+ weights: https://huggingface.co/TencentARC/Pixal3D
143
+ - `champ.safetensors` comes from **valeoai/NAF**, Apache-2.0,
144
+ https://github.com/valeoai/NAF
145
+
146
+ The engine also builds on:
147
+
148
+ - **TRELLIS.2**, Microsoft, MIT License, https://github.com/microsoft/TRELLIS.2
149
+ - **ComfyUI-Trellis2**, visualbruno, MIT License, for the ported multi-view path
150
+ and the fp8 loading, https://github.com/visualbruno/ComfyUI-Trellis2
151
+ - **Depth Anything 3**, Apache-2.0, for the camera measurement,
152
+ https://github.com/ByteDance-Seed/depth-anything-3
153
+ - **BiRefNet**, MIT License, for the cutout,
154
+ https://github.com/ZhengPeng7/BiRefNet
155
+
156
+ Built with DINOv3. DINOv3 is the image encoder on both paths. Its weights are
157
+ not redistributed here: request them from Meta, and ship a copy of the DINOv3
158
+ License Agreement with any redistribution of your own.
159
+
160
+ ## Citing
161
+
162
+ ```bibtex
163
+ @software{colus2026localmeshengine,
164
+ author = {Colus, Quentin},
165
+ title = {LocalMesh Engine},
166
+ year = {2026},
167
+ version = {1.0.0},
168
+ license = {Apache-2.0},
169
+ url = {https://github.com/Quentincls/localmesh-engine}
170
+ }
171
+ ```
172
+
173
+ The upstream work these weights rest on: TRELLIS.2 (Microsoft,
174
+ arXiv:2512.14692), Pixal3D (TencentARC, arXiv:2605.10922), NAF (valeoai),
175
+ DINOv3 (Meta), Depth Anything 3 (arXiv:2511.10647).
176
+
177
+ ## Code
178
+
179
+ The engine is at **https://github.com/Quentincls/localmesh-engine**. Recipes,
180
+ installation, measurements and the provenance of every vendored file are there.
181
+ Open issues there, not here.