Kaifeng Zhao, Mathis Petrovich, Haotian Zhang, Tingwu Wang, Siyu Tang, Davis Rempe
5 min
Abstract
Generating realistic 3D human motions in real-time within interactive applications is key for animation, simulation, and humanoid robotics. While recent offline motion generation approaches offer precise control via text and kinematic constraints, they lack the inference speed required for interactive settings. Conversely, existing online methods enable real-time synthesis but often sacrifice controllability or struggle with complex text semantics and long-horizon goals due to limited context windows. In this work, we introduce ARDY, a streaming generation framework that bridges this gap by enabling high-fidelity motion generation controllable via online text prompts and flexible kinematic constraints. ARDY employs a hybrid representation that combines explicit root features with a latent body embedding, balancing precise trajectory control with efficient generative learning. We propose a two-stage autoregressive transformer denoiser that features variable history context and supports conditioning on flexible, long-horizon kinematic constraints. By training on a large-scale motion capture dataset and being directly conditioned on text labels and kinematic constraints sampled from ground truth poses, ARDY natively learns controllable generation that supports online prompting and flexible long-horizon goals. Extensive evaluations on the HumanML3D benchmark and the large-scale, high-fidelity Bones Rigplay dataset demonstrate ARDY's high motion quality and constraint adherence, validating the efficacy of our key architectural decisions. Finally, we demonstrate the method's practical versatility through an interactive demo featuring dynamic text control, diverse keyframe pose constraints, path following, and interactive locomotion control via mouse and keyboard. Supplementary video results, code, and model releases can be found at https://research.nvidia.com/labs/sil/projects/ardy/.
Sam: So it's not guessing randomly. It's doing a careful, iterative refinement at each moment in time.
Alex: That's right. And it does this in two stages. First, it predicts where the root should go. Then it uses that prediction to guide the generation of the body motion. Because the body always knows where the root is headed, the two stay perfectly in sync—no sliding feet, no jittering limbs.
Sam: That's the key, isn't it? If you tried to generate both at once, they might drift apart. But by doing root first, body second, you guarantee they're always telling the same story.
Alex: Exactly. And all of this happens within about 33 milliseconds—fast enough to feel instantaneous to a player.
Sam: That works for a short burst of movement. But what about longer sequences? If a character needs to walk across a large space over ten seconds, how does the model stay on track without losing the goal?
Alex: This is where the "sliding window" comes in. Think of it like reading a long scroll. You can only see one section at a time, but you never lose track of where the story is going because the goal is always visible at the edge of the window. As the character moves, future waypoints drift into view, and the model continuously updates its plan.
Sam: So it's not trying to memorise the entire ten-second journey at the start. It's constantly re-reading the destination and adjusting.
Alex: Exactly. And that also means it can handle changes mid-motion. If you move a waypoint while the character is already halfway there, the system detects the new input and recalculates the path immediately.
Sam: But wouldn't that cause a stutter? If the computer has to stop and recalculate, the character should freeze for a split second.
Alex: They solve that with a "replan buffer." It's a small stock of pre-generated animation frames kept ready to play at all times—like the buffer in a video streaming app that loads a few seconds ahead so you never see the loading screen. While those buffered frames are playing, the model quietly calculates the new path in the background. The character keeps moving smoothly while the system is thinking. The seam between the old path and the new one is invisible.
Sam: And I'd imagine there's a trade-off in how large you make that buffer?
Alex: There is. A larger buffer gives the model more time to think, which allows for higher-quality, more complex motion. But it also means the character takes slightly longer to respond to rapid changes. Developers can tune that balance depending on what their application needs—it's a dial between responsiveness and motion quality, not a fixed setting.
Sam: What strikes me is that the cleverness here isn't just in the mathematics. It's in how they manage the flow of time and information—splitting the body from the root, buffering against lag, using a sliding window to stay on task.
Alex: That's a fair summary. Each of those design choices addresses a specific failure mode in earlier systems. Taken together, they represent a meaningful step toward digital characters that feel genuinely present and responsive—not just animated, but reactive.
Sam: I'll admit, next time I'm playing a game and a character smoothly sidesteps an obstacle mid-sprint, I'll probably think about the scaffolding holding that moment together.
Alex: That's exactly the right way to think about it. There's a lot of careful engineering behind what looks effortless. Thanks for listening to ResearchPod.