SprongMotion-14M 1.0
SprongMotion-14M is a compact text-to-motion model that turns English descriptions into 3D human animation. Describe an action, and the model generates a motion sequence for a 22-joint human skeleton at 20 FPS, with durations ranging from 0.5 to 10 seconds.
It runs on a plain CPU, no GPU. On an Apple M4, a 10 s clip takes about 0.23 s with 10 threads and about 1.2 s on one thread, and about 1.4 s in WebAssembly (SIMD, one thread, Node). The model is one 33 MB file.
Model size: 20.0M parameters across the complete model package, including a 13.8M-parameter motion generator. The model is named SprongMotion-14M after its generator.
The model is designed to be practical, not just experimental. Its quantized weights fit in a single GGUF file, and the SprongMotion C runtime supports native and WebAssembly deployment, including CPU-only environments and the browser.
| Parameters | 20.0M: motion generator 13.8M, text encoder 2.4M, motion tokenizer 3.8M |
| File | SprongMotion-14M-v1.0-Q8_0.gguf, 33.3 MB (33,337,824 bytes) |
| SHA256 | 68fbd311a0d7d75f60508b35254171583c85880e7e124140457b57ac84c5de9d |
| Format | GGUF, generator weights Q8_0, the other parts F32 |
| Skeleton | 22 joints, no fingers |
| Frame rate | 20 fps |
| Length | 0.5 to 10 s per clip, longer motion as several prompt blocks |
| Input | English text |
| Runtime | SprongMotion runtime 1.0.0 or newer |
| License | Apache-2.0 |
Highlights
Text to motion: Generate walking, running, jumping, turning, dancing, sports movements, and other everyday actions from English prompts.
Lightweight: 20.0M parameters in all, packaged in a single 33 MB GGUF file.
CPU-friendly: Run inference without requiring a GPU.
Animation-ready output: Joint positions and rotations, root trajectories, foot contacts, and BVH export.
Editable motion: Support for inpainting, pinned frames and codes, looping, prompt timelines, and root-path control through the runtime.
Reproducible inference: Identical prompts produce bit-identical results across exact builds of the runtime, including native and WebAssembly builds.
Getting started
Want to try it? Use Blender. The SprongMotion add-on bundles the runtime and this model. Install the zip for your system (Edit > Preferences > Get Extensions > Install from Disk), select an armature, open the Timeline sidebar (N) and type a motion.
Want to integrate it? Use the C runtime. Download the model, build the SprongMotion runtime (a C11 compiler and make) and run the example, which writes a BVH file you can open in Blender or a game engine:
hf download SegerEnd/SprongMotion-14M SprongMotion-14M-v1.0-Q8_0.gguf --local-dir .
git clone https://github.com/SegerEnd/sprongmotion-runtime
make -C sprongmotion-runtime build/examples/01_hello
sprongmotion-runtime/build/examples/01_hello SprongMotion-14M-v1.0-Q8_0.gguf "waves with the right hand" wave.bvh
examples/01_hello.c is the whole program in 34 lines: headers, loading with error handling, generating, the frame count and BVH export, cleanup. The other examples cover parameters, progress and cancel, and editing.
Want to deploy it in a browser? Use WebAssembly. The runtime's WebAssembly build runs the same model in a browser or node, with the same output as native: examples/05_wasm.mjs loads it and turns a prompt into BVH text.
The GGUF package contains the tokenizer, text encoder, motion generators, motion decoder and encoder, reference skeleton, and default sampling configuration. The model file alone is not the complete runtime.
Prompting
Write one action per prompt, in plain English: "a person walks forward", "waves with the right hand", "jumps up high", "turns around", "sits down". A subject such as "a person" is not necessarily needed. Side, direction, speed, count and style words are part of the training captions.
- For a sequence, use several prompt blocks (walk, then turn, then sit) rather than one long sentence.
- Give runs a direction: "runs forward", not just "runs" (that one can float or drift).
- Sitting, lying and stepping up use an invisible prop, as in game animation: "sits down" sits on nothing.
- A different seed gives a different take of the same prompt.
Intended uses
SprongMotion is intended for:
- Game animation and prototyping.
- Film previsualization and animation blocking.
- Procedural character animation.
- Interactive 3D applications and browser-based experiments.
- Education and research into compact generative motion models.
It is not intended for biomechanical measurement, clinical assessment, or accurate reconstruction of real human movement.
Known weaknesses
- Pirouettes and fast spins can glitch: single frames with a large jump in facing.
- Seams between blocks with different prompts are sometimes rougher than motion inside a block (timelines, continuing a clip with a new prompt).
- Feet can slide in walks, most in the switch from walking to standing.
- A plain "a person runs" (no direction) sometimes floats or drifts off. "a person runs forward" does not.
- Fine detail of hands and fingers is not modelled (22 joints, no fingers). No contact with objects.
- English-only input: Prompts in other languages are not supported as a target use case.
- Unfamiliar actions: Actions outside the training distribution may be approximated by more familiar movements.
License
The released model is distributed under the Apache License 2.0. LICENSE.
Licensor: Seger Endendijk - segerend.nl
Please do not use SprongMotion for military, warfare, nuclear or espionage purposes.
If you use SprongMotion in your work (project, application, publication, demonstration or presentation), a credit to Seger Endendijk (segerend.nl) is appreciated.
Technical details
What is inside the model
SprongMotion-14M uses a masked-token generator and a residual-token generator operating on a vector-quantized motion representation.
The architecture consists of:
- A six-layer motion VQ tokenizer, with one token per two motion frames.
- A compact text encoder that provides token-level states and a pooled text representation.
- A masked token generator for motion generation.
- A residual token generator for refining the motion representation.
- A motion decoder that converts generated representations into skeletal motion.
The GGUF file includes all the components needed by the runtime to perform inference and work with motion representations. The runtime's design notes describe the file and the network in detail.
Training and data
SprongMotion-14M was trained on approximately 120,000 motion clips.
Most of the motions were generated by using NVIDIA Kimodo from written prompts. They are released as the SprongMotion-100K dataset. These generated clips were checked using measurements and visual inspection. The remaining data consists of motion-capture sequences and hand-keyed game animations.
Training captions include original prompts, descriptions derived from measurable motion properties such as speed, turns, and repetition counts, and checked paraphrases.
The text encoder was initialized using Granite embeddings and distilled using targets from Qwen3-Embedding-4B. Qwen3-8B was used to produce caption paraphrases that were subsequently checked.
No training data under a non-commercial license was used.
Measured checks
There is no standard benchmark score for this model. These are the targeted checks run on the released model (C runtime, several seeds per prompt):
| Check | Result |
|---|---|
| "a person walks forward": speed over the whole clip | 0.8 m/s |
| "a person runs forward": clips floating above the ground | 0 of 48 |
| Jogging: speed | 1.39 m/s |
| Lying down: pelvis height, start to end | 0.98 m to 0.12 m |
| Hops, turns of 180 degrees, walking in a circle: clips that do it | 12 of 12, 11 of 12, 12 of 12 |
Provenance
Most training motions were generated by the Licensor using NVIDIA Kimodo (nvidia/Kimodo-SOMA-RP-v1.1), used under the NVIDIA Open Model License, under which NVIDIA claims no ownership rights in outputs. This Model is not endorsed by NVIDIA. No part of the Kimodo model (weights or code) is included in this Model. https://huggingface.co/nvidia/Kimodo-SOMA-RP-v1.1 , https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-open-model-license/
Other sources, each used under its own license
| Source | Used for | License | Link |
|---|---|---|---|
| 100STYLE (Ian Mason, Sebastian Starke, Taku Komura) | styled locomotion | CC BY 4.0 | https://zenodo.org/records/8127870 |
| AddBiomechanics Dataset 1.0, high-quality core (Werling et al.), subjects with arm motion | walking, running, jumps, sports, everyday tasks | CC BY 4.0 | https://addbiomechanics.org/download_data.html |
| Mesh2Motion human animation library (base set from the Quaternius Universal Animation Library) | hand-keyed game moves | CC0 1.0 | https://github.com/Mesh2Motion/mesh2motion-app , https://quaternius.com/packs/universalanimationlibrary.html |
| KayKit Character Pack: Adventurers 1.0 and Skeletons 1.0 (Kay Lousberg) | hand-keyed game moves | CC0 1.0 | https://github.com/KayKit-Game-Assets/KayKit-Character-Pack-Adventures-1.0 , https://github.com/KayKit-Game-Assets/KayKit-Character-Pack-Skeletons-1.0 |
| FreeMotionPack1 (J-Beardmore) | emotes | CC0 1.0 | https://github.com/J-Beardmore/FreeMotionPack1 |
| granite-embedding-small-english-r2 (IBM) | text encoder initialisation | Apache-2.0 | https://huggingface.co/ibm-granite/granite-embedding-small-english-r2 |
| Qwen3-Embedding-4B (Qwen team) | text encoder distillation targets | Apache-2.0 | https://huggingface.co/Qwen/Qwen3-Embedding-4B |
| Qwen3-8B (Qwen team) | caption paraphrases | Apache-2.0 | https://huggingface.co/Qwen/Qwen3-8B |
| CLIP BPE vocabulary (OpenAI) | the tokenizer's merges | MIT | https://github.com/openai/CLIP |
The training data itself is not part of this release and is not licensed under LICENSE.
How to cite
If you use SprongMotion in research or other published work, please cite the model:
@misc{endendijk2026sprongmotion,
author = {Endendijk, Seger},
title = {SprongMotion-14M: a small text-to-motion model},
year = {2026},
howpublished = {\url{https://huggingface.co/SegerEnd/SprongMotion-14M}},
note = {Version 1.0, https://segerend.nl}
}
Upstream citations
Please also cite the relevant upstream datasets and research publications when using their contributions.
@article{mason2022style,
author = {Mason, Ian and Starke, Sebastian and Komura, Taku},
title = {Real-Time Style Modelling of Human Locomotion via Feature-Wise Transformations and Local Motion Phases},
journal = {Proceedings of the ACM on Computer Graphics and Interactive Techniques},
year = {2022},
doi = {10.1145/3522618}
}
@inproceedings{werling2024addbiomechanics,
author = {Werling, Keenon and Kaneda, Janelle and Tan, Tian and Agarwal, Rishi and Skov, Six and Van Wouwe, Tom and
Uhlrich, Scott and Bianco, Nicholas and Ong, Carmichael and Falisse, Antoine and Sapkota, Shardul and
Chandra, Aidan and Carter, Joshua and Preatoni, Ezio and Fregly, Benjamin and Hicks, Jennifer and
Delp, Scott and Liu, C. Karen},
title = {AddBiomechanics Dataset: Capturing the Physics of Human Motion at Scale},
booktitle = {Computer Vision -- ECCV 2024},
pages = {490--508},
publisher = {Springer Nature Switzerland},
year = {2025},
doi = {10.1007/978-3-031-73223-2_27}
}
- Downloads last month
- 23
8-bit