2013-02-10 46 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