Interface: FilamentAnimator
Updates matrices according to glTF animation and skin definitions.
Animator can be used for two things:
- Updating matrices in filament::TransformManager components according to glTF animation definitions.
- Updating bone matrices in filament::RenderableManager components according to glTF skin definitions.
For a usage example, see the documentation for AssetLoader.
Methods
addToSyncList()
addToSyncList(
instance
):number
Will apply all transforms of the animation to the same entities/bones when calling updateBoneMatrices
.
This is useful if you have multiple assets sharing the same skeleton and you want to animate them in sync (e.g. clothing).
Internally calls applyAnimationToInstance.
Parameters
• instance: FilamentInstance
Returns
number
The id of the instance in the sync list.
Note
Entities / bones are identified by name.
Defined in
applyAnimation()
applyAnimation(
animIndex
,time
):void
Applies rotation, translation, and scale to entities that have been targeted by the given animation definition. Uses filament::TransformManager.
Parameters
• animIndex: number
• time: number
Elapsed time of interest in seconds.
Returns
void
Defined in
applyCrossFade()
applyCrossFade(
previousAnimIndex
,previousAnimTime
,alpha
):void
Applies a blended transform to the union of nodes affected by two animations. Used for cross-fading from a previous skinning-based animation or rigid body animation.
First, this stashes the current transform hierarchy into a transient memory buffer.
Next, this applies previousAnimIndex / previousAnimTime to the actual asset by internally calling applyAnimation().
Finally, the stashed local transforms are lerped (via the scale / translation / rotation components) with their live counterparts, and the results are pushed to the asset.
To achieve a cross fade effect with skinned models, clients will typically call animator methods in this order: (1) applyAnimation (2) applyCrossFade (3) updateBoneMatrices. The animation that clients pass to applyAnimation is the "current" animation corresponding to alpha=1, while the "previous" animation passed to applyCrossFade corresponds to alpha=0.
Parameters
• previousAnimIndex: number
• previousAnimTime: number
• alpha: number
Returns
void
Defined in
getAnimationCount()
getAnimationCount():
number
Returns the number of animation definitions in the glTF asset.
Returns
number
Defined in
getAnimationDuration()
getAnimationDuration(
animIndex
):number
Returns the number of animation definitions in the asset.
Parameters
• animIndex: number
Returns
number
Defined in
getAnimationName()
getAnimationName(
animIndex
):string
Returns the name of the specified animation, or an empty string if none was specified.
Parameters
• animIndex: number
Returns
string
Defined in
removeFromSyncList()
removeFromSyncList(
instanceId
):void
Will remove the instance from the sync list.
Parameters
• instanceId: number
Returns
void
Defined in
resetBoneMatrices()
resetBoneMatrices():
void
Pass the identity matrix into all bone nodes, useful for returning to the T pose.
NOTE: this operation is independent of animation.
Returns
void
Defined in
updateBoneMatrices()
updateBoneMatrices():
void
Computes root-to-node transforms for all bone nodes, then passes the results into filament::RenderableManager::setBones. Uses filament::TransformManager and filament::RenderableManager.
NOTE: this operation is independent of animation.
Returns
void