Ver código fonte

Code Style cleanup

Luis Fraguada 5 anos atrás
pai
commit
6c0915e1a1
2 arquivos alterados com 134 adições e 119 exclusões
  1. 122 108
      examples/jsm/loaders/3DMLoader.js
  2. 12 11
      examples/webgl_loader_3dm.html

+ 122 - 108
examples/jsm/loaders/3DMLoader.js

@@ -3,8 +3,6 @@
  */
 
 import {
-	BufferAttribute,
-	BufferGeometry,
 	BufferGeometryLoader,
 	FileLoader,
 	Loader,
@@ -18,11 +16,11 @@ import {
 	LineBasicMaterial,
 	Matrix4
 } from "../../../build/three.module.js";
-import { CSS2DObject } from '../renderers/CSS2DRenderer.js'
+import { CSS2DObject } from '../renderers/CSS2DRenderer.js';
 
 var Rhino3dmLoader = function ( manager ) {
 
-    Loader.call( this, manager );
+	Loader.call( this, manager );
 
 	this.libraryPath = '';
 	this.libraryPending = null;
@@ -41,16 +39,16 @@ Rhino3dmLoader.taskCache = new WeakMap();
 
 Rhino3dmLoader.prototype = Object.assign( Object.create( Loader.prototype ), {
 
-    constructor: Rhino3dmLoader,
+	constructor: Rhino3dmLoader,
 
-    setLibraryPath: function ( path ) {
+	setLibraryPath: function ( path ) {
 
 		this.libraryPath = path;
 
 		return this;
 
 	},
-	
+
 	setWorkerLimit: function ( workerLimit ) {
 
 		this.workerLimit = workerLimit;
@@ -144,12 +142,13 @@ Rhino3dmLoader.prototype = Object.assign( Object.create( Loader.prototype ), {
 		} );
 
 		return objectPending;
+
 	},
 
 	parse: function () {
 
 		// parsing logic goes here
-		// console.log( '3dm parsing' );
+		console.warn( 'THREE.3DMLoader: TODO: Implement parse function' );
 
 	},
 
@@ -163,7 +162,7 @@ Rhino3dmLoader.prototype = Object.assign( Object.create( Loader.prototype ), {
 				name: 'default',
 				side: 2
 			} );
-	
+
 		}
 
 		var _diffuseColor = material.diffuseColor;
@@ -266,7 +265,7 @@ Rhino3dmLoader.prototype = Object.assign( Object.create( Loader.prototype ), {
 
 			}
 
-			console.log(instanceReferences);
+			// Currently clones geometry and does not take advantage of instancing
 
 			for ( var j = 0; j < instanceReferences.length; j ++ ) {
 
@@ -274,17 +273,15 @@ Rhino3dmLoader.prototype = Object.assign( Object.create( Loader.prototype ), {
 
 				if ( iRef.geometry.parentIdefId === iDef.attributes.id ) {
 
-					//console.log(iRef);
 					var iRefObject = new Object3D();
 					var xf = iRef.geometry.xform.array;
 
 					var matrix = new Matrix4();
-          			matrix.set(xf[0], xf[1], xf[2], xf[3], xf[4], xf[5], xf[6], xf[7],
-					xf[8], xf[9], xf[10], xf[11], xf[12], xf[13], xf[14], xf[15]);
-					
+          			matrix.set( xf[ 0 ], xf[ 1 ], xf[ 2 ], xf[ 3 ], xf[ 4 ], xf[ 5 ], xf[ 6 ], xf[ 7 ], xf[ 8 ], xf[ 9 ], xf[ 10 ], xf[ 11 ], xf[ 12 ], xf[ 13 ], xf[ 14 ], xf[ 15 ] );
+
 					iRefObject.applyMatrix4( matrix );
 
-					for( var p = 0; p < objects.length; p ++ ) {
+					for ( var p = 0; p < objects.length; p ++ ) {
 
 						iRefObject.add( objects[ p ].clone( true ) );
 
@@ -297,17 +294,18 @@ Rhino3dmLoader.prototype = Object.assign( Object.create( Loader.prototype ), {
 			}
 
 		}
-		
+
 		return object;
 
 	},
+
 	_createObject: function ( obj, mat ) {
 
 		var loader = new BufferGeometryLoader();
 
 		var attributes = obj.attributes;
-		
-		switch(  obj.objectType ) {
+
+		switch ( obj.objectType ) {
 
 			case 'Point':
 			case 'PointSet':
@@ -351,7 +349,7 @@ Rhino3dmLoader.prototype = Object.assign( Object.create( Loader.prototype ), {
 				brepObject.userData[ 'objectType' ] = obj.objectType;
 
 				return brepObject;
-			
+
 			case 'Curve':
 
 				geometry = loader.parse( obj.geometry );
@@ -390,8 +388,9 @@ Rhino3dmLoader.prototype = Object.assign( Object.create( Loader.prototype ), {
 				return dot;
 
 		}
-		
+
 	},
+
 	_initLibrary: function () {
 
 		if ( ! this.libraryPending ) {
@@ -497,6 +496,7 @@ Rhino3dmLoader.prototype = Object.assign( Object.create( Loader.prototype ), {
 			return worker;
 
 		} );
+
 	},
 
 	_releaseTask: function ( worker, taskID ) {
@@ -542,7 +542,7 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 				libraryConfig = message.libraryConfig;
 				var wasmBinary = libraryConfig.wasmBinary;
 				var RhinoModule;
-				libraryPending = new Promise( function ( resolve ) { 
+				libraryPending = new Promise( function ( resolve ) {
 
 					/* Like Basis Loader */
 					RhinoModule = { wasmBinary, onRuntimeInitialized: resolve };
@@ -553,8 +553,8 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 
 					rhino = RhinoModule;
 
-				 });
-				 
+				 } );
+
 				break;
 
 			case 'decode':
@@ -567,9 +567,11 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 					self.postMessage( { type: 'decode', id: message.id, data } );
 
 				} );
-				
-			break;
+
+				break;
+
 		}
+
 	};
 
 	function decodeObjects( rhino, buffer ) {
@@ -593,12 +595,14 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 
 			var object = extractObjectData( _object, doc );
 
-			if ( object !== undefined ){
+			if ( object !== undefined ) {
+
 				objects.push( object );
+
 			}
 
 			_object.delete();
-			
+
 		}
 
 		// Handle instance definitions
@@ -615,13 +619,13 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 
 		// Handle materials
 
-		for ( var i = 0; i < doc.materials().count(); i ++) {
+		for ( var i = 0; i < doc.materials().count(); i ++ ) {
 
 			var _material = doc.materials().get( i );
 			var materialProperties = extractProperties( _material );
 			var pbMaterialProperties = extractProperties( _material.physicallyBased() );
-			
-			var material = Object.assign(materialProperties, pbMaterialProperties);
+
+			var material = Object.assign( materialProperties, pbMaterialProperties );
 
 			materials.push( material );
 
@@ -631,7 +635,7 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 
 		// Handle layers
 
-		for ( var i = 0; i < doc.layers().count(); i ++) {
+		for ( var i = 0; i < doc.layers().count(); i ++ ) {
 
 			var _layer = doc.layers().get( i );
 			var layer = extractProperties( _layer );
@@ -639,12 +643,12 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 			layers.push( layer );
 
 			_layer.delete();
-			
-		} 
+
+		}
 
 		// Handle views
 
-		for ( var i = 0; i < doc.views().count(); i ++) {
+		for ( var i = 0; i < doc.views().count(); i ++ ) {
 
 			var _view = doc.views().get( i );
 			var view = extractProperties( _view );
@@ -652,11 +656,12 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 			views.push( view );
 
 			_view.delete();
+
 		}
 
 		// Handle named views
 
-		for ( var i = 0; i < doc.namedViews().count(); i ++) {
+		for ( var i = 0; i < doc.namedViews().count(); i ++ ) {
 
 			var _namedView = doc.namedViews().get( i );
 			var namedView = extractProperties( _namedView );
@@ -664,11 +669,12 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 			namedViews.push( namedView );
 
 			_namedView.delete();
+
 		}
 
 		// Handle groups
 
-		for ( var i = 0; i < doc.groups().count(); i ++ ){
+		for ( var i = 0; i < doc.groups().count(); i ++ ) {
 
 			var _group = doc.groups().get( i );
 			var group = extractProperties( _group );
@@ -686,16 +692,16 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 		//TODO: Handle other document stuff like dimstyles, instance definitions, bitmaps etc.
 
 		// Handle dimstyles
-		// console.log(`Dimstyle Count: ${doc.dimstyles().count()}`); 
+		// console.log(`Dimstyle Count: ${doc.dimstyles().count()}`);
 
 		// Handle bitmaps
-		// console.log(`Bitmap Count: ${doc.bitmaps().count()}`); 
+		// console.log(`Bitmap Count: ${doc.bitmaps().count()}`);
 
 		// Handle instance definitions
-		// console.log(`Instance Definitions Count: ${doc.instanceDefinitions().count()}`); 
+		// console.log(`Instance Definitions Count: ${doc.instanceDefinitions().count()}`);
 
 		// Handle strings -- this seems to be broken at the moment in rhino3dm
-		// console.log(`Strings Count: ${doc.strings().count()}`); 
+		// console.log(`Strings Count: ${doc.strings().count()}`);
 		/*
 		for( var i = 0; i < doc.strings().count(); i++ ){
 
@@ -737,18 +743,18 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 
 				var position = {};
 				var color = {};
-				var attributes = {}
+				var attributes = {};
 				var data = {};
 
 				position.itemSize = 3;
 				position.type = 'Float32Array';
 				position.array = [];
 
-				for( var j = 0; j < pts.length; j++ ) {
+				for ( var j = 0; j < pts.length; j ++ ) {
 
-					position.array.push( pts[j][0] );
-					position.array.push( pts[j][1] );
-					position.array.push( pts[j][2] );
+					position.array.push( pts[ j ][ 0 ] );
+					position.array.push( pts[ j ][ 1 ] );
+					position.array.push( pts[ j ][ 2 ] );
 
 				}
 
@@ -765,12 +771,12 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 
 				var position = {};
 				var color = {};
-				var attributes = {}
+				var attributes = {};
 				var data = {};
 
 				position.itemSize = 3;
 				position.type = 'Float32Array';
-				position.array = [ pt[0], pt[1], pt[2] ];
+				position.array = [ pt[ 0 ], pt[ 1 ], pt[ 2 ] ];
 
 				_color = _attributes.drawColor( doc );
 
@@ -798,7 +804,7 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 				var faces = _geometry.faces();
 				geometry = [];
 
-				for (var faceIndex = 0; faceIndex < faces.count; faceIndex++) {
+				for ( var faceIndex = 0; faceIndex < faces.count; faceIndex ++ ) {
 
 					var face = faces.get( faceIndex );
 					var mesh = face.getMesh( rhino.MeshType.Any );
@@ -811,6 +817,7 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 					}
 
 					face.delete();
+
 				}
 
 				faces.delete();
@@ -819,23 +826,23 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 
 			case rhino.ObjectType.Extrusion:
 
-				var mesh = _geometry.getMesh(rhino.MeshType.Any);
+				var mesh = _geometry.getMesh( rhino.MeshType.Any );
 
-				if( mesh ) {
+				if ( mesh ) {
 
 					geometry = mesh.toThreejsJSON();
 					mesh.delete();
 
-				} 
+				}
 
 				break;
 
 			case rhino.ObjectType.TextDot:
-				
+
 				geometry = extractProperties( _geometry );
 
 				break;
-			
+
 			case rhino.ObjectType.InstanceReference:
 
 				geometry = extractProperties( _geometry );
@@ -843,18 +850,19 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 				geometry.xform.array = _geometry.xform.toFloatArray( true );
 
 				break;
-			
-			/*
-			case rhino.ObjectType.Light:
-			case rhino.ObjectType.Annotation:
-			case rhino.ObjectType.Hatch:
-			case rhino.ObjectType.SubD:
-			case rhino.ObjectType.ClipPlane:
-			*/
+
+				/*
+				case rhino.ObjectType.Light:
+				case rhino.ObjectType.Annotation:
+				case rhino.ObjectType.Hatch:
+				case rhino.ObjectType.SubD:
+				case rhino.ObjectType.ClipPlane:
+				*/
 
 			default:
-				console.warn(`THREE.3DMLoader: TODO: Implement ${objectType.constructor.name}`);
+				console.warn( `THREE.3DMLoader: TODO: Implement ${objectType.constructor.name}` );
 				break;
+
 		}
 
 		if ( geometry ) {
@@ -862,7 +870,9 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 			var attributes = extractProperties( _attributes );
 
 			if ( _attributes.groupCount > 0 ) {
+
 				attributes.groupIds = _attributes.getGroupList();
+
 			}
 
 			attributes.drawColor = _attributes.drawColor( doc );
@@ -882,7 +892,7 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 
 		for ( var property in object ) {
 
-			if( typeof object[ property ] !== 'function' ){
+			if ( typeof object[ property ] !== 'function' ) {
 
 				result[ property ] = object[ property ];
 
@@ -895,101 +905,105 @@ Rhino3dmLoader.Rhino3dmWorker = function () {
 		}
 
 		return result;
+
 	}
 
-	function curveToPoints ( curve, pointLimit ) {
+	function curveToPoints( curve, pointLimit ) {
 
 		var pointCount = pointLimit;
 		var rc = [];
 		var ts = [];
 
-		// console.log(curve);
-	  
 		if ( curve instanceof rhino.LineCurve ) {
 
-		  return [ curve.pointAtStart, curve.pointAtEnd ];
+		  	return [ curve.pointAtStart, curve.pointAtEnd ];
 
 		}
-	  
+
 		if ( curve instanceof rhino.PolylineCurve ) {
 
-		  pointCount = curve.pointCount;
-		  for ( var i = 0; i < pointCount; i ++ ) {
+		  	pointCount = curve.pointCount;
+		  	for ( var i = 0; i < pointCount; i ++ ) {
+
+				rc.push( curve.point( i ) );
+
+		  	}
 
-			rc.push( curve.point( i )) ;
+		  	return rc;
 
-		  }
-		  return rc;
 		}
-	  
+
 		if ( curve instanceof rhino.PolyCurve ) {
 
-		  var segmentCount = curve.segmentCount;
+		  	var segmentCount = curve.segmentCount;
+
+		  	for ( var i = 0; i < segmentCount; i ++ ) {
 
-		  for ( var i = 0; i < segmentCount; i ++ ) {
+				var segment = curve.segmentCurve( i );
+				var segmentArray = curveToPoints( segment );
+				rc = rc.concat( segmentArray );
+				segment.delete();
 
-			var segment = curve.segmentCurve( i );
-			var segmentArray = curveToPoints( segment );
-			rc = rc.concat( segmentArray );
-			segment.delete();
+			}
 
-		  }
-		  return rc;
+		  	return rc;
 
 		}
-	  
+
 		if ( curve instanceof rhino.NurbsCurve && curve.degree === 1 ) {
 
-		  console.info( 'degree 1 curve' );
+		  	console.info( 'degree 1 curve' );
 
 		}
-	  
+
 		var domain = curve.domain;
 		var divisions = pointCount - 1.0;
 
 		for ( var j = 0; j < pointCount; j ++ ) {
 
-		  var t = domain[ 0 ] + ( j / divisions ) * ( domain[ 1 ] - domain[ 0 ] );
+			var t = domain[ 0 ] + ( j / divisions ) * ( domain[ 1 ] - domain[ 0 ] );
+
+			if ( t === domain[ 0 ] || t === domain[ 1 ] ) {
 
-		  if ( t === domain[ 0 ] || t === domain[ 1 ] ) {
+				ts.push( t );
+				continue;
 
-			ts.push( t );
-			continue;
+		  	}
 
-		  }
+		  	var tan = curve.tangentAt( t );
+		  	var prevTan = curve.tangentAt( ts.slice( - 1 )[ 0 ] );
 
-		  var tan = curve.tangentAt( t );
-		  var prevTan = curve.tangentAt( ts.slice( -1 )[ 0 ]);
+		  	// Duplicaated from THREE.Vector3
+		  	// How to pass imports to worker?
 
-		  // Duplicaated from THREE.Vector3
-		  // How to pass imports to worker?
+		  	tS = tan[ 0 ] * tan[ 0 ] + tan[ 1 ] * tan[ 1 ] + tan[ 2 ] * tan[ 2 ];
+		  	ptS = prevTan[ 0 ] * prevTan[ 0 ] + prevTan[ 1 ] * prevTan[ 1 ] + prevTan[ 2 ] * prevTan[ 2 ];
 
-		  tS = tan[ 0 ] * tan[ 0 ] + tan[ 1 ] * tan[ 1 ] + tan[ 2 ] * tan[ 2 ];
-		  ptS = prevTan[ 0 ] * prevTan[ 0 ] + prevTan[ 1 ] * prevTan[ 1 ] + prevTan[ 2 ] * prevTan[ 2 ];
+		  	var denominator = Math.sqrt( tS * ptS );
 
-		  var denominator = Math.sqrt( tS * ptS );
+		  	var angle;
 
-		  var angle;
+		  	if ( denominator === 0 ) {
 
-		  if( denominator === 0 ) {
+				angle = Math.PI / 2;
 
-			angle = Math.PI / 2;
+		  	} else {
 
-		  } else {
+				var theta = ( tan.x * prevTan.x + tan.y * prevTan.y + tan.z * prevTan.z ) / denominator;
+				angle = Math.acos( Math.max( - 1, Math.min( 1, theta ) ) );
 
-			  var theta = ( tan.x * prevTan.x + tan.y * prevTan.y + tan.z * prevTan.z ) / denominator;
-			  angle = Math.acos( Math.max( - 1, Math.min( 1, theta ) ) );
+		  	}
 
-		  }
+		  	if ( angle < 0.1 ) continue;
+		  	ts.push( t );
 
-		  if ( angle < 0.1 ) { continue; }
-		  ts.push( t );
 		}
-	  
+
 		rc = ts.map( t => curve.pointAt( t ) );
 		return rc;
+
 	}
 
 };
 
-export { Rhino3dmLoader };
+export { Rhino3dmLoader };

+ 12 - 11
examples/webgl_loader_3dm.html

@@ -31,12 +31,12 @@
 
 			function init() {
 
-				THREE.Object3D.DefaultUp = new THREE.Vector3(0,0,1);
+				THREE.Object3D.DefaultUp = new THREE.Vector3( 0, 0, 1 );
 				container = document.createElement( 'div' );
 				document.body.appendChild( container );
 
 				camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 1, 1000 );
-				camera.position.set(26,-40,5)
+				camera.position.set( 26, - 40, 5 );
 
 				scene = new THREE.Scene();
 
@@ -49,7 +49,7 @@
 				scene.add( directionalLight );
 
 				var loader = new Rhino3dmLoader( );
-				loader.setLibraryPath('jsm/libs/rhino3dm/');
+				loader.setLibraryPath( 'jsm/libs/rhino3dm/' );
 				
 				loader.load( 'models/3dm/Rhino_Logo.3dm', function ( object ) {
 
@@ -87,8 +87,8 @@
 				camera.aspect = width / height;
 				camera.updateProjectionMatrix();
 
-				renderer.setSize( width, height);
-				labelRenderer.setSize( width, height);
+				renderer.setSize( width, height );
+				labelRenderer.setSize( width, height );
 
 			}
 
@@ -105,10 +105,10 @@
 			function initGUI( layers ) {
 
 				gui = new GUI( { width: 300 } );
-				var layersControl= gui.addFolder( 'layers' );
+				var layersControl = gui.addFolder( 'layers' );
 				layersControl.open();
 
-				for( var i = 0; i < layers.length; i++) {
+				for ( var i = 0; i < layers.length; i ++ ) {
 
 					var layer = layers[ i ];
 					layersControl.add( layer, 'visible' ).name( layer.name ).onChange( function ( val ) {
@@ -117,13 +117,13 @@
 
 						scene.traverse( function ( child ) {
 
-							if( child.userData.hasOwnProperty('attributes') ) {
+							if ( child.userData.hasOwnProperty( 'attributes' ) ) {
 
-								if( 'layerIndex' in child.userData.attributes ) {
+								if ( 'layerIndex' in child.userData.attributes ) {
 
-									var layerName = layers[child.userData.attributes.layerIndex].name;
+									var layerName = layers[ child.userData.attributes.layerIndex ].name;
 
-									if( layerName === name ) {
+									if ( layerName === name ) {
 										
 										child.visible = val;
 										layer.visible = val;
@@ -137,6 +137,7 @@
 						} );
 
 					} );
+
 				}
 
 			}