1 Three.js出现FBXLoader: TGA loader not found, creating placeholder texture for...错误

最近将之前项目中基于three.js r101版本的项目进行了升级,将three.js的版本升级为r144,在加载fbx模型的部分代码出现了错误,

three.js r101版本加载fbx模型的代码为:

 var fbxLoader = new THREE.FBXLoader();

 // 向fbxloader中添加TGALoader,并设置纹理路径
 var tgaLoader = new THREE.TGALoader();
 tgaLoader.setPath( './res/model/texture');
 THREE.Loader.Handlers.add( /\.tga$/i, tgaLoader );

 fbxLoader.load(fbxModelfilepath,OnLoadFbxModel);

上述代码更换three.js的版本为r144之后,出现了以下错误:

ThreeJS – FBXLoader: TGA loader not found, creating placeholder texture for …-StubbornHuang Blog

从错误的表述上来看,估计是TGALoader对象没有找到,可能是因为three.js版本升级需要更改写法。

然后从https://discourse.threejs.org/t/issue-loading-fbx-with-imbedded-tga/11976找到了解决方案,我们可以将上述代码修改为:

// add handler for TGA textures
const manager = new THREE.LoadingManager();
manager.addHandler( /\.tga$/i, new THREE.TGALoader() );

var fbxLoader = new THREE.FBXLoader(manager);
fbxLoader.load(fbxModelfilepath,OnLoadFbxModel);

即可。

参考链接