vue three載入obj檔案不顯示貼圖
阿新 • • 發佈:2022-03-22
使用三維軟體匯出.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 刪掉,就可以顯示了。
就這樣我的問題就解決了。
貼圖不顯示最主要的原因還是圖片路徑錯誤。