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中定義那個材質的顏色等資料(如下圖)

左邊是.obj顯示對應材質,右邊是.mtl顯示材質資料

在我打開每一個檔案比對以後,我發現在分別輸出每一個部位的模型時,材質的名稱都不一樣,有可能這次輸出時紅色對到material_0,下一次輸出時紅色卻變成對應material_1,因此才會出現像剛才顏色對應錯誤的狀況。

最後我將每一個部位的.obj都手動統一改成對應到一樣的顏色,最後輸出結果終於是正確的。


最後放一下成果:

這次作業的紀錄大概是這樣,如果有錯誤請不吝告知。這是我剛開始學openGL幾個月不久,僅次紀錄一下。

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade