2013-05-02 37 views
0

是否可以为THREE.BufferGeometry线框图? 我不认为threejs支持这个,你可以将_gl.TRIANGLES改为_gl.LINES(或LINES_STRIP)在三个源代码中,结果会很奇怪。threejs缓冲几何和线框

http://oi40.tinypic.com/15tsux.jpg (缓冲区几何形状在底部)

还有GitHub上一个老问题,即没有提供解决方案 https://github.com/mrdoob/three.js/issues/1275

需要什么,以便能够与线框支持做THREE.BufferGeometry?我想在实施它的时候给予一些启示,但我不确定需要做些什么。

+0

不幸的是,我没有足够的分数来添加“threejs”标签,所以很抱歉。 – Pantelis 2013-05-02 13:33:17

回答

0

我花了一些时间(目前用于未索引的三角形列表),它很容易。

var wireframe_pos = new Float32Array(positionArray.length * 2); 
for(var ii = 0; ii < positionArray.length; ii += 9) { 
    wireframe_pos[ ii * 2 ] = positionArray[ ii ]; 
    wireframe_pos[ ii * 2 + 1 ] = positionArray[ ii + 1 ]; 
    wireframe_pos[ ii * 2 + 2 ] = positionArray[ ii + 2 ]; 

    wireframe_pos[ ii * 2 + 3 ] = positionArray[ ii + 3 ]; 
    wireframe_pos[ ii * 2 + 4 ] = positionArray[ ii + 4 ]; 
    wireframe_pos[ ii * 2 + 5 ] = positionArray[ ii + 5 ]; 

    wireframe_pos[ ii * 2 + 6 ] = positionArray[ ii + 3 ]; 
    wireframe_pos[ ii * 2 + 7 ] = positionArray[ ii + 4 ]; 
    wireframe_pos[ ii * 2 + 8 ] = positionArray[ ii + 5 ]; 

    wireframe_pos[ ii * 2 + 9 ] = positionArray[ ii + 6 ]; 
    wireframe_pos[ ii * 2 + 10 ] = positionArray[ ii + 7 ]; 
    wireframe_pos[ ii * 2 + 11 ] = positionArray[ ii + 8 ]; 

    wireframe_pos[ ii * 2 + 12 ] = positionArray[ ii + 6 ]; 
    wireframe_pos[ ii * 2 + 13 ] = positionArray[ ii + 7 ]; 
    wireframe_pos[ ii * 2 + 14 ] = positionArray[ ii + 8 ]; 

    wireframe_pos[ ii * 2 + 15 ] = positionArray[ ii ]; 
    wireframe_pos[ ii * 2 + 16 ] = positionArray[ ii + 1 ]; 
    wireframe_pos[ ii * 2 + 17 ] = positionArray[ ii + 2 ]; 
} 

attributes[ "position" ] = { itemSize: 3, array: wireframe_pos, numItems: wireframe_pos.length }; 

虽然说实话,我并不完全满意这个解决方案,因为位置数组的大小是原来的两倍。感觉太重了。任何建议更好的方法?

0

基本上需要的是将网格格式缓冲区几何体转换为线格式化缓冲区几何体的实用程序。

+0

计划做某种'WireframeGeometyHelper'。 – mrdoob 2013-05-04 22:00:08