2013-05-02 74 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