Link Search Menu Expand Document

Animation Mixer

A list of available animations can usually be found by inspecting the model file or its documentation. All animations will play by default. To play only a specific set of animations, use wildcards: animation-mixer=’clip: run_*’.

More properties at A-Frame Extras Animation.

To animate a GLTF model (see GLTF Files for how to find animation names), and set the animation-mixer parameter.

The clip asterisk means “play all animations”, and works better in some situations, where other times the name of a specific animation in the GLTF file works (or maybe several in sequence).

Additional Python properties are available in the AnimationMixer API Reference.

The following source code was mirrored from the arena-py animation_mixer.py example.

from arena import *

scene = Scene(host="arenaxr.org", scene="example")

animation_mixer_wave = AnimationMixer(
    clip="wave",
    loop="once",
)
animation_mixer_rotate = AnimationMixer(
    clip="rotate",
    loop="once",
)
animation_mixer_all = AnimationMixer(
    clip="*",
)

t = 0
xr_logo = GLTF(
    object_id="xr-logo",
    position=(0, 2, -5),
    scale=(1.0, 1.0, 1.0),
    url="store/users/wiselab/models/XR-logo.glb",
    persist=True,
)

@scene.run_forever(interval_ms=2000)
def wave_or_rotate():
    global t

    if t % 2 == 0:
        # Trigger a "wave" animation
        xr_logo.dispatch_animation(animation_mixer_wave)
        scene.run_animations(xr_logo)
        print("wave")
    else:
        xr_logo.dispatch_animation(animation_mixer_rotate)
        scene.run_animations(xr_logo)
        print("rotate")

    t += 1

scene.run_tasks()