是否可以为THREE.BufferGeometry
绘制线框图?
我不认为threejs支持这个,你可以在threejs源中将_gl.TRIANGLES改为_gl.LINES(或LINES_STRIP),结果很奇怪。
http://oi40.tinypic.com/15tsux.jpg (缓冲区几何图形在底部)
github上还有一个老问题,没有提供解决方案 https://github.com/mrdoob/three.js/issues/1275
为了支持THREE.BufferGeometry
的线框,需要做些什么?我想尝试实现它,但我不确定需要做什么。
答案 0 :(得分:0)
基本上需要的是一个用于将网格格式的缓冲区格式转换为行格式缓冲区域的实用程序。
答案 1 :(得分: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 };
虽然说实话,我对这个解决方案并不完全满意,因为位置数组的大小是原始数据的两倍。感觉太重了。有关更好方法的任何建议吗?