File size: 8,442 Bytes
5619097 ec5bb17 d6ba9bb 5619097 605bf4f d6ba9bb 605bf4f 5619097 d6ba9bb 31f6f71 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 | ---
title: DVD Image
emoji: π§
colorFrom: blue
colorTo: green
sdk: gradio
sdk_version: 5.34.2
app_file: app_dvd_image.py
pinned: false
license: mit
models:
- Zhengrui/dvd
- microsoft/TRELLIS-image-large
---
# DVD: Discrete Voxel Diffusion for 3D Generation and Editing
<a href="https://arxiv.org/abs/2605.07971"><img src="https://img.shields.io/badge/Paper-Arxiv-b31b1b.svg" alt="Paper"></a>
<a href="https://huggingface.co/Zhengrui/dvd"><img src="https://img.shields.io/badge/Hugging%20Face-Model-yellow" alt="Hugging Face"></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-green" alt="License"></a>
**TL;DR**: A discrete diffusion based pipeline for generating, assessing and editing voxels, without thresholding artifacts.

DVD provides a integrated pipeline for generating, assessing and editing the sparse voxels. The generated voxels can be used as anchors for [SLAT]((https://github.com/microsoft/TRELLIS)) 3D generation pipelines. The pipeline is intentionally split into two stages:
- DVD generates or edits a pure `64^3` voxel grid.
- We leverage [TRELLIS](https://github.com/microsoft/TRELLIS) stage 2 to produce the final 3D asset formats, including mesh and 3D Gaussian outputs.
This repository supports image-conditioned generation, text-conditioned
generation, image-conditioned voxel editing, text-conditioned voxel editing,
command-line examples, Python APIs, and local Gradio demos.

## π οΈ Installation
Install dependencies required by [TRELLIS](https://github.com/microsoft/TRELLIS).
Install [pytorch3d](https://pytorch3d.org/).
For the default fast path used by the examples:
```bash
export SPCONV_ALGO=native
export ATTN_BACKEND=flash_attn
```
## π¦ Pretrained Models
Download the DVD checkpoints and place them under `ckpts/`, or load them from a
Hugging Face model repository with `from_pretrained`.
| Model | Link | Expected files |
| --- | --- | --- |
| DVD image generation | https://huggingface.co/Zhengrui/dvd | `dvd_img.json`, `dvd_img.safetensors` |
| DVD image editing | https://huggingface.co/Zhengrui/dvd | `dvd_img_BSP_ft.json`, `dvd_img_BSP_ft.safetensors` |
| DVD text generation | https://huggingface.co/Zhengrui/dvd | `dvd_text.json`, `dvd_text.safetensors` |
| DVD text editing | https://huggingface.co/Zhengrui/dvd | `dvd_text_BSP_ft.json`, `dvd_text_BSP_ft.safetensors` |
| TRELLIS image stage 2 | https://huggingface.co/microsoft/TRELLIS-image-large | loaded by `TrellisImageTo3DPipeline` |
| TRELLIS text stage 2 | https://huggingface.co/microsoft/TRELLIS-text-large | loaded by `TrellisTextTo3DPipeline` |
The DVD pipelines expect the default filenames above.
## π Quick Start
### Python API
```python
from PIL import Image
from dvd import (
DVDImageToVoxelPipeline,
TrellisImageTo3DPipeline,
export_cubified_voxels,
run_image_stage2_from_dvd_voxels,
)
from trellis.utils import postprocessing_utils
image = Image.open("assets/example_image/T.png")
# If you have the weights locally
# dvd = DVDImageToVoxelPipeline.from_files(
# "ckpts/dvd_img.json",
# "ckpts/dvd_img.safetensors",
# device="cuda",
# )
# Or load with from_pretrained
dvd = DVDImageToVoxelPipeline.from_pretrained('Zhengrui/dvd', variant="base", device="cuda")
voxels = dvd.sample_voxels(image, seed=42, steps=256)
export_cubified_voxels(voxels, "example_results/T_dvd_voxels.glb")
trellis = TrellisImageTo3DPipeline.from_pretrained("microsoft/TRELLIS-image-large")
trellis.cuda()
outputs = run_image_stage2_from_dvd_voxels(trellis, image, voxels, seed=42)
glb = postprocessing_utils.to_glb(outputs["gaussian"][0], outputs["mesh"][0])
glb.export("example_results/T.glb")
```
For Hugging Face loading:
```python
from dvd import DVDImageToVoxelPipeline, DVDTextToVoxelPipeline
repo_id = "Zhengrui/dvd"
image_dvd = DVDImageToVoxelPipeline.from_pretrained(repo_id, variant="base", device="cuda")
image_edit_dvd = DVDImageToVoxelPipeline.from_pretrained(repo_id, variant="bsp", device="cuda")
text_dvd = DVDTextToVoxelPipeline.from_pretrained(repo_id, variant="base", device="cuda")
text_edit_dvd = DVDTextToVoxelPipeline.from_pretrained(repo_id, variant="bsp", device="cuda")
```
### Command-Line Examples
Image-conditioned generation:
```bash
python examples_dvd_image_generation_api.py \
--image assets/example_image/T.png \
--dvd-config ckpts/dvd_img.json \
--dvd-checkpoint ckpts/dvd_img.safetensors \
--output-dir example_results
```
Text-conditioned generation:
```bash
python examples_dvd_text_generation_api.py \
--prompt "A small helper robot with a round body, sky-blue paint, screen face, and tiny tool arms." \
--name robot \
--dvd-config ckpts/dvd_text.json \
--dvd-checkpoint ckpts/dvd_text.safetensors \
--output-dir example_results
```
For editing, we provide a minima example in `example_edit.ipynb`. We recommend to launch apps for straightforward editing, check **Gradio Demos**.
Image-conditioned editing:
```bash
python examples_dvd_image_editing_api.py \
--target-image assets/example_image_edit/flower_rm.png \
--voxel-coords assets/example_voxel_edit/voxel64_typical_building_mushroom_dis.npy \
--dvd-config ckpts/dvd_img_BSP_ft.json \
--dvd-checkpoint ckpts/dvd_img_BSP_ft.safetensors \
--output-dir example_results
```
Text-conditioned editing:
```bash
python examples_dvd_text_editing_api.py \
--prompt "A mushroom house with a large wizard hat roof." \
--voxel-coords assets/example_voxel_edit/voxel64_typical_building_mushroom_dis.npy \
--dvd-config ckpts/dvd_text_BSP_ft.json \
--dvd-checkpoint ckpts/dvd_text_BSP_ft.safetensors \
--output-dir example_results \
--edit-y 28 64 \
--edit-z 0 64
```
Add `--skip-stage2` in the text examples if you only want to save the DVD voxel
`.npy` and cubified voxel `.glb`.
### Gradio Demos
Image generation and editing:
```bash
python app_dvd_image.py
```
Text generation and editing:
```bash
python app_dvd_text.py
```
For Hugging Face Spaces or local `from_pretrained` loading, set:
```bash
export DVD_MODEL_REPO=Zhengrui/dvd
```
## β Voxel Convention
DVD stores and saves voxels in DVD convention:
```text
samples: [B, D, H, W]
coords: [N, 4] as [batch, x, y, z]
```
Saved `.npy` coordinate files omit the batch dimension and can be loaded back
with `as_voxel_output(coords, resolution=64)`. The helper
`run_image_stage2_from_dvd_voxels` and `run_text_stage2_from_dvd_voxels`
convert DVD voxel coordinates to TRELLIS coordinates internally.
## βοΈ Acknowledgements and Third-party Licenses
This project builds heavily on [TRELLIS](https://github.com/microsoft/TRELLIS) and [DUO](https://s-sahoo.com/duo/). We sincerely thank the authors of TRELLIS and DUO for releasing their excellent research and code.
The original code in this repository is released under the **[MIT License](LICENSE)**, unless otherwise stated. Portions of this project are adapted from or depend on third-party projects, which remain under their respective licenses:
* [**TRELLIS**](https://github.com/microsoft/TRELLIS): TRELLIS models and the majority of its code are released under the MIT License. Some submodules and dependencies may have separate license terms.
* [**DUO**](https://github.com/s-sahoo/duo): DUO is released under the Apache License 2.0. Any code adapted from DUO retains its original license notices.
* [**nvdiffrast**](https://github.com/NVlabs/nvdiffrast): Utilized for rendering generated 3D assets. This package is governed by its own [License](https://github.com/NVlabs/nvdiffrast/blob/main/LICENSE.txt).
* [**nvdiffrec**](https://github.com/NVlabs/nvdiffrec): Implements the split-sum renderer for PBR materials. This package is governed by its own [License](https://github.com/NVlabs/nvdiffrec/blob/main/LICENSE.txt).
Please refer to [`LICENSE`](LICENSE), [`NOTICE`](NOTICE), and/or [`THIRD_PARTY_LICENSES/`](THIRD_PARTY_LICENSES/) for details.
## π Citation
If you use this repository, please cite our project once the paper is available:
```bibtex
@misc{xiang2026dvddiscretevoxeldiffusion,
title={DVD: Discrete Voxel Diffusion for 3D Generation and Editing},
author={Zhengrui Xiang and Jiaqi Wu and Fupeng Sun and Heliang Zheng and Yingzhen Li},
year={2026},
eprint={2605.07971},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2605.07971},
}
```
|