Browse Source

Editor: Wired up BufferGeometryLoader and BufferGeometryExporter.

Mr.doob 12 years ago
parent
commit
d73ba07dc1

+ 2 - 1
editor/index.html

@@ -39,7 +39,7 @@
 					.menubar .menu .options {
 					.menubar .menu .options {
 						padding: 5px 0px;
 						padding: 5px 0px;
 						background-color: #fff;
 						background-color: #fff;
-						width: 140px;
+						width: 170px;
 					}
 					}
 
 
 						.menubar .menu .options hr {
 						.menubar .menu .options hr {
@@ -109,6 +109,7 @@
 
 
 		<!-- WIP -->
 		<!-- WIP -->
 
 
+		<script src="../examples/js/exporters/BufferGeometryExporter.js"></script>
 		<script src="../examples/js/exporters/GeometryExporter.js"></script>
 		<script src="../examples/js/exporters/GeometryExporter.js"></script>
 		<script src="../examples/js/exporters/MaterialExporter.js"></script>
 		<script src="../examples/js/exporters/MaterialExporter.js"></script>
 		<script src="../examples/js/exporters/ObjectExporter.js"></script>
 		<script src="../examples/js/exporters/ObjectExporter.js"></script>

+ 5 - 5
editor/js/Loader.js

@@ -334,13 +334,13 @@ var Loader = function ( editor ) {
 
 
 		if ( data.metadata === undefined ) { // 2.0
 		if ( data.metadata === undefined ) { // 2.0
 
 
-			data.metadata = { type: 'geometry' };
+			data.metadata = { type: 'Geometry' };
 
 
 		}
 		}
 
 
 		if ( data.metadata.type === undefined ) { // 3.0
 		if ( data.metadata.type === undefined ) { // 3.0
 
 
-			data.metadata.type = 'geometry';
+			data.metadata.type = 'Geometry';
 
 
 		}
 		}
 
 
@@ -350,7 +350,7 @@ var Loader = function ( editor ) {
 
 
 		}
 		}
 
 
-		if ( data.metadata.type === 'geometry' ) {
+		if ( data.metadata.type.toLowerCase() === 'geometry' ) {
 
 
 			var loader = new THREE.JSONLoader();
 			var loader = new THREE.JSONLoader();
 			var result = loader.parse( data );
 			var result = loader.parse( data );
@@ -368,7 +368,7 @@ var Loader = function ( editor ) {
 
 
 			editor.addObject( mesh );
 			editor.addObject( mesh );
 
 
-		} else if ( data.metadata.type === 'object' ) {
+		} else if ( data.metadata.type.toLowerCase() === 'object' ) {
 
 
 			var loader = new THREE.ObjectLoader();
 			var loader = new THREE.ObjectLoader();
 			var result = loader.parse( data );
 			var result = loader.parse( data );
@@ -383,7 +383,7 @@ var Loader = function ( editor ) {
 
 
 			}
 			}
 
 
-		} else if ( data.metadata.type === 'scene' ) {
+		} else if ( data.metadata.type.toLowerCase() === 'scene' ) {
 
 
 			// DEPRECATED
 			// DEPRECATED
 
 

+ 14 - 1
editor/js/Menubar.File.js

@@ -67,6 +67,19 @@ Menubar.File = function ( editor ) {
 	options.add( new UI.HorizontalRule() );
 	options.add( new UI.HorizontalRule() );
 
 
 
 
+	// export buffergeometry
+
+	var option = new UI.Panel();
+	option.setClass( 'option' );
+	option.setTextContent( 'Export BufferGeometry' );
+	option.onClick( function () {
+
+		exportGeometry( THREE.BufferGeometryExporter );
+
+	} );
+	options.add( option );
+
+
 	// export geometry
 	// export geometry
 
 
 	var option = new UI.Panel();
 	var option = new UI.Panel();
@@ -146,7 +159,7 @@ Menubar.File = function ( editor ) {
 
 
 		var output;
 		var output;
 
 
-		if ( exporter instanceof THREE.GeometryExporter ) {
+		if ( exporter instanceof THREE.BufferGeometryExporter || exporter instanceof THREE.GeometryExporter ) {
 
 
 			output = JSON.stringify( exporter.parse( object.geometry ), null, '\t' );
 			output = JSON.stringify( exporter.parse( object.geometry ), null, '\t' );
 			output = output.replace( /[\n\t]+([\d\.e\-\[\]]+)/g, '$1' );
 			output = output.replace( /[\n\t]+([\d\.e\-\[\]]+)/g, '$1' );

+ 9 - 1
examples/js/exporters/ObjectExporter.js

@@ -15,7 +15,7 @@ THREE.ObjectExporter.prototype = {
 		var output = {
 		var output = {
 			metadata: {
 			metadata: {
 				version: 4.3,
 				version: 4.3,
-				type: 'object',
+				type: 'Object',
 				generator: 'ObjectExporter'
 				generator: 'ObjectExporter'
 			}
 			}
 		};
 		};
@@ -24,6 +24,7 @@ THREE.ObjectExporter.prototype = {
 
 
 		var geometries = {};
 		var geometries = {};
 		var geometryExporter = new THREE.GeometryExporter();
 		var geometryExporter = new THREE.GeometryExporter();
+		var bufferGeometryExporter = new THREE.BufferGeometryExporter();
 
 
 		var parseGeometry = function ( geometry ) {
 		var parseGeometry = function ( geometry ) {
 
 
@@ -106,6 +107,13 @@ THREE.ObjectExporter.prototype = {
 					data.q = geometry.q;
 					data.q = geometry.q;
 					data.heightScale = geometry.heightScale;
 					data.heightScale = geometry.heightScale;
 
 
+				} else if ( geometry instanceof THREE.BufferGeometry ) {
+
+					data.type = 'BufferGeometry';
+					data.data = bufferGeometryExporter.parse( geometry );
+
+					delete data.data.metadata;
+
 				} else if ( geometry instanceof THREE.Geometry ) {
 				} else if ( geometry instanceof THREE.Geometry ) {
 
 
 					data.type = 'Geometry';
 					data.type = 'Geometry';

+ 9 - 2
src/loaders/ObjectLoader.js

@@ -48,7 +48,8 @@ THREE.ObjectLoader.prototype = {
 
 
 		if ( json !== undefined ) {
 		if ( json !== undefined ) {
 
 
-			var loader = new THREE.JSONLoader();
+			var geometryLoader = new THREE.JSONLoader();
+			var bufferGeometryLoader = new THREE.BufferGeometryLoader();
 
 
 			for ( var i = 0, l = json.length; i < l; i ++ ) {
 			for ( var i = 0, l = json.length; i < l; i ++ ) {
 
 
@@ -143,9 +144,15 @@ THREE.ObjectLoader.prototype = {
 
 
 						break;
 						break;
 
 
+					case 'BufferGeometry':
+
+						geometry = bufferGeometryLoader.parse( data.data );
+
+						break;
+
 					case 'Geometry':
 					case 'Geometry':
 
 
-						geometry = loader.parse( data.data ).geometry;
+						geometry = geometryLoader.parse( data.data ).geometry;
 
 
 						break;
 						break;
 
 

+ 1 - 0
utils/build/includes/common.json

@@ -44,6 +44,7 @@
 	"src/loaders/ImageLoader.js",
 	"src/loaders/ImageLoader.js",
 	"src/loaders/JSONLoader.js",
 	"src/loaders/JSONLoader.js",
 	"src/loaders/LoadingManager.js",
 	"src/loaders/LoadingManager.js",
+	"src/loaders/BufferGeometryLoader.js",
 	"src/loaders/GeometryLoader.js",
 	"src/loaders/GeometryLoader.js",
 	"src/loaders/MaterialLoader.js",
 	"src/loaders/MaterialLoader.js",
 	"src/loaders/ObjectLoader.js",
 	"src/loaders/ObjectLoader.js",