javascript - ThreeJS OBJLoader + MTLLoader - 模型出现黑色
问题描述
我在将颜色加载到我的一个模型上时遇到了一些麻烦。我正在使用 OBJloader 和 MTLloader。.obj 和 .mtl 文件是从 blender 的导出生成的(没有使用 .png/.tga 文件的纹理)。MTL 文件完美地加载到其他模型上,但由于某种原因,此模型仅显示为黑色。
这是我正在使用的 MTLLoader:https ://github.com/mrdoob/three.js/blob/master/examples/js/loaders/MTLLoader.js
这是不起作用的 .mtl 文件:
newmtl Material_1
Ns -1.960784
Ka 0.000000 0.000000 0.000000
Kd 0.000000 0.000000 0.000000
Ks 0.194444 0.194444 0.194444
Ke 0.000000 0.000000 0.000000
Ni 0.000000
d 1.000000
illum 2
newmtl Material_2
Ns -1.960784
Ka 0.000000 0.000000 0.000000
Kd 0.000000 0.000000 0.000000
Ks 0.986111 0.986111 0.986111
Ke 0.000000 0.000000 0.000000
Ni 0.000000
d 1.000000
illum 2
newmtl Material_3
Ns -1.960784
Ka 0.000000 0.000000 0.000000
Kd 0.000000 0.000000 0.000000
Ks 0.187500 0.187500 0.187500
Ke 0.000000 0.000000 0.000000
Ni 0.000000
d 1.000000
illum 2
newmtl Material_4
Ns -1.960784
Ka 0.000000 0.000000 0.000000
Kd 0.000000 0.000000 0.000000
Ks 0.263889 0.263889 0.263889
Ke 0.000000 0.000000 0.000000
Ni 0.000000
d 1.000000
illum 2
这是一个完美运行的 .mtl 文件示例:
newmtl car_body
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.693878 0.084748 0.084748
Ks 0.108100 0.108100 0.108100
Ke 0.000000 0.000000 0.000000
Ni -1.000000
d 1.000000
illum 2
newmtl car_body_1
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 1.000000 1.000000 1.000000
Ks 0.100000 0.100000 0.100000
Ke 0.000000 0.000000 0.000000
Ni -1.000000
d 1.000000
illum 2
newmtl engine_grille
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.000000 0.005952 0.051020
Ks 0.117000 0.117000 0.117000
Ke 0.000000 0.000000 0.000000
Ni -1.000000
d 1.000000
illum 2
newmtl glass
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.282521 0.704611 0.948980
Ks 0.100000 0.100000 0.100000
Ke 0.000000 0.000000 0.000000
Ni -1.000000
d 1.000000
illum 2
newmtl headlight
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.847328 0.944020 1.000000
Ks 0.100000 0.100000 0.100000
Ke 0.000000 0.000000 0.000000
Ni -1.000000
d 1.000000
illum 2
newmtl rear_lights
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.847328 0.944020 1.000000
Ks 0.100000 0.100000 0.100000
Ke 0.000000 0.000000 0.000000
Ni -1.000000
d 1.000000
illum 2
newmtl wheels
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.142857 0.142857 0.142857
Ks 0.100000 0.100000 0.100000
Ke 0.000000 0.000000 0.000000
Ni -1.000000
d 1.000000
illum 2
这是JavaScript:
var bird = new THREE.Object3D();
var mtlLoader = new THREE.MTLLoader();
mtlLoader.load( 'bird.mtl', function( materials )
{
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials( materials );
objLoader.load( 'bird.obj', function ( object )
{
bird.add( object );
});
});
scene.add( bird );
任何人都知道为什么上面的 .mtl 文件无法正确加载,并且只显示为黑色?
乔金
解决方案
推荐阅读
- r - R从文件夹Mac Catalina OS加载文件
- oracle - pentaho 报表设计器中某个月份的天数
- c# - ClickOnce 名称、发布者和域。它是什么?
- haskell - 如何制作约束蕴涵函数(||-)?(关联类型同义词)
- database - Redis Pub/Sub 和 Redis Stream 之间的主要区别是什么?
- android - scrollview 在移动设备中不起作用,但在模拟中起作用
- javascript - 用于获取数据的自定义反应钩子不会在第二次命中时提供数据
- angular - core.js:4070 ERROR 错误:'router-outlet' 不是已知元素:
- javascript - 在 JavaScript 中拆分字符串后,输出在每个单词后显示逗号
- node.js - 是否有 API 可以检索用户的所有别名电子邮件?