javascript - three.js - 如何在没有 *.mtl 文件的情况下将自定义颜色设置为 *.obj 模型?
问题描述
我有一组 *.obj 格式的模型,它们没有材料文件(*.mtl 文件)。一些在线服务正确显示这些模型:https://3dviewer.net/,https://sketchfab.com/。但是-根据three.js文档-在我的项目中,我只得到了不正确的模型显示:
开发者https://3dviewer.net/说这个服务的想法是,如果没有找到 *.mtl 文件,那么脚本会设置默认颜色/材质——用一种颜色绘制整个产品。
如何使用 three.js 工具将 *.obj 文件中的对象着色为选定的颜色?
为了测试,我附上了一个没有材料文件的模型文件:测试样本 *.obj 文件。
解决方案
似乎 OBJ 没有正确导出。使用 macOS 预览版、BabylonJS 或OBJLoader
three.js 时,面似乎有错误的缠绕顺序。您应该通过在onLoad()
回调中执行以下操作来获得所需的结果:
const material = new THREE.MeshPhongMaterial( { color: 0xff0000, side: THREE.BackSide } );
obj.traverse( function( child ) {
if ( child.isMesh ) child.material = material;
} );
推荐阅读
- php - IIS 上的 PHP 问题 - 在 PHP Excel 中写入大量数据时返回错误 500
- python - Pycharm路径引用
- python-3.x - 来自 R&S rto 示波器的流式数据 - UnicodeDecodeError python3.6
- elasticsearch - 在嵌套的热门点击聚合中包含父 _source 字段
- react-admin - React Admin - 过滤器组件中的按钮显示两次?
- bash - bash脚本aws cloudfront创建无效路径不正确
- angular - ng-katex 没有正确安装
- python - 如何删除变量中的 {''}?
- ios - 在 ios 物理设备上运行排毒测试?
- c# - 同一站点 cookie 出现问题并从外部网站重定向