You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:08:15