This is the code repository of MotionMaster: Generalizable Text-Driven Motion Generation and Editing at CVPR 2026.
📝 arXiv | 🌐 Project Page
- Python 3.10
- CUDA-capable GPU
- Required Python packages (see Installation)
-
Clone the Repository:
git clone https://github.com/liyanhu666666/MotionMaster.git cd MotionMaster -
Install Dependencies:
pip install -r requirements.txt pip install "git+https://github.com/facebookresearch/pytorch3d.git@stable" --no-build-isolation pip install -e src/human_body_prior_repo/ -
Download Checkpoints:
Download
mllm/,tokenizer.pt, andnorm_stats.npzfrom Google Drive and place them as below.The SMPL-X body model (
SMPLX_MALE.npz) and VPoser weights (V02_05/) must be downloaded separately from the SMPL-X project page and placed at the paths shown below:checkpoints/ ├── mllm/ - fine-tuned Qwen2.5-VL language model ├── tokenizer.pt - FSQ motion tokenizer weights ├── norm_stats.npz - normalization statistics └── smplx_model/ └── SMPLX_MALE.npz - SMPL-X body model (download from SMPL-X project page) src/human_body_prior_repo/support_data/dowloads/ └── V02_05/ - VPoser model (download from SMPL-X project page)
MotionMaster/
├── src/
│ ├── models/ - FSQ tokenizer model
│ ├── quantizers/ - FSQ quantizer
│ ├── smplx_fast/ - SMPL-X (https://github.com/vchoutas/smplx.git)
│ ├── human_body_prior_repo/ - VPoser (https://github.com/nghorbani/human_body_prior.git)
│ ├── feature_utils.py - motion feature utilities
│ ├── joint2smplx.py - 3D joints → SMPL-X fitting
│ └── smplx2joints.py - forward kinematics
├── checkpoints/ - model weights (download separately)
├── infer.py - inference entry point
└── README.md
To generate a single motion using the mllm_single_3b checkpoint, run:
python infer.py --text "a person walks forward" --output output.pklAdditional arguments:
--text Text description of the motion (required)
--output Output .pkl file path (default: output.pkl)
--mllm_path Path to MLLM checkpoint (default: checkpoints/mllm_single_3b)
--tokenizer_pt Path to FSQ tokenizer (default: checkpoints/tokenizer.pt)
--stats_npz Path to normalization stats (default: checkpoints/norm_stats.npz)
--smplx_path Path to SMPL-X model (default: checkpoints/smplx_model)
Coming soon!
The output .pkl file contains SMPL-X parameters:
{
"body_pose": numpy.ndarray (N, 63),
"global_orient": numpy.ndarray (N, 3),
"transl": numpy.ndarray (N, 3),
}
@inproceedings{jiang2026motionmaster,
title={MotionMaster: Generalizable Text-Driven Motion Generation and Editing},
author={Jiang, Nan and Li, Yunhao and Pang, Lexi and He, Zimo and Huang, Siyuan and Zhu, Yixin},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
year={2026}
}