Your cues. One coherent motion.

AnimateCanvas

Learning Implicit Motion Planning from Composable Kinematic Cues

Specify the moments that matter. AnimateCanvas organizes a coherent full-body action around them—connecting key poses, routes, local controls, and editable motion context in one model.

A character following a curved route under local kinematic control Full film 02:38 · with narration
A route says where to travel; a local cue shapes one body part. The model coordinates the rest.

Kinematic cues specify parts of an action. AnimateCanvas infers a coherent full-body trajectory through these partial motion states, coordinating the motion between and around them.

Position Rotation To generate

Full video

See the canvas in motion.

A continuous character demonstration, from drawing a route to directing a jump or a gesture, with an introduction to the method. English narration and captions are included.

02:38 · 30 fps · English narration & captions
1080p MP4Official credited editions ↗
Read the narration transcript

Creating character animation takes more than a text prompt. Artists sketch routes, place poses, direct body parts, and preserve existing motion. AnimateCanvas represents position and rotation cues on a shared motion canvas. A shared flow model coordinates the motion. Cue imputation preserves the specified canvas values throughout generation.

A dense route specifies where to travel. A local wrist cue controls one body part without specifying the rest of the motion. Sparse foot targets and root-heading constraints leave the transitions open. AnimateCanvas connects them with a continuous, coordinated gait. Position and rotation cues can be combined across body parts and time within a single motion. A few pose and trajectory cues shape the jump, while the model completes its timing and whole-body coordination.

An existing motion can also serve as editing context. Here, the original motion provides editing context, while language changes the gesture to wave the right hand. The edited motion follows the instruction while maintaining a coherent surrounding action. Compatible cues share the same motion canvas, so one generator can complete motion under their combined constraints.

Local targets guide the strike, while the model coordinates stance, timing, and recovery. This is cue-conditioned implicit motion planning: connecting the partial states prescribed by cues into one coherent full-body trajectory. Here, we provide the hoop position at the dunk time. AnimateCanvas plans the full motion around it. Thank you for watching.

Goodbye.

Character showcase

Composable cues.
Coherent full-body motion.

Six moments from the full film. Each highlights what is specified—and what the character must coordinate around it.

01 / Route & local control

Follow a path. Coordinate the body.

A prescribed route guides travel; a wrist cue adds a local target to the same motion.

02 / Footsteps & heading

Anchor the steps, connect the gait.

Foot targets and facing constraints leave the intervening motion to the model.

03 / Pose & trajectory

Shape an action through its cues.

A jump combines pose and path constraints with whole-body coordination.

04 / Language-guided editing

“Wave with the right hand.”

An existing motion provides context; language directs the change in gesture.

05 / Composed kinematic cues

A target for the strike.

Local cues guide the hands as the body coordinates stance and recovery.

06 / Timed spatial target

Meet the hoop at the right moment.

The hoop position is supplied at the dunk time to guide the complete action.

These clips are excerpts from the rendered demonstration. Benchmark samples and their evaluation viewers are provided below.

From the benchmarks

Different cue sets.
One motion model.

24 AnimateCanvas inference cases: four per benchmark, from temporal and body-part control to sequential generation, instruction editing, style–content editing, and text-to-motion. Each includes the input and its source viewer.

24 examples · 4 per benchmark

Temporal control Amber poses are supplied; blue poses are generated.

Body-part control An orange wrist marker identifies the controlled joint at cue frames.

Editing Input motion is on the left; the AnimateCanvas edit is on the right.

Temporal control · HumanML3D

Continue from a starting pose

Input First frame + text

Continue a golf swing from one supplied pose.

Inspect case 014457

Body-part control · HumanML3D

Coordinate an arm-crossing gesture

Input Sparse left-wrist position targets + text

Cross both arms in front of the chest, then lower them, guided by sparse left-wrist targets.

Inspect case 001014

Sequential generation · BABEL

Connect standing, walking, and stopping

Input Stand → walk left → stop and stand

Follow three timed action descriptions with a continuous start, sideways walk, and stop.

Inspect case val_6604

Style editing · Style–content benchmark

Change style, retain the action

Input Input motion + “Perform hop in the angry style”

Keep the hopping action while changing its expressive style.

Source viewer · select style case 0000

Text-to-motion · HumanML3D

Start with language alone

Input Text only · no kinematic cues

Generate a walk with swagger directly from its description.

Inspect case 004822

Temporal control · HumanML3D

Fill between sparse keyframes

Input Nonuniform keyframes + text

Reconstruct the intervening action around scattered pose cues.

Inspect case 003424

Body-part control · HumanML3D

Guide one wrist, complete the body

Input Sparse left-wrist position cues + text

Guide a left-handed wave with sparse local targets.

Inspect case 007995

Sequential generation · BABEL

Connect three timed actions

Input Walk forward → lift → walk back

Connect three timed action descriptions in a continuous motion.

Inspect case val_7982

Content editing · Style–content benchmark

Change action, retain the style

Input Input motion + “Change the action to walk while keeping the same style”

Change hopping into walking while retaining the input style.

Source viewer · select content case 0002

Text-to-motion · HumanML3D

Cross and lower the arms

Input Text only · no kinematic cues

“A person crosses their arms then uncrosses them.”

Inspect case 014477

Temporal control · HumanML3D

Connect the endpoints

Input First and last frames + text

Complete the motion between the two endpoint poses.

Inspect case 008463

Body-part control · HumanML3D

Coordinate a kick with raised hands

Input Sparse left-wrist position cues + text

Raise both hands while lifting and extending one leg.

Inspect case 013451

Sequential generation · BABEL

Rise from sitting

Input Sit → stand up → stand still

Complete the transition from a seated pose to a steady standing pose.

Inspect case val_3823

Instruction editing · MotionFix

Add a downward reach

Input Input motion + “Reach downwards with left hand at the end”

Change the ending with a local gesture specified in language.

Source viewer · select case 0010

Style–content editing · Style–content benchmark

Hop with an elegant style

Input Input motion + “Perform hop in the elegant style”

Retain hopping while changing the posture and expressive style.

Source viewer · select style case 0011

Text-to-motion · HumanML3D

Wave with the left hand

Input Text only · no kinematic cues

“A person slowly waves with their left hand twice.”

Inspect case 007995

Temporal control · HumanML3D

Continue without language

Input First 20% of frames · no text

Infer the continuation from motion context alone.

Inspect case 009613

Body-part control · HumanML3D

Lift and place to the side

Input Sparse left-wrist position cues + text

Lift with both hands, move to the right, and lower the hands.

Inspect case 006199

Sequential generation · BABEL

Jump and settle

Input Stand → jump → stand

Connect preparation, a two-foot jump, and recovery in one sequence.

Inspect case val_3002

Style–content editing · Style–content benchmark

Change jumping into hopping

Input Input motion + “Change the action to hop while keeping the same style”

Change the action while retaining the input’s angry style.

Source viewer · select content case 0000

Text-to-motion · HumanML3D

Rehearse a throw

Input Text only · no kinematic cues

“A person practices throwing an object.”

Inspect case 010940

Method at a glance

Kinematic cues on one shared motion canvas.

The motion canvas stores cue values and a generation mask across joints and time. One shared flow-matching model generates motion conditioned on this canvas, with optional language and input motion. Cue imputation restores the specified canvas values after each sampling step.

01 Compose kinematic cues 02 Generate motion jointly 03 Preserve cue values
Enlarged AnimateCanvas method pipeline