diff --git a/examples/js/loaders/3MFLoader.js b/examples/js/loaders/3MFLoader.js index 8ee93108bcd80970f2696b6d13a383cab09472e0..36696cbec4e25329c902e278d4861c0b26db3bb5 100644 --- a/examples/js/loaders/3MFLoader.js +++ b/examples/js/loaders/3MFLoader.js @@ -1387,11 +1387,24 @@ THREE.ThreeMFLoader.prototype = Object.assign( Object.create( THREE.Loader.proto } + function fetch3DModelPart( rels ) { + + for ( var i = 0; i < rels.length; i ++ ) { + + var rel = rels[ i ]; + var extension = rel.target.split( '.' ).pop(); + + if ( extension.toLowerCase() === 'model' ) return rel; + + } + + } + function build( objects, data3mf ) { var group = new THREE.Group(); - var relationship = data3mf[ 'rels' ][ 0 ]; + var relationship = fetch3DModelPart( data3mf[ 'rels' ] ); var buildData = data3mf.model[ relationship[ 'target' ].substring( 1 ) ][ 'build' ]; for ( var i = 0; i < buildData.length; i ++ ) { diff --git a/examples/jsm/loaders/3MFLoader.js b/examples/jsm/loaders/3MFLoader.js index 86267378160112e803577c827fa1a65ecf7564df..9a0bc2e3c1f25e0757f784c81fd9f046b09fd584 100644 --- a/examples/jsm/loaders/3MFLoader.js +++ b/examples/jsm/loaders/3MFLoader.js @@ -1411,11 +1411,24 @@ ThreeMFLoader.prototype = Object.assign( Object.create( Loader.prototype ), { } + function fetch3DModelPart( rels ) { + + for ( var i = 0; i < rels.length; i ++ ) { + + var rel = rels[ i ]; + var extension = rel.target.split( '.' ).pop(); + + if ( extension.toLowerCase() === 'model' ) return rel; + + } + + } + function build( objects, data3mf ) { var group = new Group(); - var relationship = data3mf[ 'rels' ][ 0 ]; + var relationship = fetch3DModelPart( data3mf[ 'rels' ] ); var buildData = data3mf.model[ relationship[ 'target' ].substring( 1 ) ][ 'build' ]; for ( var i = 0; i < buildData.length; i ++ ) {