Animates a device model to match its current input state. The buttons and joysticks on a controller will move as they're pressed/moved and hand models will move to match skeletal input.

The model should have been created using lovr.headset.newModel with the animated flag set to true.

success = lovr.headset.animate(device, model)


deviceDeviceheadThe device to use for the animation data.
modelModelThe model to animate.


successbooleanWhether the animation was applied successfully to the Model. If the Model was not compatible or animation data for the device was not available, this will be false.


Currently this function is supported for OpenVR controller models and Oculus hand models.

This function may animate using node-based animation or skeletal animation. Model:hasJoints can be used on a Model so you know if a Shader with the animated ShaderFlag needs to be used to render the results properly.

It's possible to use models that weren't created with lovr.headset.newModel but they need to be set up carefully to have the same structure as the models provided by the headset SDK.

See also