Browse Source

OBJExporter: Fix Line Export

Mugen87 9 năm trước cách đây
mục cha
commit
7bfb536f44
1 tập tin đã thay đổi với 16 bổ sung11 xóa
  1. 16 11
      examples/js/exporters/OBJExporter.js

+ 16 - 11
examples/js/exporters/OBJExporter.js

@@ -20,7 +20,7 @@ THREE.OBJExporter.prototype = {
 		var normal = new THREE.Vector3();
 		var uv = new THREE.Vector2();
 
-		var i, j, m, face = [];
+		var i, j, l, m, face = [];
 
 		var parseMesh = function ( mesh ) {
 
@@ -53,7 +53,7 @@ THREE.OBJExporter.prototype = {
 
 				if( vertices !== undefined ) {
 
-					for ( i = 0; i < vertices.count ; i ++, nbVertex++ ) {
+					for ( i = 0, l = vertices.count; i < l; i ++, nbVertex++ ) {
 
 						vertex.x = vertices.getX( i );
 						vertex.y = vertices.getY( i );
@@ -73,7 +73,7 @@ THREE.OBJExporter.prototype = {
 
 				if( uvs !== undefined ) {
 
-					for ( i = 0; i < uvs.count ; i ++, nbVertexUvs++ ) {
+					for ( i = 0, l = uvs.count; i < l; i ++, nbVertexUvs++ ) {
 
 						uv.x = uvs.getX( i );
 						uv.y = uvs.getY( i );
@@ -91,7 +91,7 @@ THREE.OBJExporter.prototype = {
 
 					normalMatrixWorld.getNormalMatrix( mesh.matrixWorld );
 
-					for ( i = 0; i < normals.count ; i ++, nbNormals++ ) {
+					for ( i = 0, l = normals.count; i < l; i ++, nbNormals++ ) {
 
 						normal.x = normals.getX( i );
 						normal.y = normals.getY( i );
@@ -111,7 +111,7 @@ THREE.OBJExporter.prototype = {
 
 				if( indices !== null ) {
 
-					for ( i = 0; i < indices.count ; i += 3 ) {
+					for ( i = 0, l = indices.count; i < l; i += 3 ) {
 
 						for( m = 0; m < 3; m ++ ){
 
@@ -128,7 +128,7 @@ THREE.OBJExporter.prototype = {
 
 				} else {
 
-					for ( i = 0; i < vertices.count ; i += 3 ) {
+					for ( i = 0, l = vertices.count; i < l; i += 3 ) {
 
 						for( m = 0; m < 3; m ++ ){
 
@@ -160,6 +160,8 @@ THREE.OBJExporter.prototype = {
 
 		var parseLine = function( line ) {
 
+			var nbVertex = 0;
+
 			var geometry = line.geometry;
 			var type = line.type;
 
@@ -180,7 +182,7 @@ THREE.OBJExporter.prototype = {
 
 				if( vertices !== undefined ) {
 
-					for ( i = 0; i < vertices.count ; i ++ ) {
+					for ( i = 0, l = vertices.count; i < l; i ++, nbVertex++ ) {
 
 						vertex.x = vertices.getX( i );
 						vertex.y = vertices.getY( i );
@@ -200,9 +202,9 @@ THREE.OBJExporter.prototype = {
 
 					output += 'l ';
 
-					for ( j = 1; j <= vertices.count; j++ ) {
+					for ( j = 1, l = vertices.count; j <= l; j++ ) {
 
-						output += j + ' ';
+						output += ( indexVertex + j ) + ' ';
 
 					}
 
@@ -212,9 +214,9 @@ THREE.OBJExporter.prototype = {
 
 				if ( type === 'LineSegments' ) {
 
-					for ( j = 1, k = j + 1; j < vertices.count; j += 2, k = j + 1 ) {
+					for ( j = 1, k = j + 1, l = vertices.count; j < l; j += 2, k = j + 1 ) {
 
-						output += 'l ' + j + ' ' + k + '\n';
+						output += 'l ' + ( indexVertex + j ) + ' ' + ( indexVertex + k ) + '\n';
 
 					}
 
@@ -226,6 +228,9 @@ THREE.OBJExporter.prototype = {
 
 			}
 
+			// update index
+			indexVertex += nbVertex;
+
 		};
 
 		object.traverse( function ( child ) {