我目前正在探索優化在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