WireframeHelper.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /**
  2. * @author mrdoob / http://mrdoob.com/
  3. */
  4. THREE.WireframeHelper = function ( object ) {
  5. var edge = [ 0, 0 ], hash = {};
  6. var sortFunction = function ( a, b ) { return a - b };
  7. var keys = [ 'a', 'b', 'c', 'd' ];
  8. var geometry = new THREE.Geometry();
  9. var vertices = object.geometry.vertices;
  10. var faces = object.geometry.faces;
  11. for ( var i = 0, l = faces.length; i < l; i ++ ) {
  12. var face = faces[ i ];
  13. var length = face instanceof THREE.Face4 ? 4 : 3;
  14. for ( var j = 0; j < length; j ++ ) {
  15. edge[ 0 ] = face[ keys[ j ] ];
  16. edge[ 1 ] = face[ keys[ ( j + 1 ) % length ] ];
  17. edge.sort( sortFunction );
  18. var key = edge.toString();
  19. if ( hash[ key ] === undefined ) {
  20. geometry.vertices.push( vertices[ edge[ 0 ] ] );
  21. geometry.vertices.push( vertices[ edge[ 1 ] ] );
  22. hash[ key ] = true;
  23. }
  24. }
  25. }
  26. THREE.Line.call( this, geometry, new THREE.LineBasicMaterial( { color: 0xffffff } ), THREE.LinePieces );
  27. this.matrixAutoUpdate = false;
  28. this.matrixWorld = object.matrixWorld;
  29. };
  30. THREE.WireframeHelper.prototype = Object.create( THREE.Line.prototype );