11import * as THREE from 'three'
22import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader'
33import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader'
4- import { MTLLoader } from 'three/examples/jsm/loaders/MTLLoader'
54import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader'
65import { STLLoader } from 'three/examples/jsm/loaders/STLLoader'
76
7+ import { OverrideMTLLoader } from '@/extensions/core/load3d/threejsOverride/OverrideMTLLoader'
88import { t } from '@/i18n'
99import { useToastStore } from '@/stores/toastStore'
1010
1111import {
1212 EventManagerInterface ,
13+ Load3DOptions ,
1314 LoaderManagerInterface ,
1415 ModelManagerInterface
1516} from './interfaces'
1617
1718export class LoaderManager implements LoaderManagerInterface {
1819 gltfLoader : GLTFLoader
1920 objLoader : OBJLoader
20- mtlLoader : MTLLoader
21+ mtlLoader : OverrideMTLLoader
2122 fbxLoader : FBXLoader
2223 stlLoader : STLLoader
2324
@@ -26,14 +27,21 @@ export class LoaderManager implements LoaderManagerInterface {
2627
2728 constructor (
2829 modelManager : ModelManagerInterface ,
29- eventManager : EventManagerInterface
30+ eventManager : EventManagerInterface ,
31+ options : Load3DOptions
3032 ) {
33+ let loadRootFolder = 'input'
34+
35+ if ( options && options . inputSpec ?. isPreview ) {
36+ loadRootFolder = 'output'
37+ }
38+
3139 this . modelManager = modelManager
3240 this . eventManager = eventManager
3341
3442 this . gltfLoader = new GLTFLoader ( )
3543 this . objLoader = new OBJLoader ( )
36- this . mtlLoader = new MTLLoader ( )
44+ this . mtlLoader = new OverrideMTLLoader ( loadRootFolder )
3745 this . fbxLoader = new FBXLoader ( )
3846 this . stlLoader = new STLLoader ( )
3947 }
@@ -122,7 +130,8 @@ export class LoaderManager implements LoaderManagerInterface {
122130
123131 case 'obj' :
124132 if ( this . modelManager . materialMode === 'original' ) {
125- const mtlUrl = url . replace ( / \. o b j ( [ ^ . ] * $ ) / , '.mtl$1' )
133+ const mtlUrl = url . replace ( / ( f i l e n a m e = .* ?) \. o b j / , '$1.mtl' )
134+
126135 try {
127136 const materials = await this . mtlLoader . loadAsync ( mtlUrl )
128137 materials . preload ( )
0 commit comments