THREE.JS / FOUNDATIONS 101

A walk cycle is not movement.

Compare a character that only animates, one moved by gameplay code, and one driven by an extracted motion channel. The distinction lives in the scene graph, not inside a magical animation setting.

Initializing -

Auditing the loaded clip before comparing three movement policies.

Phase
-
Body track
-
Root track
-
Clips
-
Source motion auditchecking
Duration
-
Keyframes
-
Local position
-
Scene root
-

A glTF clip may animate a bone or body node without carrying world travel.

Visual-only playback-

The model pose changes, but its parent stays at the same world position.

World Z
-
Phase
-

This is the common “the legs move but the character does not travel” baseline.

Authored root movement-
0.70
World Z
-
Phase
-
Velocity
-
Direction
-

The action supplies a phase; ordinary application code owns position, speed, boundaries, and direction.

Extracted motion channel-
0.80
Accumulated Z
-
Proxy Z
-
Cycles
-
Distance/cycle
-

A synthetic proxy track is sampled, its per-frame delta is accumulated on the parent, and the proxy is never presented as world travel.

Three movement policies
pose clip+phase->visual pose+root policy->world travel

The source RobotExpressive walk has a Body.position track but no scene-root position track; this study keeps that limitation visible.

The extracted lane deliberately uses a synthetic proxy track because the source asset does not include scene-root travel. Add ?forceWebGL=1 for a WebGL2 comparison.

Back to the study index ->
LAB 101 / ROOT MOTION