openGL作業紀錄
Sep 6, 2018 · 3 min read
暑假前加入台科的實驗室,實驗室的作業是要用老師給的範例寫出一個會動的機器人(成果如下),其中需要讀取.obj及.mtl之類的檔案,在此紀錄一下過程中遇到的問題。

第一遇到的問題是.obj的讀取問題,目前常見的3D軟體,像是Maya. Blender等,輸出的.obj格式好像都有些許不同,因此網路上的obj loader也有很多不同的版本,但根據學長說把.obj用Meshlab輸出好像會變得比較容易一點,我在用Meshlab輸出後也發現他的.obj格式的確比較整齊,因此後來我都先用maya調整模型的中心位置. 法向量等,之後再用Meshlab輸出每個部位的.obj,這樣問題就少了很多。
第二個遇到的是.mtl的問題,在範例中老師只讀取了一次.mtl便將機器人多個部位的材質搞定。我一開始先將整個機器人輸出成一個.obj,再將附加的.mtl拿來讀取,但卻出現了像下圖這種狀況:

後來我去打開了每個模型的.obj檔看,如果在Meshlab中選擇要輸出材質,.obj檔會有個區域顯示每個面對應到哪一個材質,並在.mtl中定義那個材質的顏色等資料(如下圖)


在我打開每一個檔案比對以後,我發現在分別輸出每一個部位的模型時,材質的名稱都不一樣,有可能這次輸出時紅色對到material_0,下一次輸出時紅色卻變成對應material_1,因此才會出現像剛才顏色對應錯誤的狀況。
最後我將每一個部位的.obj都手動統一改成對應到一樣的顏色,最後輸出結果終於是正確的。
最後放一下成果:
這次作業的紀錄大概是這樣,如果有錯誤請不吝告知。這是我剛開始學openGL幾個月不久,僅次紀錄一下。
