Javascript 加快3.js速度的途径

Javascript 加快3.js速度的途径,javascript,3d,three.js,webgl,Javascript,3d,Three.js,Webgl,我正在用THREE.js编写一个简单的minecraft克隆 然而,结果非常滞后 我正在为体素使用长方体几何体,但我需要在断开块时移除块,并且需要使用鼠标拾取 我听说连接几何体可以加快速度,但据我所知,这意味着不能删除任何体素或使用鼠标拾取 在THREE.js中还有哪些加速方法?在任何机器上使用每个体素一个方框(每个体素一个绘图调用)都会太慢,即使是用汇编语言编写的 您需要为世界的每个部分构建网格。如中所示,将世界划分为48x48x48个单元块,并构建一个包含该区域中所有体素的网格。当用户编辑长

我正在用THREE.js编写一个简单的minecraft克隆

然而,结果非常滞后

我正在为体素使用长方体几何体,但我需要在断开块时移除块,并且需要使用鼠标拾取

我听说连接几何体可以加快速度,但据我所知,这意味着不能删除任何体素或使用鼠标拾取

在THREE.js中还有哪些加速方法?

在任何机器上使用每个体素一个方框(每个体素一个绘图调用)都会太慢,即使是用汇编语言编写的


您需要为世界的每个部分构建网格。如中所示,将世界划分为48x48x48个单元块,并构建一个包含该区域中所有体素的网格。当用户编辑长方体时,您编辑网格(顶点),而不是删除长方体对象。

您应该只渲染可见块,并将其他块存储在数据存储中(就像在真实的Minecraft中一样;只渲染块的外部可见顶点,这就是为什么会有称为X射线纹理包的东西,看看它,你就会明白我的意思,有洞穴系统可见,因为有块暴露在世界上)。我怀疑使用THREE.js geometry不够快,即使有cpu帮助进行可见性剔除。您需要准备绘制类似5K平面(而不是立方体)的图形每一帧和这些数据可能需要每一帧更新。如果你不需要支持无限世界/你的世界是静态的,那么你最好的希望是将你的世界合并成一个大网格(我相信这就是缓冲几何)当你需要改变一个体素时,想出一种方法来更新网格的一部分。但在这一点上,你最好直接用WebGL来做。如果你不使用THREE.js也可以,我可以给你一些关于如何用WebGL来做的建议,因为我一直在用一个体素引擎作为一个辅助项目。