我目前正在探索优化在Three.js中加载/生成大量对象所用时间的方法。这些对象的输入是构成2D足迹的各个顶点。在Three.js中加载大量对象的最快方法?
我使用的初始方法是从各个顶点创建对象THREE.Shape
,然后使用THREE.ExtrudeGeometry
将2D形状拉成3D对象。这样做所有对象需要大约3500毫秒。
我研究过的第二种方法是使用JSON model format将生成的3D对象(从前面的方法)预导出为JSON文件,然后在需要时导入该JSON文件,而不是在运行时生成对象。只需导入和加载此JSON表示大约需要3800毫秒,这比在运行时生成对象要长!
我想知道在Three.js中加载/生成对象的最快方法是什么。我对如何加速THREE.Shape
和挤出方法感到茫然,我不确定为什么JSON导入方法如此之慢(我认为预生成几何图形将节省大量时间)。
有没有其他方法可以加快速度?
自定义数组缓冲区下载到缓冲几何? http://threejs.org/examples/webgl_buffergeometry.html – 2013-04-08 13:05:18
谢谢Ben。我以前看过缓冲几何的东西,但对其实际使用还不够了解。你知道在这种情况下(在我花费大量时间学习/构建解决方案之前)缓冲几何图形会更快吗? – 2013-04-08 13:09:51
它当然是一个虚拟的野兽,因为它的原始顶点和痕迹而不是物体。不知道什么会更好地在客户端或通过网络构建BufferedGeomerty,但是JSON非常罗嗦,所以如果您发送12.345679091的浮点数(12字节加逗号等)作为Float32Array,它将为4个字节。 对于加载,它已经在格式为gfx卡(忽略可能的排序问题),所以在网络流量后,您的加载或多或少已经完成。而对象构造必须创建大量的js对象,然后从中创建要加载的缓冲区。 – 2013-04-08 14:06:43