Browse Source

OBJLoader: Completed regular expresions for quad support.

Mr.doob 13 years ago
parent
commit
4d8c6196c1
1 changed files with 7 additions and 3 deletions
  1. 7 3
      examples/js/loaders/OBJLoader.js

+ 7 - 3
examples/js/loaders/OBJLoader.js

@@ -33,6 +33,8 @@ THREE.OBJLoader.prototype.parse = function ( data, callback ) {
 
 
 	var geometry = new THREE.Geometry();
 	var geometry = new THREE.Geometry();
 
 
+	console.time( 'THREE.OBJLoader.parse()' );
+
 	function vertex( a, b, c ) {
 	function vertex( a, b, c ) {
 
 
 		return new THREE.Vector3( parseFloat( a ), parseFloat( b ), parseFloat( c ) );
 		return new THREE.Vector3( parseFloat( a ), parseFloat( b ), parseFloat( c ) );
@@ -56,7 +58,7 @@ THREE.OBJLoader.prototype.parse = function ( data, callback ) {
 	// v float float float
 	// v float float float
 	// ["v 1.0 2.0 3.0", "1.0", "2.0", "3.0"]
 	// ["v 1.0 2.0 3.0", "1.0", "2.0", "3.0"]
 
 
-	pattern = /v ([\-|\d|.]+) ([\-|\d|.]+) ([\-|\d|.]+)/g;
+	pattern = /v( [\-|\d|.]+)( [\-|\d|.]+)( [\-|\d|.]+)/g;
 
 
 	while ( ( result = pattern.exec( data ) ) != null ) {
 	while ( ( result = pattern.exec( data ) ) != null ) {
 
 
@@ -82,7 +84,7 @@ THREE.OBJLoader.prototype.parse = function ( data, callback ) {
 	// f vertex/uv vertex/uv vertex/uv ...
 	// f vertex/uv vertex/uv vertex/uv ...
 	// ["f 1/1 2/2 3/3", " 1/1", "1", "1", " 2/2", "2", "2", " 3/3", "3", "3", undefined, undefined, undefined]
 	// ["f 1/1 2/2 3/3", " 1/1", "1", "1", " 2/2", "2", "2", " 3/3", "3", "3", undefined, undefined, undefined]
 
 
-	pattern = /f ([\d]+)\/([\d]+) ([\d]+)\/([\d]+) ([\d]+)\/([\d]+)/g;
+	pattern = /f( ([\d]+)\/([\d]+))( ([\d]+)\/([\d]+))( ([\d]+)\/([\d]+))( ([\d]+)\/([\d]+))?/g;
 
 
 	while ( ( result = pattern.exec( data ) ) != null ) {
 	while ( ( result = pattern.exec( data ) ) != null ) {
 
 
@@ -112,7 +114,7 @@ THREE.OBJLoader.prototype.parse = function ( data, callback ) {
 	// f vertex//normal vertex//normal vertex//normal ...
 	// f vertex//normal vertex//normal vertex//normal ...
 	// ["f 1//1 2//2 3//3", " 1//1", "1", "1", " 2//2", "2", "2", " 3//3", "3", "3", undefined, undefined, undefined]
 	// ["f 1//1 2//2 3//3", " 1//1", "1", "1", " 2//2", "2", "2", " 3//3", "3", "3", undefined, undefined, undefined]
 
 
-	pattern = /f ([\d]+)\/\/([\d]+) ([\d]+)\/\/([\d]+) ([\d]+)\/\/([\d]+)/g;
+	pattern = /f( ([\d]+)\/\/([\d]+))( ([\d]+)\/\/([\d]+))( ([\d]+)\/\/([\d]+))( ([\d]+)\/\/([\d]+))?/g;
 
 
 	while ( ( result = pattern.exec( data ) ) != null ) {
 	while ( ( result = pattern.exec( data ) ) != null ) {
 
 
@@ -124,6 +126,8 @@ THREE.OBJLoader.prototype.parse = function ( data, callback ) {
 
 
 	}
 	}
 
 
+	console.timeEnd( 'THREE.OBJLoader.parse()' );
+
 	geometry.computeCentroids();
 	geometry.computeCentroids();
 
 
 	callback( geometry );
 	callback( geometry );