three.js - 交付时没有*.mtl 文件,如何为*.obj 模型设置自定义颜色?

three.js - How to set custom color to *.obj model when it is delivered without *.mtl file?

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

而不是:

开发者https://3dviewer.net/说这个服务的想法是,如果没有找到*.mtl文件,那么脚本会设置默认颜色/material - 将整个产品涂成一种颜色。

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

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

看来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;

} );