File size: 2,815 Bytes
0905f67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7886dbf
0905f67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7886dbf
0905f67
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
---
license: cc-by-nc-4.0
library_name: pytorch
pipeline_tag: text-to-3d
tags:
  - text-to-motion
  - motion-generation
  - skeleton
  - animation
  - flow-matching
---

# TopX

TopX generates motion for an unseen skeleton from a text prompt and the skeleton file alone: its kinematic tree, rest
pose and joint names. No clips of the character, templates, retargeting or fine-tuning are needed. It is a 73M-parameter
flow-matching transformer with attention factorised over joints and frames; across joints, queries and keys are rotated
by HK-RoPE, a heat-kernel rotary encoding of the skeleton graph. One model animates skeletons from 4 to 117 joints and
generates up to 240 frames at 30 fps.

**Code:** https://github.com/CHDTevior/TopX-OOD-Code · **Project page:** https://chdtevior.github.io/TopX-page/ · **Paper:** [arXiv:2610.34321](https://arxiv.org/abs/2610.34321)

## Files

| file | content | sha256 |
|---|---|---|
| `topx.pt` | `{"config": architecture and normalisation, "model": state dict}` (293 MB, float32) | `f6d8e086235d1f99069cce47a2a7e5d59141a9442b7b5b2880937716b0ee405a` |

## Usage

```bash
git clone https://github.com/CHDTevior/TopX-OOD-Code.git && cd TopX-OOD-Code
pip install -r requirements.txt
huggingface-cli download Tevior/TopX-OOD topx.pt --local-dir weights
bash demo/run_demos.sh                                   # nine demo skeletons, no text encoder needed
python scripts/generate.py --ckpt weights/topx.pt --skeleton my_rig.bvh --up +Y --forward +Z \
    --text "An object walks forward and sits down." --frames 120 --out out/
```

The output is a BVH file of the input hierarchy (in its own axes and units), an `.npz` with joint positions and
rotations, and a GIF preview. Prompts and joint descriptions are encoded with LLM2Vec
(`McGill-NLP/LLM2Vec-Meta-Llama-3-8B-Instruct-mntp-supervised`, built on the gated `meta-llama/Meta-Llama-3-8B-Instruct`).

## Training data

The training split of the SkelShift benchmark: the Objaverse-XL subset of UniML3D, the AniMo4D animal library with
HumanML3D, further animations and species from the same game library as AniMo4D, and the Truebones zoo (139,102 clips
on 5,127 skeletons with 6 to 142 joints). See the paper for the split and the evaluation.

## License

The weights are released under [CC BY-NC 4.0](https://creativecommons.org/licenses/by-nc/4.0/): non-commercial use
with attribution. The code is MIT-licensed. Licences of the training data and of the text encoder apply to their
respective parts.

## Citation

```bibtex
@article{sun2026topx,
  title   = {TopX: Text-to-Motion for Unseen Skeletons from the Skeleton File Alone},
  author  = {Sun, Tengjiao and Fang, Pengcheng and Zhan, Xiaoyu and Fu, Dongjie and Cai, Xiaohao and Kim, Hansung},
  journal = {arXiv preprint arXiv:2610.34321},
  year    = {2026}
}
```