1. 程式人生 > 其它 >vue three載入obj檔案不顯示貼圖

vue three載入obj檔案不顯示貼圖

使用三維軟體匯出.obj模型檔案的時候,會同時匯出一個材質檔案.mtl, .obj.stl檔案包含的資訊一樣都是幾何體頂點相關資料,材質檔案.mtl包含的是模型的材質資訊,比如顏色、貼圖路徑等。

載入.obj三維模型的時候,可以只加載.obj檔案,然後藉助three.js引擎自定義材質Material,也可以同時載入.obj.mtl檔案。

mtl檔案包含了模型的材質資訊,比如模型顏色、透明度等資訊,還有紋理貼圖的路徑,比如顏色貼圖、法線貼圖、高光貼圖等等。

我將三維同事給到的模型放到專案中顯示這樣:

 

 

 我程式碼載入是這樣的:

initObject() {
      let objLoader2 
= new OBJLoader2(); let mtlLoader = new MTLLoader(); let _this = this; let urls_mtl = "/model/Soldier/tzb.mtl"; let urls_obj = "/model/Soldier/tzb.obj"; mtlLoader.load(urls_mtl, function (mtlParseResult) { console.log(mtlParseResult); objLoader2.setLogging(true
, true); objLoader2.addMaterials( MtlObjBridge.addMaterialsFromMtlLoader(mtlParseResult) ); objLoader2.load( urls_obj, function (calldata) { _this.oldChildren = _this.dealMeshMaterial(calldata.children); calldata.scale.set
(0.9, 0.9, 0.9); calldata.position.set(0, -7, 0); _this.scene.add(calldata); _this.renderer.render(); }, null, null, null ); }); },

 

我的檔案是這樣的:

 

 

 

一搜發現是貼圖沒載入的原因,然後我就找到.mtl檔案,發現引入的圖片都是 .tga格式,

 

 

 對照著mtl檔案中的名稱與obj檔案的名稱做對比,找到相對應的名稱,又用線上工具將.tga的圖片轉換成了.jpg,發現顯示了一部分但沒全部顯示。 

 又發現有些 newmtl 下沒引入圖片路徑,隨便加上一張圖片後發現可以顯示(但我不清楚為啥匯出沒有)。

當我都改完之後發現人物的身體沒顯示:

 

 我將.mtl檔案中 身體 的屬性仔細排查後發現將 Kd 0.0000 0.0000 0.0000 刪掉,就可以顯示了。

就這樣我的問題就解決了。

貼圖不顯示最主要的原因還是圖片路徑錯誤。