Ver Fonte

Editor: Support zipped glb and gltfs.

Mr.doob há 7 anos atrás
pai
commit
aea121179a
1 ficheiros alterados com 47 adições e 1 exclusões
  1. 47 1
      editor/js/Loader.js

+ 47 - 1
editor/js/Loader.js

@@ -472,7 +472,7 @@ var Loader = function ( editor ) {
 
 					var zip = new JSZip( contents );
 
-					// BLOCKS
+					// Poly
 
 					if ( zip.files[ 'model.obj' ] && zip.files[ 'materials.mtl' ] ) {
 
@@ -482,6 +482,52 @@ var Loader = function ( editor ) {
 
 					}
 
+					//
+
+					zip.filter( function ( path, file ) {
+
+						// GLB
+
+						if ( file.name.search( /\.glb$/i ) > - 1 ) {
+
+							var loader = new THREE.GLTFLoader( manager );
+							loader.parse( file.asArrayBuffer(), '', function ( result ) {
+
+								editor.execute( new AddObjectCommand( result.scene ) );
+
+							} );
+
+						}
+
+						// GLTF
+
+						if ( file.name.search( /\.gltf$/i ) > - 1 ) {
+
+							var manager = new THREE.LoadingManager();
+							manager.setURLModifier( function ( url ) {
+
+								var file = zip.files[ url ];
+
+								if ( file ) {
+
+									var blob = new Blob( [ file.asArrayBuffer() ], { type: 'application/octet-stream' } );
+									return URL.createObjectURL( blob );
+
+								}
+
+							} );
+
+							var loader = new THREE.GLTFLoader( manager );
+							loader.parse( file.asText(), '', function ( result ) {
+
+								editor.execute( new AddObjectCommand( result.scene ) );
+
+							} );
+
+						}
+
+					} );
+
 				}, false );
 				reader.readAsBinaryString( file );