Text-to-motion systems like Kimodo generate high-fidelity human motion from captions and even support spatial constraints, but they produce the entire clip in one shot. If the user wants to change the path mid-motion, everything is recomputed from scratch, which is too slow for interactive use and too rigid for robotics, digital twins, or game characters.
We present C-T2M, a decoupled approach that splits the problem in two: a small path controller that rolls out the root XZ path (the line on the floor where the character walks, given by a handful of waypoints), and a caption-driven body GPT that synthesizes natural motion along that path. A deterministic recompose step blends them. The controller can react to new constraints instantly without re-running the body generator, and the whole pipeline runs an order of magnitude faster than Kimodo while following constraints with comparable accuracy. We train and evaluate on BONES-SEED, a large motion-capture corpus covering everyday and athletic actions (kicks, jumps, dances, locomotion), roughly 10× larger than the standard HumanML3D benchmark, and the same corpus Kimodo trains on, so the comparison is apples-to-apples. The full paper version of this writeup lives on the Report page.
Four things our system does that motivate the design.
Text-to-motion is, at its core, the problem of placing every joint of a humanoid skeleton frame-by-frame from a sentence. We start from the T2M-GPT baseline, an autoregressive Transformer that predicts discrete motion tokens from text, and add one key piece: a separate path controller that decides where the character goes, leaving the body GPT free to focus on what it does.
A VQ-VAE...
We evaluate on the BONES-SEED benchmark, comparing against Kimodo under the same evaluation pipeline. Full setup, metrics, and protocol details live in the Report.
We first evaluate the unconstrained text-to-motion behaviour of our pipeline: given a caption alone (no path constraint), can the model generate plausible motion that matches the text? We report quantitative results on the Kimodo Repetition benchmark and show qualitative samples from held-out captions.
Free-generation samples from our body GPT on captions held out from training. Each clip is produced from the caption alone, with no path constraint, so what you see is the model interpreting the text without any spatial guidance.
Ours vs. Kimodo (SOTA)
Side-by-side qualitative comparison on the same held-out captions. Kimodo is a diffusion-based baseline (state-of-the-art quality, slow). What to look for: Kimodo (right) produces smoother, more polished motion; our model (left) follows the caption but shows slightly less smooth and refined joint trajectories. This is the quality cost we trade for the speedup.
Caption: "The person, standing upright, draws their hand back to the right diagonal before throwing the ball diagonally to the left, then stands upright."
Ours (left) | Kimodo (right)
Caption: "A person standing straight stretches their leg and extends their arms outward, turns left and right, and stands in an upright stance."
Ours (left) | Kimodo (right)
On Kimodo's Repetition Text-to-Motion split (6 539 captions). The first two charts show that we trail Kimodo on text alignment (R@3) and realism (FID). The third chart, on a log scale, shows where we win: an order of magnitude fewer parameters, fewer GFLOPs per clip (the compute cost of one inference), and faster inference on the same A100.
The three column groups are the text-to-motion test splits of the Kimodo benchmark. Each clip carries one overview caption plus a timeline of fine-grained atomic-action segments.
Definitions follow the Kimodo metrics.
R@3 ↑ (text-match, %)
FID ↓ (realism, lower is better)
Efficiency: Kimodo vs. Ours (log scale, lower is better)
| model | params (M) | GFLOPs / clip ↓ | latency (ms / clip) ↓ | Overview | Timeline single | Timeline multi | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| R@3 ↑ | FID ↓ | Skate ↓ | Cont ↑ | R@3 ↑ | FID ↓ | Skate ↓ | Cont ↑ | R@3 ↑ | FID ↓ | Skate ↓ | Cont ↑ | ||||
| Ground Truth | - | - | - | 94.03 | 0.000 | 2.11 | 1.000 | 90.04 | 0.000 | 2.04 | 1.000 | 94.49 | 0.000 | 1.93 | 1.000 |
| Kimodo-SOMA-SEED-v1.1 | 8 300† | ~1500 | 4280 | 88.07 | 0.007 | 3.74 | 0.978 | 77.18 | 0.011 | 3.60 | 0.981 | 88.65 | 0.010 | 3.35 | 0.980 |
| Ours | 395 | ~470 | 413 | 58.66 | 0.191 | 33.07 | 0.617 | 47.44 | 0.220 | 27.95 | 0.654 | 37.04 | 0.307 | 27.20 | 0.664 |
We then evaluate the model under explicit path constraints: given a caption and a target floor path (a 2D XZ trajectory), how closely does the generated motion follow the path while remaining faithful to the caption? We report qualitative samples on hand-drawn paths and quantitative results on Kimodo's path-following split.
Free-generation samples on caption “a person walks forward at a neutral pace” conditioned on the hand-drawn paths shown on the ground. The character follows the path while the body GPT freely synthesises the gait.
The trade we make: path accuracy for foot quality. On Kimodo's path-following subset (256 root-XZ testcases), the left chart shows that we match the ground-truth lower bound on 2D root error and beat Kimodo. The right chart shows the other side of the deal: Kimodo still leads on foot-skate and contact consistency. Closing that foot-quality gap is the next step.
2D root error ↓ (cm)
Foot & path quality (0–1 scale)
| model | 2D root error (cm) ↓ | root accuracy (≤ 10 cm) ↑ | foot skate ratio ↓ | foot contact consistency ↑ |
|---|---|---|---|---|
| Ground truth (lower bound) | 3.76 | 1.000 | 0.103 | 1.000 |
| Kimodo-SOMA-SEED-v1.1 | 4.88 | 0.934 | 0.117 | 0.966 |
| Ours ★ | 3.94 | 0.957 | 0.583 | 0.582 |
Our pipeline matches the ground-truth lower bound on root-2D adherence to within two millimetres and undercuts Kimodo by roughly one centimetre (24 percent relative error reduction), with a higher fraction of frames inside the ten-centimetre tolerance (95.7 percent versus 93.4 percent). Kimodo wins decisively on the foot-skate suite: a five-fold lower skate ratio and a 1.66 higher contact consistency. This is the expected trade-off of decoupling: our explicit controller produces a clean world-frame path that the body GPT was not jointly trained to follow, so when the controller-imposed path disagrees with the body's predicted gait the feet slide. Kimodo's diffusion model jointly generates body and root, avoiding the disagreement; the same property is consistent with the VQ-VAE-ceiling foot-skate reported in the VQ-VAE reconstruction ablation. A foot-projection post-processing step would close most of this gap (Kimodo enables one by default) and is left to future work.
Beyond static text-to-motion and constraint following, our pipeline can adapt motion during generation. Because the model is autoregressive, a new text prompt or a new path constraint can be injected mid-rollout and the body GPT continues from there without restarting. The figure below sketches the mechanism; the rest of the section shows it in action and reports the latency that makes it interactive.
At an arbitrary frame the sequence is cut and the last few generated tokens are kept as context. A new condition (a different text prompt, a new path constraint, or both) is then fed to the model, which re-generates the remainder of the sequence from that point. Because the context comes from the already-generated tokens, the transition is smooth rather than an abrupt reset.
We can change what the character does mid-sequence by injecting a new text prompt. For example, starting from "a person walking forward at a steady pace" we can inject "a person sits criss-cross" or "a person starts walking right" and the motion adapts accordingly.
“a person walking forward” → “a person sits criss-cross”
“a person walking forward” → “a person starts walking right”
We can also inject a new path constraint mid-sequence. This is useful when the environment changes, for instance when a new obstacle appears and the character must reroute. We show two cases: waypoints specified manually, and waypoints computed automatically with the A* algorithm to avoid obstacles.
Manual waypoints
A* path around a new obstacle
From caption to motion in 413 ms, or roughly 2.4 clips per second: fast enough to replan the path on the fly during a rollout. The path controller and the body GPT account for 96 % of the wall-clock cost; the CLIP encoder, the VQ decoder and the recompose step are negligible. The second bar shows Kimodo on the same A100 for reference, ≈ 10× slower end-to-end.
| block | ms / clip | % of total |
|---|---|---|
| CLIP caption encoder | 7.40 ± 0.24 | 1.79 |
| Path controller (GRU, 2M parameters) | 179.73 ± 4.45 | 43.47 |
| Body GPT autoregressive sampling (51 tokens, 30M parameters) | 217.00 ± 1.70 | 52.49 |
| VQ decoder | 1.51 ± 0.08 | 0.37 |
| Recompose, time-warp and reprojection (CPU) | 7.76 ± 2.52 | 1.88 |
| Total | 413.40 | 100.00 |
Measured on a single A100 80GB, fp32, batch size 1, 200-frame clip, mean ± standard deviation over 50 runs after 10 warmups. The two autoregressive components dominate: body GPT sampling over 51 tokens (217.00 ms, 52.5 %) and the GRU path controller (179.73 ms, 43.5 %). The CLIP caption encoder (7.40 ms), VQ decoder (1.51 ms) and CPU recompose/reprojection (7.76 ms) together add under 4 % of the total.
Sections 1 to 3 showed that the model can generate motion, follow paths, and adapt online. One question is still open: how much of the text actually makes it into the motion? Here we test captions that chain actions in time (do X, and then Y); a complementary ablation tests simultaneous actions (do X while doing Y). We start from a basic walking prompt and add one modifier at a time:
Up to Level 3 the motion follows the caption: walking, slowing down, stopping. From Level 4 onwards the character no longer stops, the hand-raise and wave are partial, and the "and then" structure is lost. Each action on its own is generated correctly, so the gap is in chaining them: text is a lossy representation of motion when one caption tries to encode an explicit temporal sequence.
Level 1
"a person walks forward"
Level 2
"…walks forward slowly"
Level 3
"…and then stops"
Level 4
"…raises the right hand"
Level 5
"…and waves"
Blue = model captures the prompt correctly · Purple = model fails to follow the prompt
We presented C-T2M, a decoupled autoregressive text-to-motion pipeline that follows user-specified root XZ paths. By delegating path control to a small closed-loop GRU and letting a caption-driven body GPT focus on plausible gait, our method matches Kimodo's constraint-following quality (3.94 cm vs. 4.88 cm 2D root error) at 10× lower latency and 20× fewer effective parameters. Path and gait turn out to be separable problems: our constraint-conditioning ablation shows that four end-to-end variants that try to make the body GPT follow waypoints by itself are dominated by the decoupled design on every metric. The decoupled solution is cheap, modular, and well-suited to online and interactive settings.
Because the VQ-VAE quantises one token per frame, it smooths out the high-frequency detail that keeps the feet pinned to the ground, and that shows up as foot-skating. It is the main remaining gap to Kimodo on the foot-contact suite. A Kimodo-style foot re-projection post-processing step would close most of that gap and is left to future work. The recompose step also assumes a planar floor and a single root XZ trajectory, so it does not yet generalise to end-effector or full-body keyframe constraints. Finally, the path controller currently accounts for almost half of the end-to-end latency; a learned feed-forward controller could replace the closed-loop GRU and remove the largest single latency block.
@misc{ct2m2026,
title = {Controllable Autoregressive Text-to-Motion Generation},
author = {Amargant, Pau and Lopez, Miquel and Pilligua, Maria and Kolhe, Nahush Rajesh},
year = {2026},
note = {CS-503 Project, EPFL},
}