提交 00421026 编写于 作者: M Mr.doob

Merge branch 'wireframe3' of https://github.com/valette/three.js into dev

...@@ -62,32 +62,40 @@ THREE.WireframeHelper = function ( object ) { ...@@ -62,32 +62,40 @@ THREE.WireframeHelper = function ( object ) {
} }
} else { } else if ( object.geometry.offsets ) {
var vertices = object.geometry.attributes.position.array; var vertices = object.geometry.attributes.position.array;
var faces = object.geometry.attributes.index.array; var indices = object.geometry.attributes.index.array;
var offsets = object.geometry.offsets
// allocate maximal size // allocate maximal size
var edges = new Uint32Array(2 * faces.length); var edges = new Uint32Array(2 * indices.length);
for ( var i = 0, l = faces.length / 3; i < l; i ++ ) { for ( var o = 0, ol = offsets.length; o < ol; ++ o ) {
for ( var j = 0; j < 3; j ++ ) { var start = offsets[ o ].start;
var count = offsets[ o ].count;
var index = offsets[ o ].index;
var il;
var index = i * 3; for ( var i = start, il = start + count; i < il; i += 3 ) {
edge[ 0 ] = faces[ index + j ]; for ( var j = 0; j < 3; j ++ ) {
edge[ 1 ] = faces[ index + ( j + 1 ) % 3 ];
edge.sort( sortFunction );
var key = edge.toString(); edge[ 0 ] = index + indices[ i + j ];
edge[ 1 ] = index + indices[ i + ( j + 1 ) % 3 ];
edge.sort( sortFunction );
if ( hash[ key ] === undefined ) { var key = edge.toString();
edges[ 2 * numEdges ] = edge[ 0 ]; if ( hash[ key ] === undefined ) {
edges[ 2 * numEdges + 1 ] = edge[ 1 ];
hash[ key ] = true; edges[ 2 * numEdges ] = edge[ 0 ];
numEdges ++; edges[ 2 * numEdges + 1 ] = edge[ 1 ];
hash[ key ] = true;
numEdges ++;
}
} }
...@@ -112,6 +120,36 @@ THREE.WireframeHelper = function ( object ) { ...@@ -112,6 +120,36 @@ THREE.WireframeHelper = function ( object ) {
} }
} }
} else {
var vertices = object.geometry.attributes.position.array;
var numEdges = vertices.length / 3;
var numTris = numEdges / 3;
geometry.addAttribute( 'position', Float32Array, 2 * numEdges , 3 );
var coords = geometry.attributes.position.array;
for ( var i = 0, l = numTris; i < l; i ++ ) {
var index = i * 9;
var index2 = 2 * index;
for ( var j = 0; j < 3; j ++ ) {
var vertex1 = j * 3;
var vertex2 = ( ( j + 1 ) % 3 ) * 3;
coords[ index2 + 0 ] = vertices[ index + vertex1 ];
coords[ index2 + 1 ] = vertices[ index + vertex1 + 1 ];
coords[ index2 + 2 ] = vertices[ index + vertex1 + 2 ];
coords[ index2 + 3 ] = vertices[ index + vertex2 ];
coords[ index2 + 4 ] = vertices[ index + vertex2 + 1 ];
coords[ index2 + 5 ] = vertices[ index + vertex2 + 2 ];
}
}
} }
THREE.Line.call( this, geometry, new THREE.LineBasicMaterial( { color: 0xffffff } ), THREE.LinePieces ); THREE.Line.call( this, geometry, new THREE.LineBasicMaterial( { color: 0xffffff } ), THREE.LinePieces );
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册