AniGen is a unified framework that directly generates animate-ready 3D assets conditioned on a single image. Our key insight is to represent shape, skeleton, and skinning as mutually consistent $S^3$ Fields (Shape, Skeleton, Skin) defined over a shared spatial domain. To enable the robust learning of these fields, we introduce two technical innovations: (i) a confidence-decaying skeleton field that explicitly handles the geometric ambiguity of bone prediction at Voronoi boundaries, and (ii) a dual skin feature field that decouples skinning weights from specific joint counts, allowing a fixed-architecture network to predict rigs of arbitrary complexity. Built upon a two-stage flow-matching pipeline, AniGen first synthesizes a sparse structural scaffold and then generates dense geometry and articulation in a structured latent space. Extensive experiments demonstrate that AniGen substantially outperforms state-of-the-art sequential baselines in rig validity and animation quality, generalizing effectively to in-the-wild images across diverse categories including animals, humanoids, and machinery.
AniGen takes a single image as input and automatically produces a fully rigged, animate-ready 3D asset, complete with a coherent mesh, an articulated skeleton, and smooth skinning weights. The generated assets can be directly imported into standard 3D pipelines and driven by off-the-shelf motion data, enabling immediate deployment across a wide spectrum of downstream applications, including embodied AI agent construction, physics-based simulation, character animation, dynamic scene creation, and articulated object manipulation.
![]() Machine Arm |
![]() Machine Dog |
![]() Money Tree |
![]() Iron Boy |
![]() Mairo |
![]() Evo |
![]() Horse |
![]() Eagle |
- System: The code is currently tested only on Linux.
- Hardware: An NVIDIA GPU with at least 18GB of memory is necessary. The code has been verified on NVIDIA A800 and RTX3090 GPUs.
- Software:
- The CUDA Toolkit is needed to compile certain submodules. The code has been tested with CUDA versions 11.8 and 12.2.
- Conda is recommended for managing dependencies.
- Python version 3.8 or higher is required.
-
Clone the repo:
git clone --recurse-submodules https://github.com/VAST-AI-Research/AniGen.git cd AniGen -
Install the dependencies:
We recommend using uv for fast, reliable installs. The setup script will also work with plain
pipifuvis not available.Create a new virtual environment and install everything:
source ./setup.sh --new-env --allIf your network connection to PyPI is unstable or slow, you can use the Tsinghua mirror:
source ./setup.sh --new-env --all --tsinghuaIf you already have an environment with PyTorch installed, install into it directly:
source ./setup.sh --basic[!NOTE] The setup script auto-detects your CUDA version and installs matching wheels for PyTorch, spconv, pytorch3d, and nvdiffrast. DSINE (used for surface normal estimation) is loaded at runtime via
torch.huband does not require separate installation.
We provide the following pretrained models on Hugging Face. Please make sure to download all necessary weights from this page, including the required dinov2, dsine, and vgg checkpoints.
Tip
Recommended: Use SS-Flow-Duet + SLAT-Flow-Auto if you do not have specific requirements.
- For more detailed skeleton (including character fingers) → SS-Flow-Duet
- For better geometry generalization → SS-Flow-Solo
- SLAT-Flow-Control supports density levels 0–4, but if the density condition significantly deviates from the proper value for the object, skinning weights may be damaged.
| DAE Model | Description | Download |
|---|---|---|
| SS-DAE | Encoder&Decoder of SS | Download |
| SLAT-DAE | Encoder&Decoder of SLAT | Download |
| SS Model | Description | Download |
|---|---|---|
| SS-Flow-Duet | Detailed Skeleton (Full-FT Geo) | Download |
| SS-Flow-Epic | Geometry&Skeleton Balanced (LoRA-FT Geo) | Download |
| SS-Flow-Solo | Accurate Geometry (Freeze Geo) | Download |
| SLAT Model | Description | Download |
|---|---|---|
| SLAT-Flow-Auto | Automatically Determine Joint Number | Download |
| SLAT-Flow-Control | Controllable Joint Density | Download |
Here is an example of how to use the pretrained models for 3D asset generation.
After running the code, you will get the following files:
mesh.glb: a rigged mesh fileskeleton.glb: a skeleton visualization fileprocessed_image.png: the masked image as the condition
For AniGen checkpoints in this repo (e.g. ckpts/anigen/ss_flow_solo + ckpts/anigen/slat_flow_control), you can run:
python example.py --image_path assets/cond_images/trex.pngapp.py provides a simple web demo for 3D asset generation. Since this demo is based on Gradio, additional dependencies are required:
source ./setup.sh --demoIf needed, you can also install the demo dependencies via the Tsinghua mirror:
source ./setup.sh --demo --tsinghuaAfter installing the dependencies, you can run the demo with the following command:
python app.pyThen, you can access the demo at the address shown in the terminal.
The web demo is also available on Hugging Face Spaces!
Sample training data is available at AniGen-Sample-Dataset. To prepare your own data, refer to TRELLIS and the sample data format.
Note
Training requires the CUBVH extension (extensions/CUBVH/), which is automatically built by setup.sh. It is not needed for inference (app.py, example.py).
The pipeline has five stages. Later stages depend on earlier ones, so please train in order:
# Stage 1: Skin AutoEncoder
python train.py --config configs/anigen_skin_ae.json --output_dir outputs/anigen_skin_ae
# Stage 2: Sparse Structure DAE
python train.py --config configs/ss_dae.json --output_dir outputs/ss_dae
# Stage 3: Structured Latent DAE
python train.py --config configs/slat_dae.json --output_dir outputs/slat_dae
# Stage 4: SS Flow Matching (image-conditioned generation)
python train.py --config configs/ss_flow_duet.json --output_dir outputs/ss_flow_duet
# Stage 5: SLAT Flow Matching (image-conditioned generation)
python train.py --config configs/slat_flow_auto.json --output_dir outputs/slat_flow_autoAppend the following flags for distributed training across multiple machines and GPUs:
python train.py --config configs/<config>.json --output_dir outputs/<output> \
--num_nodes XX --node_rank XX --master_addr XX --master_port XXOther SS Flow variants (ss_flow_epic, ss_flow_solo) and SLAT Flow variants (slat_flow_control, slat_flow_gsn_auto) are available under ckpts/anigen/. Their config files can be found at ckpts/anigen/<variant>/config.json.
Training automatically resumes from the latest checkpoint in --output_dir. To start fresh, pass --ckpt none.
This project's source code is released under the MIT License.
Important
This repository includes third-party components with additional license restrictions. In particular, extensions/CUBVH/ contains BVH code derived from NVIDIA's instant-ngp, which is licensed for non-commercial / research use only. See THIRD_PARTY_LICENSES.md for details.
- TRELLIS by Microsoft
- cuBVH by Jiaxiang Tang
- tiny-cuda-nn and instant-ngp by Thomas Müller / NVIDIA
- FlexiCubes by NVIDIA
We sincerely appreciate the contributions of these excellent projects and their authors. We believe open source helps accelerate research, lower barriers to innovation, and make progress more accessible to the broader community.
If you find this work helpful, please consider citing our paper:
@article{huang2026anigen,
title = {AniGen: Unified $S^3$ Fields for Animatable 3D Asset Generation},
author = {Huang, Yi-Hua and Zhou, Zi-Xin and He, Yuting and Chang, Chirui
and Pu, Cheng-Feng and Yang, Ziyi and Guo, Yuan-Chen
and Cao, Yan-Pei and Qi, Xiaojuan},
journal = {ACM SIGGRAPH},
year = {2026}
}







