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
-
GGUF
Model size
20.2M params
Architecture
sprongmotion
Hardware compatibility
Log In to add your hardware

8-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train SegerEnd/SprongMotion-14M