如何在three.js中创建icosahedronbuffergeometry的索引

时间:2017-01-08 12:07:21

标签: javascript three.js

我遇到麻烦,不知道如何解决或管理这种情况。 我只想要一个替代的纹理球体而不是在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

1 个答案:

答案 0 :(得分:0)

在几天内进行分析后,我知道其他一些代码是错误的。我现在明白顶点缓冲区位置被多次复制以设置三角形,因此不需要创建索引或索引。只需更换代码即可创建索引。

以上6
 6. idx.push( idx.length + counter); // in the loop in line 24194

代码号3到没有。不再需要5。结果可以在上面的链接中看到,没有更多丢失的三角形面。

我认为可以重新创建PolyhedronBufferGeometry上的代码以提高效率。