Просмотр исходного кода

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 <michael.herzog@human-interactive.org>
Jack Y. 11 месяцев назад
Родитель
Сommit
7b4b9ff3f7
1 измененных файлов с 10 добавлено и 2 удалено
  1. 10 2
      examples/jsm/loaders/3MFLoader.js

+ 10 - 2
examples/jsm/loaders/3MFLoader.js

@@ -122,6 +122,8 @@ class ThreeMFLoader extends Loader {
 
 			}
 
+			let rootModelFile = null;
+
 			for ( file in zip ) {
 
 				if ( file.match( /\_rels\/.rels$/ ) ) {
@@ -132,9 +134,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?\/.*/ ) ) {
 
@@ -144,6 +150,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.' );
 
 			//

粤ICP备19079148号