我試圖將大量索引幾何體(如SphereGeometry)合併到單個緩衝區幾何體中。THREE.js:將索引幾何體合併到緩衝區幾何體
索引幾何圖形是我的'預製'。
首先,I「弄平」的預製的索引到一個這樣的數組:
var prefabFaceCount = prefabGeometry.faces.length;
for (var i = 0; i < prefabFaceCount; i++) {
var face = prefabGeometry.faces[i];
prefabIndices.push(face.a, face.b, face.c);
}
然後,我重複索引與針對每個預製偏移,像這樣:
var prefabIndexCount = prefabGeometry.faces.length * 3;
var prefabVertexCount = prefabGeometry.vertices.length;
for (var i = 0; i < prefabCount; i++) {
for (var k = 0; k < prefabIndexCount; k++) {
bufferIndices[i * prefabIndexCount + k] = prefabIndices[k] + i * prefabVertexCount;
}
}
這個工作正常,當我有少於65535面(prefabFaceCount * prefabCount),但是當我超過這個數字時,我的索引變得混亂,導致不正確的三角形。
這是更加明顯,當我緩存更復雜的幾何形狀像SphereGeometries(球不應連接):
我的猜測是,通過調用BufferGeometry.computeOffsets()將緩衝區幾何分塊爲偏移量時會發生問題。我已經嘗試了塊大小和索引排序的不同組合,但我還沒有找到解決方案。
我必須:緩衝指數
B)計算基於面部的數量在我的「預製」
c中的塊大小)時塊大小
一)帳戶做的一個組合和b
d)做別的事情完全
任何指針將不勝感激。
[OES_element_index_uint(https://www.khronos.org/registry/webgl/extensions/OES_element_index_uint/) –