瀏覽代碼

Starting to combine GeometryExporter in SceneExporter2.

Mr.doob 12 年之前
父節點
當前提交
9ff2fa8b41

+ 6 - 2
editor/js/ui/Viewport.js

@@ -692,7 +692,9 @@ var Viewport = function ( signals ) {
 		}
 
 		var exporter = new object.exporter();
-		var output = exporter.parse( selected.geometry );
+		
+		var output = JSON.stringify( exporter.parse( selected.geometry ), null, '\t' );
+		output = output.replace( /[\n\t]+([\d\.e\-\[\]]+)/g, '$1' );
 
 		var blob = new Blob( [ output ], { type: 'text/plain' } );
 		var objectURL = URL.createObjectURL( blob );
@@ -705,7 +707,9 @@ var Viewport = function ( signals ) {
 	signals.exportScene.add( function ( object ) {
 
 		var exporter = new object.exporter();
-		var output = exporter.parse( scene );
+
+		var output = JSON.stringify( exporter.parse( scene ), null, '\t' );
+		output = output.replace( /[\n\t]+([\d\.e\-\[\]]+)/g, '$1' );
 
 		var blob = new Blob( [ output ], { type: 'text/plain' } );
 		var objectURL = URL.createObjectURL( blob );

+ 4 - 8
examples/js/exporters/GeometryExporter.js

@@ -161,20 +161,16 @@ THREE.GeometryExporter.prototype = {
 
 		//
 
-		var output = JSON.stringify( {
+		return {
 			metadata: {
-				formatVersion: 3.1,
-				generatedBy: "GeometryExporter",
+				version: 4,
+				generator: "GeometryExporter",
 			},
 			vertices: vertices,
 			normals: normals,
 			uvs: uvs,
 			faces: faces
-		}, null, '\t' );
-
-		// output = output.replace( /[\n\t]+([\d\.e\-\[\]]+)/g, '$1' );
-
-		return output;
+		};
 
 	}
 

+ 1 - 1
examples/js/exporters/SceneExporter.js

@@ -747,7 +747,7 @@ THREE.SceneExporter.prototype = {
 			'}'
 		].join( '\n' );
 
-		return output;
+		return JSON.parse( output );
 
 	}
 

+ 39 - 2
examples/js/exporters/SceneExporter2.js

@@ -14,12 +14,48 @@ THREE.SceneExporter2.prototype = {
 			metadata: {
 				version: 4.0,
 				type: 'scene',
-				generatedBy: 'SceneExporter'
+				generator: 'SceneExporter'
 			}
 		};
 
 		console.log( scene );
 
+		//
+
+		var geometries = {};
+		var geometryExporter = new THREE.GeometryExporter();
+
+		var parseGeometry = function ( geometry ) {
+
+			if ( geometries[ geometry.id ] === undefined ) {
+
+				if ( output.geometries === undefined ) {
+
+					output.geometries = [];
+
+				}
+
+				geometries[ geometry.id ] = output.geometries.length;
+
+				output.geometries.push( geometryExporter.parse( geometry ) );
+
+			}
+
+			return geometries[ geometry.id ];
+
+		};
+		
+		/*
+		var materials = {};
+		var materialExporter = new THREE.MaterialExporter();
+
+		var parseMaterial = function ( material ) {
+
+
+
+		};
+		*/
+
 		var parseObject = function ( object ) {
 
 			var data = { name: object.name };
@@ -84,6 +120,7 @@ THREE.SceneExporter2.prototype = {
 				data.position = object.position.toArray();
 				data.rotation = object.rotation.toArray();
 				data.scale = object.scale.toArray();
+				data.geometry = parseGeometry( object.geometry );
 
 			} else {
 
@@ -114,7 +151,7 @@ THREE.SceneExporter2.prototype = {
 
 		output.scene = parseObject( scene ).children;
 
-		return JSON.stringify( output, null, '\t' );
+		return output;
 
 	}