从 glTF 资产派生的活动动画。活动动画是由于添加到模型的
ModelExperimentalAnimationCollection
中而正在播放或计划播放的动画。活动动画是动画的一个实例;例如,同一个 glTF 动画可以有多个活动动画,每个动画都有不同的开始时间。
通过调用
ModelExperimentalAnimationCollection#add
创建它。
Members
animationTime : ModelExperimentalAnimation.AnimationTimeCallback
如果已定义,它将用于计算本地动画时间而不是场景时间。
-
Default Value:
undefined
从
ModelExperimentalAnimation#startTime
开始播放的延迟(以秒为单位)。
-
Default Value:
undefined
确定动画是否循环以及如何循环。
-
Default Value:
ModelAnimationLoop.NONE
大于
1.0
的值会增加动画相对于场景时钟速度的播放速度;小于
1.0
的值会降低速度。值
1.0
以 glTF 动画中映射到场景时钟速度的速度播放动画。例如,如果场景以 2x 实时播放,即使
multiplier
为
1.0
,也会在一秒内播放两秒的 glTF 动画。
-
Default Value:
1.0
在模型中标识此动画的名称(如果存在)。
当为
true
时,动画在停止播放后被移除。这比不删除它稍微更有效,但是如果,例如,时间倒转,动画就不会再次播放。
-
Default Value:
false
当
true
时,动画反向播放。
-
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
时,动画会播放完整的持续时间,并且可能会根据
ModelExperimentalAnimation#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
用于计算 ModelExperimentalAnimation 的本地动画时间的函数。
Name | Type | Description |
---|---|---|
duration
|
Number | 动画的原始持续时间(以秒为单位)。 |
seconds
|
Number | 动画开始后的秒数,以场景时间为单位。 |
Returns:
返回本地动画时间。
Examples:
// Use real time for model animation (assuming animateWhilePaused was set to true)
function animationTime(duration) {
return Date.now() / 1000 / duration;
}
// Offset the phase of the animation, so it starts halfway through its cycle.
function animationTime(duration, seconds) {
return seconds / duration + 0.5;
}