【问题标题】:How do I get the duration of an animation in three js?如何在三个js中获取动画的持续时间?
【发布时间】:2022-01-21 14:49:28
【问题描述】:

如何在three.js中获取动画的时长?

假设我们有一个像这样的样本,

var mixer = new THREE.AnimationMixer(gltf.scene)
gltf.animations.forEach((clip)) => {
 let animation = mixer.clipAction(clip)
animation.setLoop(THREE.LoopOnce)
animation.clampWhenFinished = true
animation.play()
}

【问题讨论】:

    标签: javascript three.js


    【解决方案1】:

    动画的持续时间可以由clip.duration 在forEach 循环内返回。您可以在 AnimationClip 上的 three.js 文档中找到更多相关信息。请记住,这是在几秒钟内返回的。 https://threejs.org/docs/#api/en/animation/AnimationClip.duration

    【讨论】:

    • 这似乎有点问题。当我使用 THREE.Clock() 来获取动画的持续时间时,例如在动画播放时启动时钟并在混音器的完成事件上停止它。它说 2.1 秒,而 clip.duration 返回 1.66 秒。
    • 时钟有一些覆盖。 clip.duration 返回正确的值
    • 时钟需要一些时间才能启动它的计数器。剪辑持续时间甚至在运行动画之前就知道时间,这就是它给出确切时间的原因。
    • 谢谢!它现在完美无缺。还有一件事。如何让动画卡顿运行?这可能很奇怪,但我必须这样做。我尝试了 fps 方法,虽然确实有效,但它也会影响轨道控制,因为它会影响整个场景。我只是想改变动画的帧率。
    • 我不是口吃专家。不过,如果您能接受这个答案是正确的,那就太好了。
    猜你喜欢
    • 2013-08-21
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 2014-06-05
    • 2014-03-27
    • 1970-01-01
    相关资源
    最近更新 更多