浏览代码

Update loader-assimp2json example: assimp.json is the new extension for assimp2json JSON files and a format metadata header is added to the format.

acgessler 11 年之前
父节点
当前提交
f36c382b45

+ 21 - 1
examples/js/loaders/AssimpJSONLoader.js

@@ -31,7 +31,27 @@ THREE.AssimpJSONLoader.prototype = {
 		var loader = new THREE.XHRLoader( this.manager );
 		loader.setCrossOrigin( this.crossOrigin );
 		loader.load( url, function ( text ) {
-			var scene = scope.parse( JSON.parse( text ) );
+			var json = JSON.parse( text ), scene, metadata;
+
+			// Check __metadata__ meta header if present
+			// This header is used to disambiguate between
+			// different JSON-based file formats.
+			metadata = json.__metadata__;
+			if ( typeof metadata !== 'undefined' )
+			{
+				// Check if assimp2json at all
+				if ( metadata.format !== 'assimp2json' ) {
+					onError('Not an assimp2json scene');
+					return;
+				}
+				// Check major format version
+				else if ( metadata.version < 100 && metadata.version >= 200 ) {
+					onError('Unsupported assimp2json file format version');
+					return;
+				}
+			}
+
+			scene = scope.parse( json );
 			onLoad( scene );
 		} );
 	},

+ 5 - 1
examples/models/assimp/interior/interior.3ds.json → examples/models/assimp/interior/interior.assimp.json

@@ -1,5 +1,9 @@
 {
-	 "rootnode": {
+	 "__metadata__": {
+	 	 "format" : "assimp2json"
+	 	,"version": 100
+	}
+	,"rootnode": {
 		 "name": "<3DSRoot>"
 		,"transformation": [
 			 1

+ 5 - 1
examples/models/assimp/jeep/jeep1.ms3d.json → examples/models/assimp/jeep/jeep.assimp.json

@@ -1,5 +1,9 @@
 {
-	 "rootnode": {
+	 "__metadata__": {
+	 	 "format" : "assimp2json"
+	 	,"version": 100
+	}
+	,"rootnode": {
 		 "name": "<MS3DRoot>"
 		,"transformation": [
 			 1

+ 2 - 2
examples/webgl_loader_assimp2json.html

@@ -82,7 +82,7 @@
 
 			// Load jeep model using the AssimpJSONLoader
 			var loader1 = new THREE.AssimpJSONLoader();
-			loader1.load( 'models/assimp/jeep/jeep1.ms3d.json', function ( assimpjson ) {
+			loader1.load( 'models/assimp/jeep/jeep.assimp.json', function ( assimpjson ) {
 
 				assimpjson.scale.x = assimpjson.scale.y = assimpjson.scale.z = 0.2;
 				assimpjson.updateMatrix();
@@ -93,7 +93,7 @@
 
 			// load interior model
 			var loader2 = new THREE.AssimpJSONLoader();
-			loader2.load( 'models/assimp/interior/interior.3ds.json', function ( assimpjson ) {
+			loader2.load( 'models/assimp/interior/interior.assimp.json', function ( assimpjson ) {
 
 				assimpjson.scale.x = assimpjson.scale.y = assimpjson.scale.z = 1;
 				assimpjson.updateMatrix();