Browse Source

Yet more clean up to STLLoader and example.

Mr.doob 13 years ago
parent
commit
eaaf6a9490
2 changed files with 19 additions and 53 deletions
  1. 16 33
      examples/js/loaders/STLLoader.js
  2. 3 20
      examples/webgl_loader_stl.html

+ 16 - 33
examples/js/loaders/STLLoader.js

@@ -10,15 +10,8 @@
  * 	var loader = new THREE.STLLoader();
  * 	var loader = new THREE.STLLoader();
  * 	loader.addEventListener( 'load', function ( event ) {
  * 	loader.addEventListener( 'load', function ( event ) {
  *
  *
- * 		var object = event.content;
- *
- * 		for ( var i = 0; i < object.children.length; i ++ ) {
- *
- * 			object.children[ i ].material = material;
- *
- * 		}
- *
- * 		scene.add( object );
+ * 		var geometry = event.content;
+ * 		scene.add( new THREE.Mesh( geometry ) );
  *
  *
  * 	} );
  * 	} );
  * 	loader.load( './models/stl/slotted_disk.stl' );
  * 	loader.load( './models/stl/slotted_disk.stl' );
@@ -65,53 +58,43 @@ THREE.STLLoader.prototype = {
 
 
 	parse: function ( data ) {
 	parse: function ( data ) {
 
 
-		function face3( a, b, c, normals ) {
-
-			return new THREE.Face3( a, b, c, normals );
-
-		}
-
-
-		var group = new THREE.Object3D();
 		var geometry = new THREE.Geometry();
 		var geometry = new THREE.Geometry();
 
 
-		var pattern, result;
-
-		pattern = /facet([\s\S]*?)endfacet/g;
-
-		while ( ( result = pattern.exec( data ) ) != null ) {
+		var patternFace = /facet([\s\S]*?)endfacet/g;
+		var result;
 
 
-			facet_text = facet_result[ 0 ];
+		while ( ( result = patternFace.exec( data ) ) != null ) {
 
 
-			var face_normal = new THREE.Vector3();
+			var text = result[ 0 ];
 
 
 			// Normal
 			// Normal
-			pattern = /normal[\s]+([-+]?[0-9]+\.?[0-9]*([eE][-+]?[0-9]+)?)+[\s]+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)+[\s]+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)+/g;
+			var patternNormal = /normal[\s]+([-+]?[0-9]+\.?[0-9]*([eE][-+]?[0-9]+)?)+[\s]+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)+[\s]+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)+/g;
 
 
-			while( ( result = pattern.exec( facet_text ) ) != null ) {
+			while( ( result = patternNormal.exec( text ) ) != null ) {
 
 
-				var normal = new THREE.Vector3( +( result[1]), +( result[3] ), +( result[5] ) );
+				var normal = new THREE.Vector3( result[ 1 ], result[ 3 ], result[ 5 ] );
 
 
 			}
 			}
 
 
 			// Vertex
 			// Vertex
-			pattern = /vertex[\s]+([-+]?[0-9]+\.?[0-9]*([eE][-+]?[0-9]+)?)+[\s]+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)+[\s]+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)+/g;
+			var patternVertex = /vertex[\s]+([-+]?[0-9]+\.?[0-9]*([eE][-+]?[0-9]+)?)+[\s]+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)+[\s]+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)+/g;
 
 
-			while( ( result = pattern.exec( facet_text ) ) != null ) {
+			while( ( result = patternVertex.exec( text ) ) != null ) {
 
 
-				geometry.vertices.push( new THREE.Vector3(+(result[1]), +(result[3]), +(result[ 5 ] ) ) );
+				geometry.vertices.push(
+					new THREE.Vector3( result[ 1 ], result[ 3 ], result[ 5 ] )
+				);
 
 
 			}
 			}
 
 
 			var len = geometry.vertices.length;
 			var len = geometry.vertices.length;
-			geometry.faces.push( face3( len - 3, len - 2, len - 1, normal ) );
+			geometry.faces.push( new THREE.Face3( len - 3, len - 2, len - 1, normal ) );
 
 
 		}
 		}
 
 
 		geometry.computeCentroids();
 		geometry.computeCentroids();
-		group.add( new THREE.Mesh( geometry, new THREE.MeshLambertMaterial() ) );
 
 
-		return group;
+		return geometry;
 
 
 	}
 	}
 
 

+ 3 - 20
examples/webgl_loader_stl.html

@@ -49,6 +49,7 @@
 			var particleLight, pointLight;
 			var particleLight, pointLight;
 
 
 			init();
 			init();
+			animate();
 
 
 			function init() {
 			function init() {
 
 
@@ -83,20 +84,10 @@
 				var loader = new THREE.STLLoader();
 				var loader = new THREE.STLLoader();
 				loader.addEventListener( 'load', function ( event ) {
 				loader.addEventListener( 'load', function ( event ) {
 
 
-					var object = event.content;
-
+					var geometry = event.content;
 					var material = new THREE.MeshPhongMaterial( { ambient: 0xff0000, color: 0xff0000, specular: 0xffffff } );
 					var material = new THREE.MeshPhongMaterial( { ambient: 0xff0000, color: 0xff0000, specular: 0xffffff } );
-					console.log( object );
-
-					for ( var i = 0; i < object.children.length; i ++ ) {
-
-						object.children[ i ].material = material;
-
-					}
-
-					scene.add( object );
 
 
-					animate();
+					scene.add( new THREE.Mesh( geometry, material ) );
 
 
 				} );
 				} );
 				loader.load( './models/stl/slotted_disk.stl' );
 				loader.load( './models/stl/slotted_disk.stl' );
@@ -147,18 +138,10 @@
 
 
 			//
 			//
 
 
-			var t = 0;
-			var clock = new THREE.Clock();
-
 			function animate() {
 			function animate() {
 
 
-				var delta = clock.getDelta();
-
 				requestAnimationFrame( animate );
 				requestAnimationFrame( animate );
 
 
-				if ( t > 1 ) t = 0;
-
-
 				render();
 				render();
 				stats.update();
 				stats.update();