|
@@ -4,34 +4,32 @@
|
|
|
|
|
|
THREE.WireframeHelper = function ( object ) {
|
|
|
|
|
|
- var edge = [ 0, 0 ], hash = {}, key;
|
|
|
+ var edge = [ 0, 0 ], hash = {};
|
|
|
var sortFunction = function ( a, b ) { return a - b };
|
|
|
|
|
|
var keys = [ 'a', 'b', 'c', 'd' ];
|
|
|
var geometry = new THREE.BufferGeometry();
|
|
|
var numEdges = 0;
|
|
|
- var vertices, edges, faces, coords;
|
|
|
- var i, j, index;
|
|
|
|
|
|
if ( object.geometry instanceof THREE.Geometry ) {
|
|
|
|
|
|
- vertices = object.geometry.vertices;
|
|
|
- faces = object.geometry.faces;
|
|
|
+ var vertices = object.geometry.vertices;
|
|
|
+ var faces = object.geometry.faces;
|
|
|
|
|
|
// allocate maximal size
|
|
|
- edges = new Uint32Array(6 * faces.length);
|
|
|
+ var edges = new Uint32Array(6 * faces.length);
|
|
|
|
|
|
- for ( i = 0, l = faces.length; i < l; i ++ ) {
|
|
|
+ for ( var i = 0, l = faces.length; i < l; i ++ ) {
|
|
|
|
|
|
var face = faces[ i ];
|
|
|
|
|
|
- for ( j = 0; j < 3; j ++ ) {
|
|
|
+ for ( var j = 0; j < 3; j ++ ) {
|
|
|
|
|
|
edge[ 0 ] = face[ keys[ j ] ];
|
|
|
edge[ 1 ] = face[ keys[ ( j + 1 ) % 3 ] ];
|
|
|
edge.sort( sortFunction );
|
|
|
|
|
|
- key = edge.toString();
|
|
|
+ var key = edge.toString();
|
|
|
|
|
|
if ( hash[ key ] === undefined ) {
|
|
|
|
|
@@ -47,15 +45,15 @@ THREE.WireframeHelper = function ( object ) {
|
|
|
}
|
|
|
|
|
|
geometry.addAttribute( 'position', Float32Array, 2 * numEdges , 3 );
|
|
|
- coords = geometry.attributes.position.array;
|
|
|
+ var coords = geometry.attributes.position.array;
|
|
|
|
|
|
- for ( i = 0, l = numEdges; i < l; i ++ ) {
|
|
|
+ for ( var i = 0, l = numEdges; i < l; i ++ ) {
|
|
|
|
|
|
- for ( j = 0; j < 2; j ++ ) {
|
|
|
+ for ( var j = 0; j < 2; j ++ ) {
|
|
|
|
|
|
var vertex = vertices[ edges [ 2 * i + j] ];
|
|
|
|
|
|
- index = 6 * i + 3 * j;
|
|
|
+ var index = 6 * i + 3 * j;
|
|
|
coords[ index + 0 ] = vertex.x;
|
|
|
coords[ index + 1 ] = vertex.y;
|
|
|
coords[ index + 2 ] = vertex.z;
|
|
@@ -65,21 +63,24 @@ THREE.WireframeHelper = function ( object ) {
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
- vertices = object.geometry.attributes.position.array;
|
|
|
- faces = object.geometry.attributes.index.array;
|
|
|
+
|
|
|
+ var vertices = object.geometry.attributes.position.array;
|
|
|
+ var faces = object.geometry.attributes.index.array;
|
|
|
|
|
|
// allocate maximal size
|
|
|
- edges = new Uint32Array(2 * faces.length);
|
|
|
+ var edges = new Uint32Array(2 * faces.length);
|
|
|
+
|
|
|
+ for ( var i = 0, l = faces.length / 3; i < l; i ++ ) {
|
|
|
|
|
|
- for ( i = 0, l = faces.length / 3; i < l; i ++ ) {
|
|
|
+ for ( var j = 0; j < 3; j ++ ) {
|
|
|
+
|
|
|
+ var index = i * 3;
|
|
|
|
|
|
- for ( j = 0; j < 3; j ++ ) {
|
|
|
- index = i * 3;
|
|
|
edge[ 0 ] = faces[ index + j ];
|
|
|
- edge[ 1 ] = faces[ index + (j + 1) % 3 ];
|
|
|
+ edge[ 1 ] = faces[ index + ( j + 1 ) % 3 ];
|
|
|
edge.sort( sortFunction );
|
|
|
|
|
|
- key = edge.toString();
|
|
|
+ var key = edge.toString();
|
|
|
|
|
|
if ( hash[ key ] === undefined ) {
|
|
|
|
|
@@ -95,13 +96,14 @@ THREE.WireframeHelper = function ( object ) {
|
|
|
}
|
|
|
|
|
|
geometry.addAttribute( 'position', Float32Array, 2 * numEdges , 3 );
|
|
|
- coords = geometry.attributes.position.array;
|
|
|
|
|
|
- for ( i = 0, l = numEdges; i < l; i ++ ) {
|
|
|
+ var coords = geometry.attributes.position.array;
|
|
|
+
|
|
|
+ for ( var i = 0, l = numEdges; i < l; i ++ ) {
|
|
|
|
|
|
- for ( j = 0; j < 2; j ++ ) {
|
|
|
+ for ( var j = 0; j < 2; j ++ ) {
|
|
|
|
|
|
- index = 6 * i + 3 * j;
|
|
|
+ var index = 6 * i + 3 * j;
|
|
|
var index2 = 3 * edges[ 2 * i + j];
|
|
|
coords[ index + 0 ] = vertices[ index2 ];
|
|
|
coords[ index + 1 ] = vertices[ index2 + 1 ];
|