|
@@ -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;
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|