Sprint3D turns one image into a textured 3D mesh (GLB, about 1M faces, 4096² texture) in 4.05 s on a single NVIDIA H200: 33× faster than the released Pixal3D pipeline it is built on, at the same export settings.
Most of the time of such a pipeline is spent after its networks: the released Pixal3D pipeline spends 85 % of its end-to-end time in mesh post-processing and 14 % in its four rectified flows. Sprint3D rebuilds the mesh post-processing on the GPU and takes it off the critical path, cuts the per-evaluation overhead of the flows, and replaces the four flows by distilled students (LoRA adapters on the released flow models) that need 8 network evaluations per image instead of 76.
- [2026-11-13] Technical report on arXiv; code, student weights and the project page released.
| Pipeline | End-to-end time ↓ | Network evaluations ↓ | IoU ↑ | Normal PSNR ↑ | Normal SSIM ↑ | Normal LPIPS ↓ | Mean angular error ↓ |
|---|---|---|---|---|---|---|---|
| Pixal3D (released) | 133.0 s | 76 | 96.97 | 20.87 | 0.668 | 0.021 | 14.25° |
| Sprint3D | 4.05 s | 8 | 96.78 | 21.56 | 0.712 | 0.018 | 13.00° |
Time: median from reading the image to the closed GLB file on one H200, at the export settings of Pixal3D's own script (1,000,000 faces, 4096 × 4096 texture). Quality: the protocol of the Pixal3D paper on 2,653 held-out Toys4K test objects (Table 4 of the report). The speed-up is not free: Sprint3D scores slightly lower under the point-cloud encoders ULIP-2 and Uni3D and has less fine texture detail than the 12-step texture flow its 2-step student replaces. The report has the comparison with other generators, the time saved by each change and the transfer of the rebuilt post-processing to TRELLIS.2.
Linux with an NVIDIA GPU and CUDA 12.8, Python 3.10 and PyTorch 2.7.0. The reported numbers use a Hopper GPU
(sm_90); on other GPUs the package falls back from FlashAttention-3 to FlashAttention-2 (--fa2), which gives the
same results up to rounding but is slower.
git clone --recursive https://github.com/AlayaLab/sprint3d.git && cd sprint3d
bash env/install.sh # conda environment, pinned packages, source builds, patched extensionsThe installation takes 1 to 1.5 hours with 4 CPU cores and about 30 GB of disk; when a step fails, running the
script again resumes at that step. docs/INSTALL.md describes every step, and env/Dockerfile
has the same steps as a container recipe.
python scripts/download_weights.py # students and upstream models, about 32.6 GB in total
python scripts/verify_weights.py # size and sha256 of every fileThe four students (5.19 GB) come from AlayaLab/sprint3d on Hugging
Face; the upstream models (Pixal3D, DINOv3, MoGe-2, RMBG-2.0, NAF) are fetched from public sources, pinned by revision
or sha256. Pixal3D is gated in the EU and RMBG-2.0 is gated: accept their terms first.
docs/WEIGHTS.md lists every file, its revision and its licence.
python scripts/infer.py --image third_party/Pixal3D/assets/images/4_img.png --output out/4_img.glb \
--students weights/students --pixal3d weights/pixal3d --timing-json out/timing.json- The GLB uses the export settings of Pixal3D's own script (1,000,000 faces, 4096 × 4096 texture);
--list inputs.jsonl --out-dir out/processes many inputs in one process. - The first request of a process is slower, because it compiles kernels and tunes the sparse convolutions; use
--warmup 1(the default) before timing. python scripts/run_official.py --image <image> --output <out>.glbruns Pixal3D's own script for the reference output, andbash scripts/check.shchecks an installation.
| Topic | Where |
|---|---|
| Timing protocol behind the numbers above | docs/TIMING.md |
| Evaluation suite and object lists (no data is distributed) | docs/EVALUATION.md, docs/DATA.md |
| The individual optimizations and their flags | docs/LEVERS.md |
| Cumulative measurement, ablations, TRELLIS.2 port and baselines | docs/REPRODUCE_PAPER.md |
| Retraining the four students | docs/TRAINING.md |
| Agreement between this package and the measurement code of the report, including the criteria that are not met | docs/PARITY.md |
| Checkpoint loading, pickle files and network behaviour | docs/SECURITY_NOTES.md |
The code is released under the Apache License 2.0 (LICENSE, NOTICE). The student weights are released under
CC BY-NC 4.0, because their training data includes assets under
non-commercial and research-only licences. Running the full pipeline also uses third-party components under their
own terms, some of them non-commercial (nvdiffrast, the cubvh code in the patched native extension, RMBG-2.0):
see THIRD_PARTY_LICENSES.md.
Sprint3D builds on the released code and weights of Pixal3D and on TRELLIS.2, and uses CuMesh, FlexGEMM, o-voxel, nvdiffrast, cubvh, MoGe, DINOv3, RMBG-2.0, NAF and FlashAttention, among the components listed in THIRD_PARTY_LICENSES.md. Sprint3D is not affiliated with, endorsed by or reviewed by Tencent or the authors of Pixal3D.
@misc{kuno2026sprint3d,
title = {Sprint3D: Accelerating End-to-End 3D Asset Generation through Pipeline Optimization},
author = {Kuno, Sho and Yu, Ruihan and Yu, Yonghao and Lin, Guixu and Fu, Lian and Niu, Muyao and
Tsai, Yu-Ju and Huang, Zheng-Hui and Huang, Yi-Chuan and Yang, Siqi and Lan, Fengbo and
Wu, Erwin and Zhang, Kaipeng and Wang, Zhixiang},
year = {2026},
eprint = {2611.16701},
archivePrefix = {arXiv},
primaryClass = {cs.CV}
}
