THREE.js载入带有PNG纹理的OBJ + MTL文件

3

我正在尝试加载带有对PNG贴图的MTL文件到我的OBJ模型中,但是我遇到了以下错误:

TypeError:manager.getHandler不是函数

这是我的three.js代码:

var loadOBJ = function(){
    var mtlLoader = new THREE.MTLLoader();
    mtlLoader.load( "static/pictures/3D/untitled2.mtl", function( materials ) {
            materials.preload();
            console.log(materials);

            var loader = new THREE.OBJLoader(  );
            loader.load( "static/pictures/3D/jaw.obj", addModelInScene);});
};

var addModelInScene = function(object){
    model = object;
    model.rotation.y = 1.55;
    scene.add(model);
    render();
};

这里是.mtl文件。

newmtl Teeth_UDIM
Ns 255.999998
Ka 1.000000 1.000000 1.000000
Kd 0.480000 0.424000 0.480000
Ks 0.040000 0.040000 0.040000
Ni 1.000000
d 1.000000
illum 2
map_Kd mrm.png

mrm.png文件与.mtl和.obj文件在同一目录中。当我从.mtl中删除最后一行(map_Kd mrm.png)时,错误不会显示,但贴图也不会显示。我做错了什么吗?

1个回答

2

类型错误:manager.getHandler 不是一个函数

此运行时错误表明,MTLLoader 的版本比您的 three.js 版本更新。您必须始终确保核心文件以及所有示例文件(如 OBJLoaderMTLLoader)来自同一版本。使用当前版本或至少 R109 应该解决此问题。

顺便说一句:通过使用 npm 包和基于 node 的工作流程以及类似于 rollup 的构建工具,可以轻松避免这样的错误。


你是对的。现在.mtl文件已经加载,以及.png文件,但是纹理没有被应用。控制台中没有错误。 - shadow
是的,我已经成功加载了纹理,但现在的问题是,当我从blender导出模型时,纹理没有正确地导出(对象正在使用UDIM瓷砖作为纹理)。 - shadow
很抱歉,我对这个主题不熟悉。建议您在StackOverflow上提出一个新问题。 - Mugen87
我会的。谢谢你的帮助,你能看一下这个吗:https://stackoverflow.com/questions/60858748/three-js-loading-modal-with-model? - shadow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接