THREE.JS无法加载MTL文件求助:误将MTL当作JSON解析报错
解决Three.js MTLLoader加载MTL文件时被当作JSON解析的问题
嘿,我一眼就看到问题所在了——你用错加载器啦!你代码里用了THREE.MaterialLoader来加载MTL文件,但这个加载器是专门用来解析JSON格式材质文件的,而MTL是OBJ模型配套的专属材质描述格式,完全不是JSON结构,所以浏览器才会抛出Unexpected token #的JSON解析错误(毕竟MTL文件里的#是注释符号,JSON根本不认这个)。
修正后的正确代码
你需要改用THREE.MTLLoader来加载MTL文件,搭配THREE.OBJLoader加载OBJ模型,代码调整如下:
// 创建MTL加载器实例 var mtlLoader = new THREE.MTLLoader(); mtlLoader.load("istuff.mtl", function(materials) { materials.preload(); // 创建OBJ加载器并绑定材质 var objLoader = new THREE.OBJLoader(); objLoader.setMaterials(materials); objLoader.load("istuff.obj", function(object) { scene.add(object); }, onProgress, onError); });
额外注意事项
- 确保你的Three.js库包含
MTLLoader和OBJLoader:部分版本的Three.js核心库不附带这些扩展加载器,需要单独引入对应的模块文件 - 检查MTL文件的路径是否正确,保证服务器能正常访问到该文件
- 确认MTL文件本身格式无误,比如注释符号
#的使用符合MTL规范,避免因文件本身语法问题导致加载失败
内容的提问来源于stack exchange,提问作者Kevin Yang
相关产品推荐
相关产品推荐

