我試圖抓住新的THREE.InstancedBufferGeometry功能如何工作,所以我可以評估它爲我的用例。具體來說,我需要一種方法,可以在將來的某個時間點添加對象的新實例,並通過它們的屬性更新它們,但是我不知道在初始設置期間需要添加多少個對象。理想情況下,我希望在安裝期間和屬性更新期間對GPU執行儘可能少的調用,這就是THREE.InstancedBufferGeometry看起來很吸引人的原因。如何使用THREE.InstancedBufferGeometry動態添加和刪除對象?
我知道如何對象可以一次加入,並有自己的屬性動態更新,按照這些演示:
- http://threejs.org/examples/#webgl_buffergeometry_instancing_dynamic
- http://threejs.org/examples/#webgl_buffergeometry_instancing_interleaved_dynamic
我不清楚是什麼是否可以在創建初始批次後動態添加和刪除對象,以及是否可以在Three.js中合併幾何圖形的工作方式,而不是真正可以輕鬆刪除特定的單一對象合併後的對象。
爲了保持這一點,我將如何使用THREE.InstancedBufferGeometry動態添加和刪除對象?
感謝本,清除它。爲了將我的觀點帶回家(因爲我對緩衝幾何圖形仍然陌生);如果我想動態刪除一個對象(比如從[instancing demo](http://threejs.org/examples/#webgl_buffergeometry_instancing_dynamic)),我將不得不從'偏移量'和'方向'中刪除對象的屬性。'InstancedBufferAttribute '併爲它們設置'needsUpdate',對嗎?這個過程的細節我仍然不確定 - 沒有InstancedBufferAttribute.remove(),所以我想你會調用'setXYZW'爲索引的空白值? –
如果你只是不想繪製它和它的最後一項,只需將'''maxInstancedCount'''減1,並且不要更改數據或更新到GPU。問題出現時,它不是最後一個項目,你必須使用Float32Array.''''''來洗牌數據以將其後的所有內容移動;然後更新該範圍。 –
真棒,感謝您的幫助 - 這符合我在第一篇文章後想象的內容,所以很高興知道我在正確的軌道上。標記爲已解決! –