Browse Source

OBJLoader: No more 0 filled normals/uvs.

Mr.doob 11 năm trước cách đây
mục cha
commit
fb8520aae8
1 tập tin đã thay đổi với 13 bổ sung21 xóa
  1. 13 21
      examples/js/loaders/OBJLoader.js

+ 13 - 21
examples/js/loaders/OBJLoader.js

@@ -125,14 +125,6 @@ THREE.OBJLoader.prototype = {
 
 				}
 
-			} else {
-
-				geometry.uvs.push( 0, 0,  0, 0,  0, 0 );
-
-				if ( d !== undefined ) {
-					geometry.uvs.push( 0, 0,  0, 0,  0, 0 );
-				}
-
 			}
 
 			if ( na !== undefined ) {
@@ -154,14 +146,6 @@ THREE.OBJLoader.prototype = {
 
 				}
 
-			} else {
-
-				geometry.normals.push( 0, 0, 0,  0, 0, 0,  0, 0, 0 );
-
-				if ( d !== undefined) {
-					geometry.normals.push( 0, 0, 0,  0, 0, 0,  0, 0, 0 );					
-				}
-
 			}
 
 		}
@@ -354,16 +338,24 @@ THREE.OBJLoader.prototype = {
 		for ( var i = 0, l = objects.length; i < l; i ++ ) {
 
 			var object = objects[ i ];
+			var geometry = object.geometry;
+
+			var buffergeometry = new THREE.BufferGeometry();
+
+			buffergeometry.addAttribute( 'position', new THREE.BufferAttribute( new Float32Array( geometry.vertices ), 3 ) );
 
-			var geometry = new THREE.BufferGeometry();
-			geometry.addAttribute( 'position', new THREE.BufferAttribute( new Float32Array( object.geometry.vertices ), 3 ) );
-			geometry.addAttribute( 'normal', new THREE.BufferAttribute( new Float32Array( object.geometry.normals ), 3 ) );
-			geometry.addAttribute( 'uv', new THREE.BufferAttribute( new Float32Array( object.geometry.uvs ), 2 ) );
+			if ( geometry.normals.length > 0 ) {
+				buffergeometry.addAttribute( 'normal', new THREE.BufferAttribute( new Float32Array( geometry.normals ), 3 ) );
+			}
+
+			if ( geometry.uvs.length > 0 ) {
+				buffergeometry.addAttribute( 'uv', new THREE.BufferAttribute( new Float32Array( geometry.uvs ), 2 ) );
+			}
 
 			var material = new THREE.MeshLambertMaterial();
 			material.name = object.material.name;
 
-			var mesh = new THREE.Mesh( geometry, material );
+			var mesh = new THREE.Mesh( buffergeometry, material );
 			mesh.name = object.name;
 
 			container.add( mesh );