diff --git a/src/index.js b/src/index.js index 7aaa721..e352dc6 100644 --- a/src/index.js +++ b/src/index.js @@ -138,6 +138,8 @@ class ThreeMFLoader extends Loader { } + let rootModelFile = null; + for (file in zip) { if (file.match(/\_rels\/.rels$/)) { @@ -148,9 +150,13 @@ class ThreeMFLoader extends Loader { modelRelsName = file; - } else if (file.match(/^3D\/.*\.model$/)) { + } else if ( file.match( /^3D\/[^\/]*\.model$/ ) ) { + + rootModelFile = file; - modelPartNames.push(file); + } else if ( file.match( /^3D\/.*\/.*\.model$/ ) ) { + + modelPartNames.push( file ); // sub models } else if (file.match(/^3D\/Textures?\/.*/)) { @@ -160,6 +166,8 @@ class ThreeMFLoader extends Loader { } + modelPartNames.push( rootModelFile ); // push root model at the end so it is processed after the sub models + if (relsName === undefined) throw new Error('THREE.ThreeMFLoader: Cannot find relationship file `rels` in 3MF archive.'); //