Ling-Hao Chen1,2, Yuhong Zhang1, Zixin Yin3, Zhiyang Dou4, Xin Chen5, Jingbo Wang6, Taku Komura4, Lei Zhang2
1Tsinghua University, 2IDEA Research, 3HKUST, 4HKU, 5ByteDance, 6Shanghai AI Lab
Contact: Ling-Hao CHEN via email (thu [dot] lhchen [at] gmail [dot] com).
✨ACM SIGGRAPH Asia 2025✨
💡Tips: As Motion2Motion is quite lightweight, please run it on the CPUs of our personal laptops. Without the necessary, please don't run it on GPUs and don't interrupt others to implement AGI.
Install the required Python packages using pip:
pip install -r requirements.txtpython run_M2M.py \
-e './data/processed/Monkey/__Walk.bvh' \
-d cpu \
--source './data/processed/Flamingo/Flamingo_Walk.bvh' \
--mapping_file configs/mappings_flamingo.json \
--output_dir ./demo_output \
--sparse_retargeting \
--matching_alpha 0.9or running bash run.sh in the root directory.
This command will generate new motion sequences by retargeting the input BVH file (./data/processed/Flamingo/Flamingo_Walk.bvh) using the source motion from Monkey motions. The generated motions will be saved in the demo_output/ directory.
Here,
-eor--example: Input BVH file (target motion to retarget)-dor--device: Device to run on (cpu/cuda)--source: Source BVH file (motion to be retargeted from)--mapping_file: JSON file containing joint mapping between source and target skeletons--output_dir: Directory to save generated results--sparse_retargeting: Enable sparse retargeting mode--matching_alpha: Alpha parameter for motion matching (0.0-1.0)
Generated motions will be saved in the specified output directory (output_dir) as BVH files with detailed naming conventions indicating the synthesis parameters used.
Joint mapping files are available in the configs/ directory to specify the bone binding relationships, aka. the sparse correspondences in the paper. The mapping files are in JSON format, and the structure is as follows:
{
"source_name": $SOURCE_CHARACTER_NAME,
"target_name": $TARGET_CHARACTER_NAME,
"root_joint": $ROOT_BONE_NAME,
"mapping": [
{
"target": $TARGET_BONE_NAME,
"source": $SOURCE_BONE_NAME
},
]
}add_random_string_of_joints.py script to add a random string to the joint names in the BVH files. You can process all Truebones-Zoo dataset with the script. Usage:
python utils/add_random_string_of_joints.py -i ./data/processed/Monkey/__Walk.bvh -o ./data/processed/Monkey/__Walk_modified.bvh-
We plan to release more cases of our demo in the paper in Sep. 2025.
-
Considering the copyright of Truebones-Zoo dataset, we can only provide few examples and the file processing tutorials in the doc. Please refer to the "
⚠️ Warnning and Note" part. -
We also provide some tools to visualize rest pose (here) and skeleton tree (here).
If you find our work useful, please consider citing:
@inproceedings{chen2025motion2motion,
title={Motion2Motion: Cross-topology Motion Transfer with Sparse Correspondence},
author={Chen, Ling-Hao and Zhang, Yuhong and Yin, Zixin and Dou, Zhiyang and Chen, Xin and Wang, Jingbo and Komura, Taku and Zhang, Lei},
booktitle={SIGGRAPH Asia 2025 Conference Papers},
year={2025},
publisher={ACM},
doi={10.1145/3757377.3763811},
address={Hong Kong, China},
isbn={979-8-4007-2137-3/2025/12}
}Work done during Ling-Hao Chen's internship at IDEA Research. The author team would like to acknowledge all program committee members for their extensive efforts and constructive suggestions. In addition, Weiyu Li (HKUST), Shunlin Lu (CUHK-SZ), and Bohong Chen (ZJU) had discussed with the author team many times throughout the process. The author team would like to convey sincere appreciation to them as well. Our codes are based on GenMM.