通过调用
从 glTF 资产派生的活动动画。活动动画是指
当前正在播放或由于被添加到模型的
ModelAnimationCollection#add 创建动画。不要直接调用构造函数。
ModelAnimationCollection 中而计划播放的动画。活动动画是动画的一个实例;
例如,同一个 glTF 动画可以有多个活动动画,每个都有不同的开始时间。
Members
animationTime : ModelAnimation.AnimationTimeCallback
如果定义了此属性,它将用于计算本地动画时间,
而不是使用场景时间。
-
Default Value:
undefined
从
ModelAnimation#startTime 到开始播放的延迟时间(以秒为单位)。
-
Default Value:
undefined
readonly loop : ModelAnimationLoop
确定动画是否循环播放以及如何循环播放。
-
Default Value:
ModelAnimationLoop.NONE
大于
1.0 的值会相对于场景时钟速度增加动画播放速度;
小于 1.0 的值会减慢速度。1.0 的值会按照 glTF 动画中映射到场景时钟速度的速度播放动画。
例如,如果场景以 2 倍实时速度播放,一个两秒的 glTF 动画将在一秒内播放完毕,即使 multiplier 为 1.0。
-
Default Value:
1.0
标识此动画在模型中的名称(如果存在)。
当
true 时,动画停止播放后会被移除。
这比不移除它稍微更高效,但如果(例如)时间倒退,动画将不会再次播放。
-
Default Value:
false
When
true, the animation is played in reverse.
-
Default Value:
false
当此动画开始播放时引发的事件。这可以用于
例如,在动画开始时播放声音或启动粒子系统。
此事件在场景渲染后的帧末尾引发。
-
Default Value:
new Event()
Example:
animation.start.addEventListener(function(model, animation) {
console.log(`Animation started: ${animation.name}`);
});
readonly startTime : JulianDate
开始播放此动画的场景时间。当为
undefined 时,
动画将在下一帧开始播放。
-
Default Value:
undefined
当此动画停止播放时引发的事件。这可以用于
例如,在动画停止时播放声音或启动粒子系统。
此事件在场景渲染后的帧末尾引发。
-
Default Value:
new Event()
Example:
animation.stop.addEventListener(function(model, animation) {
console.log(`Animation stopped: ${animation.name}`);
});
readonly stopTime : JulianDate
停止播放此动画的场景时间。当为
undefined 时,
动画将播放其完整时长,并可能根据
ModelAnimation#loop 重复播放。
-
Default Value:
undefined
每帧更新此动画时引发的事件。当前动画时间(相对于 glTF 动画时间范围)
会传递给该事件,这允许例如在播放动画的特定时间启动新动画。
此事件在场景渲染后的帧末尾引发。
-
Default Value:
new Event()
Example:
animation.update.addEventListener(function(model, animation, time) {
console.log(`Animation updated: ${animation.name}. glTF animation time: ${time}`);
});
Type Definitions
用于计算 ModelAnimation 本地动画时间的函数。
| Name | Type | Description |
|---|---|---|
duration |
number | 动画的原始时长(以秒为单位)。 |
seconds |
number | 动画开始后的秒数(场景时间)。 |
Returns:
返回本地动画时间。
Examples:
// 使用实时进行模型动画(假设 animateWhilePaused 设置为 true)
function animationTime(duration) {
return Date.now() / 1000 / duration;
}
// 偏移动画的相位,使其在周期中途开始。
function animationTime(duration, seconds) {
return seconds / duration + 0.5;
}
