Works with the AI tools you already use

    Claude CodeClaude CodeCursorCursorCodex CLICodex CLIGitHub CopilotGitHub CopilotGemini CLIGemini CLI+20 more

    Three.js Motion Orchestration

    1

    Play, blend, and optimize Three.js animations — GLB clips, skeletal rigs, morphs, and procedural motion — without the usual mixer pitfalls.

    Free

    0 installsSecurity scanned
    Three.js Motion Orchestration

    Three.js Motion Orchestration

    Example session with this skill installed

    My character.glb has Idle, Walk, and Run clips loaded in scene.js, but the model just sits frozen at frame zero and the console throws nothing. Later I also want a subtle breathing layer over the walk and a camera that damp-follows the character. Can you diagnose the mixer setup, get the clips actually playing, wire a speed-based blend where walk and run crossfade instead of snapping, add the additive breathe layer, and make sure I'm not paying for animation updates on characters that are off screen? Please patch the existing files, don't rewrite my scene.

    • Read your context and instructions
    • Compiled the three js motion

    Summary

    Diagnosed the frozen character in scene.js: the mixer was created but never updated in the render loop, and clip lookup used array indexes that didn't match the export order. Rebuilt playback around a named action registry, a weight-based idle/walk/run blend with crossfades, an additive Breathe layer, and off-screen pausing.

    MetricBeforeAfter
    mixer.update(dt) calls per frame0 (frozen)1 shared root mixer
    Idle to Walk transitionhard pop0.35s crossFadeTo
    Clip lookupanimations[1], [2] guessworkfindByName + Map registry
    BreathingnoneAdditiveAnimationBlendMode layer
    Off-screen rigsstill animatingpaused via visibility gate
    Avg frame time (6 characters)14.8 ms11.1 ms
    const registry = Object.fromEntries(clips.map(c => [c.name, mixer.clipAction(c)]));
    function blend(speed) {
      const w = THREE.MathUtils.clamp(speed / 5, 0, 1);
      registry.Idle.setEffectiveWeight(1 - w);
      registry.Walk.setEffectiveWeight(w);
    }
    

    Next steps

    • Extract a clean 24-frame walk cycle with AnimationUtils.subclip and call optimize() once at load
    • Set clampWhenFinished on one-shot clips so they don't snap back to rest
    • Move facial morph weights into a small expression controller instead of scattering them per-system

    Connects securely to your tools. The creator never sees your data.

    About this skill

    Broken animation loops, jittery transitions, and silent keyframe failures stall most Three.js projects. This skill provides the precise logic for managing the Three.js animation system, covering everything from basic GLB clip playback to complex additive blending and procedural spring motion.

    What it does

    • Clip management Plays, pauses, and syncs THREE.AnimationClip data using the mixer.
    • State blending Handles smooth crossfades between locomotion states like idle, walk, and run.
    • Skeletal control Drives bone hierarchies directly or attaches props to specific rig points.
    • Morph targets Animates mesh deformations and facial expressions using weight dictionaries.
    • Procedural motion Implements spring physics, critical damping, and mathematical oscillators.
    • Asset optimization Trims and compresses dense keyframe data to reduce memory overhead.

    How it works

    1. Initialize Create a THREE.AnimationMixer targeting your root object or GLTF scene.
    2. Configure Define THREE.AnimationAction parameters for looping, time scales, and weights.
    3. Execute Update the mixer within your main requestAnimationFrame loop using delta time.
    4. Extend Layer additive clips or procedural bone rotations on top of existing authored animations.

    Frameworks & tools

    Built for Three.js. Compatible with GLTFLoader, skeleton rigs, and morph target systems.

    Why this beats prompting it yourself

    Standard LLMs often forget to update the mixer, mangle quaternion arrays, or fail to handle the hierarchy mismatches common in GLTF imports. This skill enforces correct track paths and provides boilerplate for the tricky math behind springs and dampers.

    Use cases

    • Character controllers Building state machines for third-person player movement.
    • UI transitions Creating spring-based 3D button interactions and hover effects.
    • Facial animation Syncing lip-sync morphs or eye-blinks with procedural noise.
    • Data visualization Animating graph nodes or complex mechanical assemblies.

    Known limitations

    Does not include a full physics engine integration like Cannon.js or Rapier. Requires a basic understanding of the Three.js render loop.

    How to install

    Works the same in every agent - Claude, Cursor, Codex, Copilot and 20+ more.

    ~30 seconds
    1. 1

      Download the ZIP

      Free skills download straight away. Paid skills unlock right after purchase.

    2. 2

      Unzip into your skills folder

      Every agent reads skills from one folder on your machine. Drop the unzipped folder in there.

    3. 3

      Ask your agent to use it

      Restart the agent if it was already running. It picks the skill up automatically - no config needed.

    Skills folder by agent

    Click the path to copy it. Create the folder if it does not exist yet.

    Reviews

    No reviews yet

    Be one of the first to try it. Every listed skill passes our trust checks below.

    Security scanned

    Passed our 8-point scan before listing

    Fresh listing

    Recently published to Agensi

    Free forever

    No account required to browse

    Trust & safety

    Security scanned

    Verified clean 5 days ago

    • Free to download with an account

    Listed5 days ago

    What's inside

    Frequently Asked Questions