Efficient Part-level 3D Object Generation via Dual Volume Packing
824
stars
19
commits
Python
primary language
Jun 26, 2025
updated

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.
We rely on torch with CUDA installed correctly (tested with torch 2.5.1 + CUDA 12.1).
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
It is confirmed to work on Python 3.10, with Cuda 12.4 and Torch 2.51 with TorchVision 0.20.1.
It may work with other versions or combinations, but has been tested and confirm to work on NVidia 3090 and 4090 GPUs.
git clone https://github.com/NVlabs/PartPackerPartPacker directorypip install torch==2.5.1 torchvision==0.20.1 torchaudio --index-url https://download.pytorch.org/whl/cu124pip install -r requirements.txtRun the app with py app.py
It will auto-download the needed models and give you a URL for the gradio app in the console.
Download the pretrained models from huggingface, and put them in the pretrained folder.
mkdir pretrained
cd pretrained
wget https://huggingface.co/nvidia/PartPacker/resolve/main/vae.pt
wget https://huggingface.co/nvidia/PartPacker/resolve/main/flow.pt
For inference, it takes ~10GB GPU memory (assuming float16).
# 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 (single GPU)
python app.py
# open local gradio app with multi-GPU support
python app.py --multi
The application supports multi-GPU inference for those who are lack of GPU memory.
python app.pypython app.py --multiIn multi-GPU mode:
If only one GPU is available, the system automatically falls back to single-GPU behavior even in multi-GPU mode.
We provide a Dual Volume Packing implementation to process raw glb meshes into two separate meshes as proposed in the paper.
cd data
python bipartite_contraction.py ./example_mesh.glb
# the two separate meshes will be saved in ./output
This work is built on many amazing research works and open-source projects, thanks a lot to all the authors for sharing!
@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}
}
Python
97.2%
Dockerfile
2.8%
Efficient Part-level 3D Object Generation via Dual Volume Packing
824
stars
19
commits
Python
primary language
Jun 26, 2025
updated

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.
We rely on torch with CUDA installed correctly (tested with torch 2.5.1 + CUDA 12.1).
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
It is confirmed to work on Python 3.10, with Cuda 12.4 and Torch 2.51 with TorchVision 0.20.1.
It may work with other versions or combinations, but has been tested and confirm to work on NVidia 3090 and 4090 GPUs.
git clone https://github.com/NVlabs/PartPackerPartPacker directorypip install torch==2.5.1 torchvision==0.20.1 torchaudio --index-url https://download.pytorch.org/whl/cu124pip install -r requirements.txtRun the app with py app.py
It will auto-download the needed models and give you a URL for the gradio app in the console.
Download the pretrained models from huggingface, and put them in the pretrained folder.
mkdir pretrained
cd pretrained
wget https://huggingface.co/nvidia/PartPacker/resolve/main/vae.pt
wget https://huggingface.co/nvidia/PartPacker/resolve/main/flow.pt
For inference, it takes ~10GB GPU memory (assuming float16).
# 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 (single GPU)
python app.py
# open local gradio app with multi-GPU support
python app.py --multi
The application supports multi-GPU inference for those who are lack of GPU memory.
python app.pypython app.py --multiIn multi-GPU mode:
If only one GPU is available, the system automatically falls back to single-GPU behavior even in multi-GPU mode.
We provide a Dual Volume Packing implementation to process raw glb meshes into two separate meshes as proposed in the paper.
cd data
python bipartite_contraction.py ./example_mesh.glb
# the two separate meshes will be saved in ./output
This work is built on many amazing research works and open-source projects, thanks a lot to all the authors for sharing!
@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}
}
Python
97.2%
Dockerfile
2.8%