Przeglądaj źródła

PLYLoader: Minor tweaks.

Mr.doob 11 lat temu
rodzic
commit
231d52ec5c
1 zmienionych plików z 82 dodań i 81 usunięć
  1. 82 81
      examples/js/loaders/PLYLoader.js

+ 82 - 81
examples/js/loaders/PLYLoader.js

@@ -73,7 +73,7 @@ THREE.PLYLoader.prototype = {
 	isASCII: function( data ){
 
 		var header = this.parseHeader( this.bin2str( data ) );
-		
+
 		return header.format === "ascii";
 
 	},
@@ -95,30 +95,31 @@ THREE.PLYLoader.prototype = {
 	},
 
 	parseHeader: function ( data ) {
-		
+
 		var patternHeader = /ply([\s\S]*)end_header\s/;
 		var headerText = "";
-		if ( ( result = patternHeader.exec( data ) ) != null ) {
+		if ( ( result = patternHeader.exec( data ) ) !== null ) {
 			headerText = result [ 1 ];
 		}
-		
-		var header = new Object();
-		header.comments = [];
-		header.elements = [];
-		header.headerLength = result[0].length;
-		
+
+		var header = {
+			comments: [],
+			elements: [],
+			headerLength: result[0].length
+		};
+
 		var lines = headerText.split( '\n' );
 		var currentElement = undefined;
 		var lineType, lineValues;
 
 		function make_ply_element_property(propertValues) {
-			
+
 			var property = Object();
 
 			property.type = propertValues[0]
-			
+
 			if ( property.type === "list" ) {
-				
+
 				property.name = propertValues[3]
 				property.countType = propertValues[1]
 				property.itemType = propertValues[2]
@@ -130,9 +131,9 @@ THREE.PLYLoader.prototype = {
 			}
 
 			return property
-			
+
 		}
-		
+
 		for ( var i = 0; i < lines.length; i ++ ) {
 
 			var line = lines[ i ];
@@ -141,9 +142,9 @@ THREE.PLYLoader.prototype = {
 			lineValues = line.split( /\s+/ );
 			lineType = lineValues.shift()
 			line = lineValues.join(" ")
-			
+
 			switch( lineType ) {
-				
+
 			case "format":
 
 				header.format = lineValues[0];
@@ -171,13 +172,13 @@ THREE.PLYLoader.prototype = {
 				currentElement.properties = [];
 
 				break;
-				
+
 			case "property":
 
 				currentElement.properties.push( make_ply_element_property( lineValues ) );
 
 				break;
-				
+
 
 			default:
 
@@ -186,21 +187,21 @@ THREE.PLYLoader.prototype = {
 			}
 
 		}
-		
+
 		if ( !(currentElement === undefined) ) {
 
 			header.elements.push(currentElement);
 
 		}
-		
+
 		return header;
-		
+
 	},
 
 	parseASCIINumber: function ( n, type ) {
-		
+
 		switch( type ) {
-			
+
 		case 'char': case 'uchar': case 'short': case 'ushort': case 'int': case 'uint':
 		case 'int8': case 'uint8': case 'int16': case 'uint16': case 'int32': case 'uint32':
 
@@ -209,42 +210,42 @@ THREE.PLYLoader.prototype = {
 		case 'float': case 'double': case 'float32': case 'float64':
 
 			return parseFloat( n );
-			
+
 		}
-		
+
 	},
 
 	parseASCIIElement: function ( properties, line ) {
 
 		values = line.split( /\s+/ );
-		
+
 		var element = Object();
-		
+
 		for ( var i = 0; i < properties.length; i ++ ) {
-			
+
 			if ( properties[i].type === "list" ) {
-				
+
 				var list = [];
 				var n = this.parseASCIINumber( values.shift(), properties[i].countType );
 
 				for ( j = 0; j < n; j ++ ) {
-					
+
 					list.push( this.parseASCIINumber( values.shift(), properties[i].itemType ) );
-					
+
 				}
-				
+
 				element[ properties[i].name ] = list;
-				
+
 			} else {
-				
+
 				element[ properties[i].name ] = this.parseASCIINumber( values.shift(), properties[i].type );
-				
+
 			}
-			
+
 		}
-		
+
 		return element;
-		
+
 	},
 
 	parseASCII: function ( data ) {
@@ -262,31 +263,31 @@ THREE.PLYLoader.prototype = {
 		if ( ( result = patternBody.exec( data ) ) != null ) {
 			body = result [ 1 ];
 		}
-		
+
 		var lines = body.split( '\n' );
 		var currentElement = 0;
 		var currentElementCount = 0;
 		geometry.useColor = false;
-		
+
 		for ( var i = 0; i < lines.length; i ++ ) {
 
 			var line = lines[ i ];
 			line = line.trim()
 			if ( line === "" ) { continue; }
-			
+
 			if ( currentElementCount >= header.elements[currentElement].count ) {
 
 				currentElement++;
 				currentElementCount = 0;
 
 			}
-			
+
 			var element = this.parseASCIIElement( header.elements[currentElement].properties, line );
-			
+
 			this.handleElement( geometry, header.elements[currentElement].name, element );
-			
+
 			currentElementCount++;
-			
+
 		}
 
 		return this.postProcess( geometry );
@@ -294,45 +295,45 @@ THREE.PLYLoader.prototype = {
 	},
 
 	postProcess: function ( geometry ) {
-		
+
 		if ( geometry.useColor ) {
-			
+
 			for ( var i = 0; i < geometry.faces.length; i ++ ) {
-				
+
 				geometry.faces[i].vertexColors = [
 					geometry.colors[geometry.faces[i].a],
 					geometry.colors[geometry.faces[i].b],
 					geometry.colors[geometry.faces[i].c]
 				];
-				
+
 			}
-			
+
 			geometry.elementsNeedUpdate = true;
-			
+
 		}
 
 		geometry.computeBoundingSphere();
 
 		return geometry;
-		
+
 	},
 
 	handleElement: function ( geometry, elementName, element ) {
-		
+
 		if ( elementName === "vertex" ) {
 
 			geometry.vertices.push(
 				new THREE.Vector3( element.x, element.y, element.z )
 			);
-			
+
 			if ( 'red' in element && 'green' in element && 'blue' in element ) {
-				
+
 				geometry.useColor = true;
-				
+
 				color = new THREE.Color();
 				color.setRGB( element.red / 255.0, element.green / 255.0, element.blue / 255.0 );
 				geometry.colors.push( color );
-				
+
 			}
 
 		} else if ( elementName === "face" ) {
@@ -342,7 +343,7 @@ THREE.PLYLoader.prototype = {
 			);
 
 		}
-		
+
 	},
 
 	binaryRead: function ( dataview, at, type, little_endian ) {
@@ -365,48 +366,48 @@ THREE.PLYLoader.prototype = {
 		case 'float32': case 'float':	 return [ dataview.getFloat32( at, little_endian ), 4 ];
 
 		case 'float64': case 'double': return [ dataview.getFloat64( at, little_endian ), 8 ];
-			
+
 		}
-		
+
 	},
 
 	binaryReadElement: function ( dataview, at, properties, little_endian ) {
-		
+
 		var element = Object();
 		var result, read = 0;
-		
+
 		for ( var i = 0; i < properties.length; i ++ ) {
-		 
+
 			if ( properties[i].type === "list" ) {
-				
+
 				var list = [];
 
 				result = this.binaryRead( dataview, at+read, properties[i].countType, little_endian );
 				var n = result[0];
 				read += result[1];
-				
+
 				for ( j = 0; j < n; j ++ ) {
-					
+
 					result = this.binaryRead( dataview, at+read, properties[i].itemType, little_endian );
 					list.push( result[0] );
 					read += result[1];
-					
+
 				}
-				
+
 				element[ properties[i].name ] = list;
-				
+
 			} else {
-				
+
 				result = this.binaryRead( dataview, at+read, properties[i].type, little_endian );
 				element[ properties[i].name ] = result[0];
 				read += result[1];
-				
+
 			}
-			
+
 		}
-		
+
 		return [ element, read ];
-		
+
 	},
 
 	parseBinary: function ( data ) {
@@ -419,21 +420,21 @@ THREE.PLYLoader.prototype = {
 		var result, loc = 0;
 
 		for ( var currentElement = 0; currentElement < header.elements.length; currentElement ++ ) {
-			
+
 			for ( var currentElementCount = 0; currentElementCount < header.elements[currentElement].count; currentElementCount ++ ) {
-			
+
 				result = this.binaryReadElement( body, loc, header.elements[currentElement].properties, little_endian );
 				loc += result[1];
 				var element = result[0];
-			
+
 				this.handleElement( geometry, header.elements[currentElement].name, element );
-			
+
 			}
-			
+
 		}
-		
+
 		return this.postProcess( geometry );
-		
+
 	}
 
 };