2013-04-08 57 views
1

我目前正在探索优化在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导入方法如此之慢(我认为预生成几何图形将节省大量时间)。

有没有其他方法可以加快速度?

+0

自定义数组缓冲区下载到缓冲几何? http://threejs.org/examples/webgl_buffergeometry.html – 2013-04-08 13:05:18

+0

谢谢Ben。我以前看过缓冲几何的东西,但对其实际使用还不够了解。你知道在这种情况下(在我花费大量时间学习/构建解决方案之前)缓冲几何图形会更快吗? – 2013-04-08 13:09:51

+0

它当然是一个虚拟的野兽,因为它的原始顶点和痕迹而不是物体。不知道什么会更好地在客户端或通过网络构建BufferedGeomerty,但是JSON非常罗嗦,所以如果您发送12.345679091的浮点数(12字节加逗号等)作为Float32Array,它将为4个字节。 对于加载,它已经在格式为gfx卡(忽略可能的排序问题),所以在网络流量后,您的加载或多或少已经完成。而对象构造必须创建大量的js对象,然后从中创建要加载的缓冲区。 – 2013-04-08 14:06:43

回答

2

我对你的结果并不感到惊讶。我敢打赌,你也会得到更大的内存空间与自定义几何以及...

BufferedGeometry肯定会加快加载自定义几何。但我不确定你会比在运行中生成几何图形更快。而这一代人的好处是,你可以对流程进行动画处理,以便用户看到场景在他们面前呈现。你可以打破你的自定义几何体,做类似于我们在Verold Studio中加载多部分对象时所做的事情,以产生类似效果,但是对生成的场景有更多的控制。

我还建议你看看你的基准测试中的内存,CPU和网络速度。针对您的特定配置进行优化可能会导致您找到一条可以提高性能的路径,但不会为您的用户带来好处。在方法中肯定存在折衷,您可以在服务器上进行更多的预计算以换取更多的网络流量等。确保您独立测量所有因素 - 而不仅仅是配置的速度。

相关问题