THREE.js在不使用时暂停动画

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了THREE.js在不使用时暂停动画相关的知识,希望对你有一定的参考价值。

我正在用React构建我的THREE.js应用程序,我有两个组件,一个用THREE.js制作的轮播场景和一个全屏覆盖场景。显示叠加层时,我想暂停旋转木马场景,因为它根本不可见。

目前,我只是用window.cancelAnimationFrame取消动画框架,但我注意到网上的几个片段,人们往往只是设置一个像stoptrue的变量,然后在update循环内,它会是这样的:

update() {
  if (this.stop)
  this.renderer.render(this.scene, this.camera);
  this.frameId = window.requestAnimationFrame(this.update);
}

我想知道其中一个是否有比另一个更好的表现?就像取消和重新启动动画帧一样,比仅仅保持动画循环更昂贵。

答案

显然,使用cancelAnimationFrame会有更好的性能,因为你的处理器不必执行该功能并每秒检查this.stop 60次。然而,现代处理器是如此强大,运行一个简单的if()声明是微不足道的,你的性能差异将是微不足道的。

这两个选项都可以解决您的问题,因此给出答案更多的是意见问题,这超出了Stack Overflow的范围。

以上是关于THREE.js在不使用时暂停动画的主要内容,如果未能解决你的问题,请参考以下文章

使用WebGL + Three.js制作动画场景

基本的three.js collada蒙皮动画

使用 Three.js ObjectLoader 正确渲染动画

在three.js中播放特定部分的网格动画

Three.js导入gltf模型和动画

使用vue学习three.js之创建动画-变形动画-通过设置morphTargetInfluences属性创建动画