Turn first. Then let the step speak.
A movement input is a direction, not an instantaneous rotation. Compare a shortest-path Euler turn, a bounded quaternion turn, and a semantic footstep clock that is explicit about its authored data.
Loading the locomotion clip and orientation study lanes.
- Target
- -
- Euler error
- -
- Quaternion error
- -
- Steps
- -
The target heading is shared by all lanes; only the orientation policy changes.
- Euler yaw
- -
- Euler step
- -
- Quat yaw
- -
- Quat step
- -
- LookAt yaw
- -
- LookAt step
- -
Euler uses wrapped yaw plus a maximum angular delta. Quaternion uses
setFromUnitVectors() and rotateTowards().
The event lane uses Object3D.lookAt() for a deliberately
instant comparison.
- Phase
- -
- Last event
- -
- Event count
- -
- Mixer loops
- -
Waiting for the first authored footstep event.
The GLB provides pose tracks but no semantic event track. This explicit phase schedule is the gameplay data that turns a loop into a footstep event.
AnimationMixer updates the pose clock; the orientation controller and semantic event schedule remain application policy.
Try ?forceWebGL=1 for a WebGL2 comparison. The authored
schedule is intentionally labeled study data; it is not extracted
from the RobotExpressive GLB.