首页 > 解决方案 > 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 文件无法正确加载,并且只显示为黑色?

乔金

标签: javascriptthree.jsobjloadermtl-file

解决方案


推荐阅读