2013-08-07 50 views
4

如何動態更改我的.obj模型上的材質?我的每個模型都包含帶紋理的.obj,.mtl和.jpg文件。我應該改變.mtl文件嗎?動態更改.obj的.obj OBJMTLLoader

在下面的代碼中心我的.obj的每個子網格的幾何圖形,然後我嘗試給它紋理,但既沒有評論代碼也沒有loader.load不給它紋理。

var loader = new THREE.OBJMTLLoader(); 
      loader.addEventListener('load', function (event) { 
       object = event.content; 
       for (var i = 0; i < object.children.length; i++) { 
        THREE.GeometryUtils.merge(geometry, object.children[i].geometry); 
       } 
       THREE.GeometryUtils.center(geometry); 
       //var materials = new THREE.ImageUtils.loadTexture("/obj/stol.mtl"); 
       //mesh = new THREE.Mesh(geometry, new THREE.MeshFaceMaterial(material)); 

       var material = new THREE.MeshBasicMaterial({ color: 0xff0000 }); 
       mesh = new THREE.Mesh(geometry, material); 

       mesh.scale.x = 0.25; 
       mesh.scale.y = 0.25; 
       mesh.scale.z = 0.25; 
       mesh.castShadow = true; 

       scene.add(mesh); 
       animate(); 
      }); 
      loader.load('/obj/stol.obj', '/obj/stol.mtl'); 

我希望有我的網頁上的onclick觸發質地改變一些按鈕,e.g

$(function(){ 
    $('#txt_01').click(function(){ 
     mesh.textureLoad("/obj/txt_01.mtl"); 
    } 
}); 

工作演示:http://www.edar.com.pl/test-3d-2/

+0

我正在尋找一個提示沒有準備好的代碼,真的no1可以幫助我嗎? –

回答

1

只是檢查有關載入紋理的例子。

以及如何更新three.js中的內容,請參閱「材料更新」部分。 https://github.com/mrdoob/three.js/wiki/Updates

+0

這些示例使用JSON加載器,我使用obj + mtl。 我設法使用obj + jpg材質,但是我無法在「渲染到紋理」的3dmax中正確保存它。 我應該改變我的裝載機來匹配那些例子嗎? –

+0

對不起,我不知道你在做什麼atm以及你的代碼的外觀以及你在做什麼3dsMax RTT對話框 – GuyGood

+0

那麼,你的鏈接並不差,畢竟我能夠用obj製作材質改變按鈕+ JPG的uvw地圖。鏈接: http://www.edar.com.pl/test-3d-3/ ...但它仍然不是我正在尋找的解決方案,因爲我相信使用.mtl數組會更有效率。 –

相關問題