소스 검색

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 년 전
부모
커밋
22e512635b
5개의 변경된 파일66개의 추가작업 그리고 3개의 파일을 삭제
  1. 11 1
      examples/js/loaders/STLLoader.js
  2. 11 1
      examples/js/loaders/VTKLoader.js
  3. 38 0
      examples/scenes/test_scene.js
  4. 5 0
      examples/webgl_loader_scene.html
  5. 1 1
      examples/webgl_loader_vtk.html

+ 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