|
@@ -858,6 +858,24 @@ function Loader( editor ) {
|
|
|
|
|
|
const zip = unzipSync( new Uint8Array( contents ) );
|
|
const zip = unzipSync( new Uint8Array( contents ) );
|
|
|
|
|
|
|
|
+ const manager = new THREE.LoadingManager();
|
|
|
|
+ manager.setURLModifier( function ( url ) {
|
|
|
|
+
|
|
|
|
+ const file = zip[ url ];
|
|
|
|
+
|
|
|
|
+ if ( file ) {
|
|
|
|
+
|
|
|
|
+ console.log( 'Loading', url );
|
|
|
|
+
|
|
|
|
+ const blob = new Blob( [ file.buffer ], { type: 'application/octet-stream' } );
|
|
|
|
+ return URL.createObjectURL( blob );
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return url;
|
|
|
|
+
|
|
|
|
+ } );
|
|
|
|
+
|
|
// Poly
|
|
// Poly
|
|
|
|
|
|
if ( zip[ 'model.obj' ] && zip[ 'materials.mtl' ] ) {
|
|
if ( zip[ 'model.obj' ] && zip[ 'materials.mtl' ] ) {
|
|
@@ -865,9 +883,11 @@ function Loader( editor ) {
|
|
const { MTLLoader } = await import( 'three/addons/loaders/MTLLoader.js' );
|
|
const { MTLLoader } = await import( 'three/addons/loaders/MTLLoader.js' );
|
|
const { OBJLoader } = await import( 'three/addons/loaders/OBJLoader.js' );
|
|
const { OBJLoader } = await import( 'three/addons/loaders/OBJLoader.js' );
|
|
|
|
|
|
- const materials = new MTLLoader().parse( strFromU8( zip[ 'materials.mtl' ] ) );
|
|
|
|
|
|
+ const materials = new MTLLoader( manager ).parse( strFromU8( zip[ 'materials.mtl' ] ) );
|
|
const object = new OBJLoader().setMaterials( materials ).parse( strFromU8( zip[ 'model.obj' ] ) );
|
|
const object = new OBJLoader().setMaterials( materials ).parse( strFromU8( zip[ 'model.obj' ] ) );
|
|
|
|
+
|
|
editor.execute( new AddObjectCommand( editor, object ) );
|
|
editor.execute( new AddObjectCommand( editor, object ) );
|
|
|
|
+ return;
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -877,24 +897,6 @@ function Loader( editor ) {
|
|
|
|
|
|
const file = zip[ path ];
|
|
const file = zip[ path ];
|
|
|
|
|
|
- const manager = new THREE.LoadingManager();
|
|
|
|
- manager.setURLModifier( function ( url ) {
|
|
|
|
-
|
|
|
|
- const file = zip[ url ];
|
|
|
|
-
|
|
|
|
- if ( file ) {
|
|
|
|
-
|
|
|
|
- console.log( 'Loading', url );
|
|
|
|
-
|
|
|
|
- const blob = new Blob( [ file.buffer ], { type: 'application/octet-stream' } );
|
|
|
|
- return URL.createObjectURL( blob );
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return url;
|
|
|
|
-
|
|
|
|
- } );
|
|
|
|
-
|
|
|
|
const extension = path.split( '.' ).pop().toLowerCase();
|
|
const extension = path.split( '.' ).pop().toLowerCase();
|
|
|
|
|
|
switch ( extension ) {
|
|
switch ( extension ) {
|