useAnimations
useAnimations is a composable that returns a shallowReactive with all the models actions based on the animations provided. It is a wrapper around the AnimationMixer class.
Usage
Basic Usage (Automatic Updates)
By default, useAnimations automatically updates the animation mixer on each frame using the useLoop composable:
ts
import { useAnimations, useGLTF } from '@tresjs/cientos'
const { state } = useGLTF('/models/ugly-naked-bunny.gltf')
const animations = computed(() => state.value?.animations || [])
const model = computed(() => state?.value?.scene)
const { actions } = useAnimations(animations, model)
const currentAction = ref()
watch(actions, (newActions) => {
currentAction.value = newActions.Greeting
currentAction.value.play()
})Manual Updates
For more control over when the animation mixer updates, you can set manualUpdate: true and handle the updates yourself:
ts
import { useAnimations, useGLTF } from '@tresjs/cientos'
import { useLoop } from '@tresjs/core'
const { state } = useGLTF('/models/ugly-naked-bunny.gltf')
const animations = computed(() => state.value?.animations || [])
const model = computed(() => state?.value?.scene)
const { actions, mixer } = useAnimations(animations, model, {
manualUpdate: true,
})
// Handle updates manually
const { onBeforeRender } = useLoop()
onBeforeRender(({ delta }) => {
mixer.value.update(delta)
})
const currentAction = ref()
watch(actions, (newActions) => {
currentAction.value = newActions.Greeting
currentAction.value.play()
})Options
manualUpdate(optional): When set totrue, disables automatic animation mixer updates. You'll need to callmixer.value.update(delta)manually. Default isfalse.