Bläddra i källkod

Added VTK and STL models to scene loader example. Added optional callback parameter to VTKLoader and STLLoader load to be compatible with other loaders.

Work in progress. Not really sure how to best deal with different loaders using different APIs. We should unify them somehow. Still need to handle ColladaLoader, UTF8Loader and OBJMTLLoader, every one of them is different from the others.
alteredq 12 år sedan
förälder
incheckning
22e512635b

+ 11 - 1
examples/js/loaders/STLLoader.js

@@ -28,7 +28,7 @@ THREE.STLLoader.prototype = {
 
 	constructor: THREE.STLLoader,
 
-	load: function ( url ) {
+	load: function ( url, callback ) {
 
 		var scope = this;
 		var request = new XMLHttpRequest();
@@ -51,6 +51,16 @@ THREE.STLLoader.prototype = {
 
 		}, false );
 
+		if ( callback ) {
+
+			scope.addEventListener( 'load', function ( event ) {
+
+				callback( event.content );
+
+			} );
+
+		}
+
 		request.open( 'GET', url, true );
 		request.send( null );
 

+ 11 - 1
examples/js/loaders/VTKLoader.js

@@ -12,7 +12,7 @@ THREE.VTKLoader.prototype = {
 
 	constructor: THREE.VTKLoader,
 
-	load: function ( url ) {
+	load: function ( url, callback ) {
 
 		var scope = this;
 		var request = new XMLHttpRequest();
@@ -35,6 +35,16 @@ THREE.VTKLoader.prototype = {
 
 		}, false );
 
+		if ( callback ) {
+
+			scope.addEventListener( 'load', function ( event ) {
+
+				callback( event.content );
+
+			} );
+
+		}
+
 		request.open( 'GET', url, true );
 		request.send( null );
 

+ 38 - 0
examples/scenes/test_scene.js

@@ -224,6 +224,24 @@
 			"visible"  : true
 		},
 
+		"bunny" : {
+			"geometry": "bunny",
+			"materials": [ "phong_bunny" ],
+			"position" : [ -25, -14, 0 ],
+			"rotation" : [ 0, 0, 0 ],
+			"scale"	   : [ 100, 100, 100 ],
+			"visible"  : true
+		},
+
+		"disk" : {
+			"geometry": "disk",
+			"materials": [ "phong_disk" ],
+			"position" : [ 7, -10, 30 ],
+			"rotation" : [ 1.57, 0, 0 ],
+			"scale"	   : [ 10, 10, 10 ],
+			"visible"  : true
+		},
+
 		"quad_bg" : {
 			"geometry" : "quad",
 			"materials": [ "textured_bg" ],
@@ -430,6 +448,16 @@
 			"useBuffers" : true
 		},
 
+		"bunny": {
+			"type": "vtk",
+			"url" : "models/vtk/bunny.vtk"
+		},
+
+		"disk": {
+			"type": "stl",
+			"url" : "models/stl/slotted_disk.stl"
+		},
+
 		"hand": {
 			"type": "utf8",
 			"url" : "models/utf8/hand.utf8",
@@ -516,6 +544,16 @@
 			"parameters": { "color": 14531481, "ambient": 14531481, "specular": 2236962, "shininess": 40, "wrapAround": true, "wrapRGB": [ 0.15, 0.02, 0.01 ] }
 		},
 
+		"phong_bunny": {
+			"type": "MeshPhongMaterial",
+			"parameters": { "color": 16777215, "ambient": 16777215, "specular": 1118481, "shininess": 10 }
+		},
+
+		"phong_disk": {
+			"type": "MeshPhongMaterial",
+			"parameters": { "color": 16733491, "ambient": 16733491, "specular": 1118481, "shininess": 30, "wireframe": false }
+		},
+
 		"phong_normal": {
 			"type": "MeshPhongMaterial",
 			"parameters": { "color": 0, "specular": 16777215, "shininess": 25, "envMap": "cube_reflection", "reflectivity": 0.1, "lightMap": "texture_ao", "normalMap": "texture_normal", "normalScale": [ 1, -1 ], "displacementMap": "texture_displacement", "displacementScale": 2.436143, "displacementBias": -0.428408 }

+ 5 - 0
examples/webgl_loader_scene.html

@@ -154,6 +154,8 @@
 		<script src="js/loaders/ctm/CTMLoader.js"></script>
 
 		<script src="js/loaders/OBJLoader.js"></script>
+		<script src="js/loaders/VTKLoader.js"></script>
+		<script src="js/loaders/STLLoader.js"></script>
 
 		<script src="js/Detector.js"></script>
 		<script src="js/libs/stats.min.js"></script>
@@ -347,6 +349,9 @@
 				var loader = new THREE.SceneLoader();
 
 				loader.addGeometryHandler( "ctm", THREE.CTMLoader );
+				loader.addGeometryHandler( "vtk", THREE.VTKLoader );
+				loader.addGeometryHandler( "stl", THREE.STLLoader );
+
 				loader.addHierarchyHandler( "obj", THREE.OBJLoader );
 
 				loader.callbackSync = callbackSync;

+ 1 - 1
examples/webgl_loader_vtk.html

@@ -95,7 +95,7 @@
 					scene.add( mesh );
 
 				} );
-				loader.load ( "models/vtk/bunny.vtk" );
+				loader.load( "models/vtk/bunny.vtk" );
 
 				// renderer