Skip to content

Commit 7b4b9ff

Browse files
3MFLoader: Fix parsing of assets with sub models. (#30491)
* 3MFLoader: Reversed build order to support 3MF production extension references * 3MFLoader: Changed build order with regex to put root file last instead of reversing * Update 3MFLoader.js Clean up. --------- Co-authored-by: Michael Herzog <[email protected]>
1 parent e0b7bd9 commit 7b4b9ff

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

examples/jsm/loaders/3MFLoader.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@ class ThreeMFLoader extends Loader {
122122

123123
}
124124

125+
let rootModelFile = null;
126+
125127
for ( file in zip ) {
126128

127129
if ( file.match( /\_rels\/.rels$/ ) ) {
@@ -132,9 +134,13 @@ class ThreeMFLoader extends Loader {
132134

133135
modelRelsName = file;
134136

135-
} else if ( file.match( /^3D\/.*\.model$/ ) ) {
137+
} else if ( file.match( /^3D\/[^\/]*\.model$/ ) ) {
138+
139+
rootModelFile = file ;
136140

137-
modelPartNames.push( file );
141+
} else if ( file.match( /^3D\/.*\/.*\.model$/ ) ) {
142+
143+
modelPartNames.push( file ); // sub models
138144

139145
} else if ( file.match( /^3D\/Textures?\/.*/ ) ) {
140146

@@ -144,6 +150,8 @@ class ThreeMFLoader extends Loader {
144150

145151
}
146152

153+
modelPartNames.push( rootModelFile ); // push root model at the end so it is processed after the sub models
154+
147155
if ( relsName === undefined ) throw new Error( 'THREE.ThreeMFLoader: Cannot find relationship file `rels` in 3MF archive.' );
148156

149157
//

0 commit comments

Comments
 (0)