【问题标题】:Three.js materials not being applied using .obj and .mtl filesThree.js 材料未使用 .obj 和 .mtl 文件应用
【发布时间】:2019-01-18 04:45:47
【问题描述】:

我下载了一个免费的 3d 模型并尝试使用 three.js 进行查看。模型加载正常,但材料加载不正确。唯一加载的是吧台后面的酒瓶,没有其他任何纹理。

Example site showing problem here

这是我在模型中加载的方式:

// load in the bar 3d model
var mtlLoader = new THREE.MTLLoader();
mtlLoader.load( 'bar1/3d-model.mtl', function ( materials ) {

    materials.preload();

    var objLoader2 = new THREE.OBJLoader2();
    objLoader2.setMaterials( materials.materials );
    objLoader2.load( 'bar1/3d-model.obj', function ( event ) {

    scene.add( event.detail.loaderRootNode );

    }, function() {
        // success
    }, function() {
        // error
    });
});

【问题讨论】:

  • 您的 .mtl 文件不包含对纹理文件的任何引用,我想您可能想查看源代码:您从哪里导出,以及如何导出? (除非您使用“纹理”来表示“具有某些细节的程序材质定义”......从源到实时渲染器很难获得相似的外观)。
  • 嗯,好的。我从这里下载了它:cgtrader.com/free-3d-models/interior/office/wine-bar 并使用了 obj 和 MTL 拉链。我只是假设它会像在图像中一样呈现出来。我必须自己将纹理链接到材料吗?

标签: javascript three.js 3d


【解决方案1】:

如果您查看您的 OBJ 文件使用的the MTL file,您会注意到它没有对纹理贴图的任何引用。纹理贴图通常用如下线条引用:

map_Ka image.jpg
map_Kd image.jpg
map_Ks image.jpg    
map_Nd image.jpg
map_d image.jpg
map_bump image.jpg

如果您的模型不包含它们,您可以使用 3D 编辑器(如 Blender)添加它们。如需更多信息,请查看Texture Maps section of the OBJ file format

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 2018-10-15
    相关资源
    最近更新 更多