Make-It-Animatable: An Efficient Framework for Authoring Animation-Ready 3D Characters
(CVPR 2025 Highlight)
Zhiyang Guo, Jinxu Xiang, Kai Ma, Wengang Zhou, Houqiang Li, Ran Zhang
git clone https://github.com/jasongzy/Make-It-Animatable --recursive --single-branch
cd Make-It-Animatable
conda create -n mia python=3.11
conda activate mia
pip install -r requirements.txtFirst of all, get the Git LFS placeholder files (only metadata, won't download the actual data content):
git lfs install
GIT_LFS_SKIP_SMUDGE=1 git -C data clone https://huggingface.co/datasets/jasongzy/Mixamo
# git -C data/Mixamo submodule update --init
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/jasongzy/Make-It-Animatable /tmp/hf-data # can be deleted laterNow download some data required for both training and demo:
git -C data/Mixamo lfs pull -I 'bones*.fbx,animation'Download the pretrained models:
git -C /tmp/hf-data lfs pull -I output/best/new
mkdir -p output/best && cp -r /tmp/hf-data/output/best/new output/best/Download the example data:
git -C /tmp/hf-data lfs pull -I data
cp -r /tmp/hf-data/data/* data/Download some tools:
wget https://github.com/facebookincubator/FBX2glTF/releases/download/v0.9.7/FBX2glTF-linux-x64 -O util/FBX2glTF
chmod +x util/FBX2glTFDownload the training dataset:
git -C data/Mixamo lfs pull -I 'bones*.fbx,animation,animation_extra,character_refined,character_rabit_refined'Download the pretrained weights of AE (only for training from scratch):
git -C /tmp/hf-data lfs pull -I output/ae
cp -r /tmp/hf-data/output/ae output/About the online pairing of FBX files
During training, we do online pairing of characters and animations (skeletal motion sequences) using Blender to reduce the storage size of dataset while ensuring the diversity of training samples.
This basically includes the following steps (implemented using Blender's bpy API):
- Sample a character and a motion sequence, apply the motion to the character to create animated sequences, and optionally do retargeting for better poses.
- Sample some frames from the animated sequences to get the training samples of the current iteration.
- Extract the necessary ground-truth data (blend weights, bone positions, poses, etc.) for all sampled frames.
- Sample some points from the surface of the animated mesh as the input shape representation.
So if you want to get rid of the Blender dependency during training, you can iterate through the entire dataset in advance and store the results (may take a lot of storage space).
python app.pyAn online demo is also available at Hugging Face Spaces.
bash train.shTips:
- For the flexibility and efficiency during training, the models for predicting weights, bones, and poses are trained separately. If you wish to train them jointly and share decoder parameters across them, just modify the
train.shscript by enabling all--predict_*flags. - The hyperparameters in
train.share set for training on A100 80G GPU. To reduce the VRAM usage, consider decreasing the--batch_sizeand--sample_framesvalues.
- The dual-quaternion representation adopted in learning pose-to-rest transformations is replaced by a more effective rotation representation ortho6d along with the joint positions.
- Some samples from the 3DBiCar Dataset proposed in RaBit (rigged by Mixamo) are included in training to improve the generalization to characters with unusual head-body ratio.
@inproceedings{Guo_2025_CVPR,
author={Guo, Zhiyang and Xiang, Jinxu and Ma, Kai and Zhou, Wengang and Li, Houqiang and Zhang, Ran},
title={Make-It-Animatable: An Efficient Framework for Authoring Animation-Ready 3D Characters},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
year={2025},
}