2013-02-10 61 views
1

我有一个从3ds max导出的.obj文件和一个带有材质的.mtl文件。我想用three.js渲染这个对象,但它似乎不加载纹理。这里是我的javascript代码Three.js - 导入一个带有纹理的3d对象

var texture = THREE.ImageUtils.loadTexture('items/m16/m16.jpg'); 


var loader = new THREE.OBJLoader(); 
loader.load("items/m16/m16.obj", function (object) { 

for (var i = 0, l = object.children.length; i < l; i ++) { 

    object.children[ i ].material.map = texture; 

} 

// object.position.y = -100; 

scene.add(object); 

}); 

这里是.mtl文件的

newmtl Material__25 
Ns 10.0000 
Ni 1.5000 
d 1.0000 
Tr 0.0000 
Tf 1.0000 1.0000 1.0000 
illum 2 
Ka 0.5880 0.5880 0.5880 
Kd 0.5880 0.5880 0.5880 
Ks 0.0000 0.0000 0.0000 
Ke 0.0000 0.0000 0.0000 
map_Ka m16.jpg 
map_Kd m16.jpg 

我不能看到我错了上下文。

回答

8

由于您有.mtl文件,您应该使用OBJMTLLoader代替。这样你发布的所有代码将变为:

var loader = new THREE.OBJMTLLoader(); 
loader.load("items/m16/m16.obj", function (object) { scene.add(object); }); 
+0

它不起作用。同样的结果。 – Graver 2013-02-10 13:39:23

+0

抱歉,该行应该是:loader.addEventListener(“load”,function(object){scene.add(object)},false); loader.load(“items/m16/m16.obj”,“items/m16/m16.mtl”); – gaitat 2013-02-10 13:40:47

+0

它不工作 – Graver 2013-02-10 13:55:55