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

Simplified OBJLoader. Should fix #3826.

The loader now ignores groups. Need to take a second look and try to implement MeshFaceMaterial when multiple usemtl. Then apply to OBJMTLLoader.
上级 7063890c
......@@ -58,43 +58,20 @@ THREE.OBJLoader.prototype = {
}
function meshN( meshName, materialName ) {
var object = new THREE.Object3D();
var geometry, material, mesh;
if ( geometry.vertices.length > 0 ) {
// create mesh if no objects in data
geometry.mergeVertices();
geometry.computeCentroids();
geometry.computeFaceNormals();
geometry.computeBoundingSphere();
if ( /^o /gm.test( data ) === false ) {
object.add( mesh );
geometry = new THREE.Geometry();
mesh = new THREE.Mesh( geometry, material );
verticesCount = 0;
}
if ( meshName !== undefined ) mesh.name = meshName;
if ( materialName !== undefined ) {
material = new THREE.MeshLambertMaterial();
material.name = materialName;
mesh.material = material;
}
geometry = new THREE.Geometry();
material = new THREE.MeshLambertMaterial();
mesh = new THREE.Mesh( geometry, material );
object.add( mesh );
}
var group = new THREE.Object3D();
var object = group;
var geometry = new THREE.Geometry();
var material = new THREE.MeshLambertMaterial();
var mesh = new THREE.Mesh( geometry, material );
var vertices = [];
var verticesCount = 0;
var normals = [];
......@@ -110,11 +87,11 @@ THREE.OBJLoader.prototype = {
// vt float float
var uv_pattern = /vt( +[\d|\.|\+|\-|e]+)( +[\d|\.|\+|\-|e]+)/
var uv_pattern = /vt( +[\d|\.|\+|\-|e]+)( +[\d|\.|\+|\-|e]+)/;
// f vertex vertex vertex
var face_pattern1 = /f( +\d+)( +\d+)( +\d+)/
var face_pattern1 = /f( +\d+)( +\d+)( +\d+)/;
// f vertex/uv vertex/uv vertex/uv
......@@ -130,7 +107,7 @@ THREE.OBJLoader.prototype = {
//
var lines = data.split( "\n" );
var lines = data.split( '\n' );
for ( var i = 0; i < lines.length; i ++ ) {
......@@ -262,21 +239,24 @@ THREE.OBJLoader.prototype = {
// object
object = new THREE.Object3D();
object.name = line.substring( 2 ).trim();
group.add( object );
geometry = new THREE.Geometry();
material = new THREE.MeshLambertMaterial();
mesh = new THREE.Mesh( geometry, material );
mesh.name = line.substring( 2 ).trim();
object.add( mesh );
verticesCount = 0;
} else if ( /^g /.test( line ) ) {
// group
meshN( line.substring( 2 ).trim(), undefined );
} else if ( /^usemtl /.test( line ) ) {
// material
meshN( undefined, line.substring( 7 ).trim() );
material.name = line.substring( 7 ).trim();
} else if ( /^mtllib /.test( line ) ) {
......@@ -294,10 +274,17 @@ THREE.OBJLoader.prototype = {
}
// add the last group
meshN( undefined, undefined );
for ( var i = 0, l = object.children.length; i < l; i ++ ) {
var geometry = object.children[ i ].geometry;
geometry.computeCentroids();
geometry.computeFaceNormals();
geometry.computeBoundingSphere();
}
return group;
return object;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册