123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- /**
- * @author kovacsv / http://kovacsv.hu/
- * @author mrdoob / http://mrdoob.com/
- */
- THREE.STLExporter = function () {};
- THREE.STLExporter.prototype = {
- constructor: THREE.STLExporter,
- parse: ( function () {
- var vector = new THREE.Vector3();
- var normalMatrixWorld = new THREE.Matrix3();
- return function parse( scene ) {
- var output = '';
- output += 'solid exported\n';
- scene.traverse( function ( object ) {
- if ( object instanceof THREE.Mesh ) {
- var geometry = object.geometry;
- var matrixWorld = object.matrixWorld;
- if ( geometry instanceof THREE.Geometry ) {
- var vertices = geometry.vertices;
- var faces = geometry.faces;
- normalMatrixWorld.getNormalMatrix( matrixWorld );
- for ( var i = 0, l = faces.length; i < l; i ++ ) {
- var face = faces[ i ];
- vector.copy( face.normal ).applyMatrix3( normalMatrixWorld ).normalize();
- output += '\tfacet normal ' + vector.x + ' ' + vector.y + ' ' + vector.z + '\n';
- output += '\t\touter loop\n';
- var indices = [ face.a, face.b, face.c ];
- for ( var j = 0; j < 3; j ++ ) {
- vector.copy( vertices[ indices[ j ] ] ).applyMatrix4( matrixWorld );
- output += '\t\t\tvertex ' + vector.x + ' ' + vector.y + ' ' + vector.z + '\n';
- }
- output += '\t\tendloop\n';
- output += '\tendfacet\n';
- }
- }
- }
- } );
- output += 'endsolid exported\n';
- return output;
- };
- }() )
- };
|