Friedrich-M /UniMate

[SIGGRAPH Asia 2026] UniMate: One Unified Model to Animate Diverse Skeletons

★ 2,438⑂ 260👁 45▤ 0
PythonCreated 2026-07-23linzhanmou.com/unimate/
2,438
stars
+0+28+978
260
forks
45
watchers
–
prs
–
issues
0
releases
–
discussions

README

UniMate

One Unified Model to Animate Diverse Skeletons


  
  
  
  
  



  Linzhan Mou ·
  Jiahui Lei ·
  Zhiyang Dou ·
  Chenyue Cai ·
  Chaoyue Song ·
  Adam Finkelstein ·
  Szymon Rusinkiewicz


Princeton · UC Berkeley · MIT · NTU


    


---

 🔥 News

- [2026-10-05] Bring your own rig: rig_preprocess turns any rigged GLB / glTF / FBX, animated or not, into an asset UniMate can animate, with a review step for its joint labels and facing; the sampler takes dataset skeletons and your own assets by reference. UniML3D adds training-ready features, canonical rest-pose meshes and generic / detailed captions. 🛠️
- [2026-09-27] Preview checkpoints are released at HuggingFace; new checkpoints will be synced there. 📦
- [2026-09-06] The training and inference code is released. 🚀
- [2026-08-30] The UniML3D dataset and its data-processing pipeline are released. 🚀
- [2026-08-01] Our Interactive Demo is live — browse our animation results in 3D. 🎮
- [2026-07-18] UniMate is accepted to SIGGRAPH Asia 2026! 🎉

 🛠️ Environment Setup

All components share a single conda environment, specified in requirements.txt:

bash
conda create -n unimate python=3.10 -y
conda activate unimate
pip install "setuptools
    


The processed dataset is on the Hub as UniML3D: the exported clips with all captions and annotations, the training-ready features, and canonical rest-pose meshes (everything except the Truebones motions and meshes). See data_process/README.md for the full data processing pipeline that turns the raw assets into UniML3D (download → export → rendering → captioning → joint annotation → feature extraction → animation).

 🏋️ Training

Training reads the canonicalized clips under dataset/features//. Download them, or build them with stage 4 of the data-processing pipeline (the Truebones clips must be built from the purchased pack):

bash
hf download Linzhan/UniML3D --repo-type dataset --local-dir dataset \
    --include "features/" --exclude "features//videos/" --exclude "features//tpose/"


Runs are configured by the JSON files in configs/.


Config naming — {dataset}_{frames}frames_{attention}_{text_cond}.json

8 configs: 4 data combinations x 2 model variants, all at 60 frames.

| Prefix | Training data |
|--------|---------------|
| uniml3d_ | Full UniML3D dataset (Truebones + Mixamo + Objaverse) |
| truebones_ / mixamo_ / objaverse_ | A single source |

| Length | dataset.max_motion_length |
|--------|-----------------------------|
| 60frames | 60 frames per clip |

| Suffix | model.attention x model.text_cond |
|--------|---------------------------------------|
| _graph_adaln | graph x adaln — attention factored into spatial (per frame) and temporal (per joint) passes with graph-distance, edge-type and depth biases; the caption is folded into the adaLN modulation |
| _full_cross_attn | full x cross_attn — one attention over the flattened joint x time tokens; the caption enters every block as cross-attention keys/values |

The two axes are independent and

Snapshot: 2026-11-04T14:00:00Z · Data license Apache-2.0 · JSON