84 lines
2.5 KiB
Markdown
84 lines
2.5 KiB
Markdown
# PartPacker
|
|
|
|

|
|
|
|
### [Project Page](https://research.nvidia.com/labs/dir/partpacker/) | [Arxiv](https://arxiv.org/abs/2506.09980) | [Models](https://huggingface.co/nvidia/PartPacker) | [Demo](https://huggingface.co/spaces/nvidia/PartPacker)
|
|
|
|
|
|
This is the official implementation of *PartPacker: Efficient Part-level 3D Object Generation via Dual Volume Packing*.
|
|
|
|
Our model performs part-level 3D object generation from single-view images.
|
|
|
|
### Install
|
|
|
|
We rely on `torch` with CUDA installed correctly.
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
|
|
# if you prefer fixed version of dependencies:
|
|
pip install -r requirements.lock.txt
|
|
|
|
# by default we use torch's built-in attention, if you want to explicitly use flash-attn:
|
|
pip install flash-attn --no-build-isolation
|
|
|
|
# if you want to run data processing and vae inference, please install meshiki:
|
|
pip install meshiki
|
|
```
|
|
|
|
### Pretrained models
|
|
|
|
Download the pretrained models from huggingface, and put them in the `pretrained` folder.
|
|
|
|
```bash
|
|
mkdir pretrained
|
|
cd pretrained
|
|
wget https://huggingface.co/nvidia/PartPacker/resolve/main/vae.pt
|
|
wget https://huggingface.co/nvidia/PartPacker/resolve/main/flow.pt
|
|
```
|
|
|
|
### Inference
|
|
|
|
For inference, it takes ~16GB GPU memory (assuming float16).
|
|
|
|
```bash
|
|
# vae reconstruction of meshes
|
|
PYTHONPATH=. python vae/scripts/infer.py --ckpt_path pretrained/vae.pt --input assets/meshes/ --output_dir output/
|
|
|
|
# flow 3D generation from images
|
|
PYTHONPATH=. python flow/scripts/infer.py --ckpt_path pretrained/flow.pt --input assets/images/ --output_dir output/
|
|
|
|
# open local gradio app
|
|
python app.py
|
|
```
|
|
|
|
|
|
### Data Processing
|
|
|
|
We provide a *Dual Volume Packing* implementation to process raw glb meshes into two separate meshes as proposed in the paper.
|
|
|
|
```bash
|
|
cd data
|
|
python bipartite_contraction.py ./example_mesh.glb
|
|
# the two separate meshes will be saved in ./output
|
|
```
|
|
|
|
### Acknowledgements
|
|
|
|
This work is built on many amazing research works and open-source projects, thanks a lot to all the authors for sharing!
|
|
|
|
* [Dora](https://github.com/Seed3D/Dora)
|
|
* [Hunyuan3D-2](https://github.com/Tencent/Hunyuan3D-2)
|
|
* [Trellis](https://github.com/microsoft/TRELLIS)
|
|
|
|
## Citation
|
|
|
|
```
|
|
@article{tang2024partpacker,
|
|
title={Efficient Part-level 3D Object Generation via Dual Volume Packing},
|
|
author={Tang, Jiaxiang and Lu, Ruijie and Li, Zhaoshuo and Hao, Zekun and Li, Xuan and Wei, Fangyin and Song, Shuran and Zeng, Gang and Liu, Ming-Yu and Lin, Tsung-Yi},
|
|
journal={arXiv preprint arXiv:2506.09980},
|
|
year={2025}
|
|
}
|
|
```
|