通过调用
从 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 倍实时播放,则 2 秒的 glTF 动画
即使乘数
为 1.0
,也会在 1 秒内播放。
-
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
开始播放此动画的场景时间。当 this
undefined
时,
动画从下一帧开始。
-
Default Value:
undefined
此动画停止时触发的事件。 这可用于
例如,在动画停止时播放声音或启动粒子系统。
此事件在场景渲染后的帧结束时触发。
-
Default Value:
new Event()
Example:
animation.stop.addEventListener(function(model, animation) {
console.log(`Animation stopped: ${animation.name}`);
});
readonly stopTime : JulianDate
停止播放此动画的场景时间。当
this 未定义
时,
动画将在整个持续时间内播放,并且可能会重复播放,具体取决于
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:
// 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;
}