A skinned glTF character loaded from a CDN. States (Idle / Walk / Run / Dance…) cross-fade smoothly; emotes play once then return; expressions drive morph targets. One AnimationMixer, many clips.
Model: RobotExpressive (Khronos / three.js examples) streamed from jsDelivr. Each clip becomes an AnimationAction; switching states calls fadeOut/fadeIn for a seamless blend. Emotes use LoopOnce + clampWhenFinished and a finished event to return.