three.js 场景中的多个镜像会降低性能
Multiple mirrors in a three.js scene kills performance
基于 mirror example in three.js, I have recreated a good old praxinoscope "movie projector",其中一列镜子反射一小段图像以营造运动的错觉。
在 three.js 的 84 版本中,这非常有效。
使用 v84 的示例:https://codepen.io/Sphinxxxx/pen/eEbjba
然而,在 85 版本中,Mirror.js 发生了一些变化,在后来的版本中,所有的镜子(在本例中为 8 个镜子)使 praxinoscope 非常慢(低 FPS)。
使用 v87 的示例:https://codepen.io/Sphinxxxx/pen/vJvozR
我怀疑缓慢的性能与大量递归调用和不必要的渲染有关,从 Mirror.js
调用 onBeforeRender()
函数开始。堆栈跟踪:
如果您查看代码,会在 addMirrorAndImage()
函数中创建并添加镜像。是否有更好的方法来添加镜像,或提供与旧版本(v85 之前)相同性能的其他技巧?
已在 v88 中修复(Mirror
重命名为 Reflector
):https://codepen.io/Sphinxxxx/pen/dZYKwP
基于 mirror example in three.js, I have recreated a good old praxinoscope "movie projector",其中一列镜子反射一小段图像以营造运动的错觉。
在 three.js 的 84 版本中,这非常有效。
使用 v84 的示例:https://codepen.io/Sphinxxxx/pen/eEbjba
然而,在 85 版本中,Mirror.js 发生了一些变化,在后来的版本中,所有的镜子(在本例中为 8 个镜子)使 praxinoscope 非常慢(低 FPS)。
使用 v87 的示例:https://codepen.io/Sphinxxxx/pen/vJvozR
我怀疑缓慢的性能与大量递归调用和不必要的渲染有关,从 Mirror.js
调用 onBeforeRender()
函数开始。堆栈跟踪:
如果您查看代码,会在 addMirrorAndImage()
函数中创建并添加镜像。是否有更好的方法来添加镜像,或提供与旧版本(v85 之前)相同性能的其他技巧?
已在 v88 中修复(Mirror
重命名为 Reflector
):https://codepen.io/Sphinxxxx/pen/dZYKwP