我遇到麻烦,不知道如何解决或管理这种情况。 我只想要一个替代的纹理球体而不是在three.js中使用spherebuffergeometry我想使用icosahedronbuffergeometry和一些额外的代码来生成索引,因为我的渲染使用drawelement而不是drawarray。但结果并不符合预期,请参阅下面的链接。
修改在PolyhedronBufferGeometry函数上,如下所示:
1. var idx = []; // line 24097
2. this.setIndex( new ( Uint16Attribute )( idx, 1 ) ); // line 24119
3. var iv = []; // line 24157 to store temp indices
4. var iCount = idx.length; // line 24157
5. iv[ i ][ j ] = ij ; ij++; // in the loop in line 24174
6. idx.push( iCount+ iv[ i ][ k + 1 ]); // in the loop in line 24194
以下是使用修改的二十面体缓冲测量法的结果 icosahedron texturing
使用spherebuffergeometry时如下 sphere buffer texturing
答案 0 :(得分:0)
在几天内进行分析后,我知道其他一些代码是错误的。我现在明白顶点缓冲区位置被多次复制以设置三角形,因此不需要创建索引或索引。只需更换代码即可创建索引。
以上6 6. idx.push( idx.length + counter); // in the loop in line 24194
代码号3到没有。不再需要5。结果可以在上面的链接中看到,没有更多丢失的三角形面。
我认为可以重新创建PolyhedronBufferGeometry上的代码以提高效率。