【问题标题】:three.js - How to set custom color to *.obj model when it is delivered without *.mtl file?three.js - 如何在没有 *.mtl 文件的情况下将自定义颜色设置为 *.obj 模型?
【发布时间】:2021-03-25 06:06:29
【问题描述】:

我有一组 *.obj 格式的模型,它们没有材料文件(*.mtl 文件)。一些在线服务正确显示这些模型:https://3dviewer.net/、https://sketchfab.com/。但是 - 根据 three.js 文档 - 在我的项目中,我只得到了不正确的模型显示:

而不是:

开发者https://3dviewer.net/说这个服务的想法是,如果没有找到*.mtl文件,那么脚本设置默认颜色/材质——用一种颜色绘制整个产品。

如何使用 three.js 工具将 *.obj 文件中的对象着色为选定的颜色?

为了测试,我附上一个模型文件,没有材料文件:test sample *.obj file。

【问题讨论】:

    标签: javascript three.js 3d .obj mtl-file


    【解决方案1】:

    似乎 OBJ 没有正确导出。在使用 macOS 预览版、BabylonJS 或 three.js 的 OBJLoader 时,面似乎有错误的缠绕顺序。您应该通过在 onLoad() 回调中执行以下操作来获得所需的结果:

    const material = new THREE.MeshPhongMaterial( { color: 0xff0000, side: THREE.BackSide } );
    
    obj.traverse( function( child ) {
    
        if ( child.isMesh ) child.material = material;
    
    } );
    

    【讨论】:

    • 是的,这就是导致问题得到修复的原因。模型现在看起来很自然。
    猜你喜欢
    • 2016-01-30
    • 2016-09-18
    • 2021-03-08
    • 1970-01-01
    • 2015-01-15
    • 2013-11-30
    • 2020-06-09
    • 2017-01-26
    • 1970-01-01
    相关资源
    最近更新 更多