提交 eaaf6a94 编写于 作者: M Mr.doob

Yet more clean up to STLLoader and example.

上级 c84b2637
......@@ -10,15 +10,8 @@
* var loader = new THREE.STLLoader();
* 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' );
......@@ -65,53 +58,43 @@ THREE.STLLoader.prototype = {
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 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
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
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;
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();
group.add( new THREE.Mesh( geometry, new THREE.MeshLambertMaterial() ) );
return group;
return geometry;
}
......
......@@ -49,6 +49,7 @@
var particleLight, pointLight;
init();
animate();
function init() {
......@@ -83,20 +84,10 @@
var loader = new THREE.STLLoader();
loader.addEventListener( 'load', function ( event ) {
var object = event.content;
var geometry = event.content;
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' );
......@@ -147,18 +138,10 @@
//
var t = 0;
var clock = new THREE.Clock();
function animate() {
var delta = clock.getDelta();
requestAnimationFrame( animate );
if ( t > 1 ) t = 0;
render();
stats.update();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册