Introduction

PartLock-CMU is a small open text-to-motion model that never stops moving, and you can change what the character is doing while it moves. Independent developer Yakimasuku (やきますく) posted the code and weights on Hugging Face on November 13 under Apache 2.0. Type walk, then Wave, then run/jog, and you get one continuous full-body take instead of three clips you have to blend by hand. The detail that matters most for game teams is the data: it was trained only on the CMU Motion Capture Database, whose terms allow use inside commercially sold products.

What shipped

  • Model: PartLock-CMU (a 30.5M-parameter generator plus a 7.5M-parameter causal motion tokenizer)
  • Developer: Yakimasuku, an independent researcher
  • Modality: text to full-body 3D motion, streamed in real time
  • Open vs API: open weights and code, Apache 2.0. There's no hosted API
  • Where to run it today: locally from the Hugging Face repo, with a browser demo or a script that writes motion to a file
  • Concrete fact: a new caption takes effect at the next 4-frame step, which is 0.13 seconds at 30 fps. On an RTX 3060 one step takes 35–38 ms, about 3.5 times faster than real time

Why it's interesting for games

Most open text-to-motion models are trained on HumanML3D or AMASS, and those datasets come with research-only strings that make studios nervous. PartLock skips them entirely. The author says no HumanML3D or AMASS data or weights went into it, only 2,308 CMU clips (about 9.9 hours, mirrored left to right). CMU's own terms say you may include the data in commercially sold products but may not resell the data itself, even converted.

The other half is streaming. The generator is a decoder-only Transformer with a sliding 64-step context (about 8.5 seconds), so it keeps producing motion with no end point. The caption embedding is added at every position, which is what lets you swap the action mid-stream without a hard cut. That's the shape you want for an animation prototyping tool, a crowd or background-NPC test, or a jam game where nobody has time to author a state machine.

Try it

Grab the repo, install four dependencies (torch, numpy, transformers and safetensors), and start the live page. The weights are only about 157 MB.

git clone https://huggingface.co/Yakimask/PartLock-CMU && cd PartLock-CMU
pip install -r requirements.txt
python live/live_server.py   # then open http://localhost:8765

The demo page is in Japanese. 生成 means generate, 一時停止 means pause, 最初から restarts and clears the context, and 文章の強さ is the text-strength (guidance) slider. To bake a sequence to disk instead:

python generate.py --sec 4 --out motion.npz "walk" "Wave" "run/jog" "jump"

The .npz holds 30 fps world joint positions and rotations for a 22-joint skeleton in SMPL joint order, plus the pelvis path, the caption for each frame and the parent list.

The catch

  • CMU vocabulary only. Short captions in CMU's own style work, such as kick, salsa dance, boxing, cartwheel or walk backwards and turn. The full list is in data/cmu_files.csv. The author tried 20 actions that aren't in CMU and all of them came out nearly stationary.
  • One action per caption. "Wave while walking" loses most of the movement. Switching captions over time works much better.
  • Use run/jog, not run. Plain run slows to about 0.5 m/s after two seconds, while run/jog holds about 2.2 m/s.
  • You do the retargeting. The output is a raw 22-joint skeleton, not an FBX on your rig, and bone lengths can drift a little because CMU subjects weren't normalized to one body.
  • NVIDIA and English only. The live server needs a CUDA GPU, and the CLIP text encoder only understands English.

This isn't a replacement for a mocap library or a big motion foundation model. It's a tiny, commercially clean, real-time motion generator you can run on a mid-range gaming card today, and the whole training pipeline is included if you want to retrain it on your own clips.

—Titus