[問題] OpenGL objloader相關問題

作者: on9bb (on9)   2015-12-31 00:43:05
開發平台(Platform): Xcode
額外使用到的函數庫(Library Used): OpenGL
問題(Question):
小弟本身對程式非常不熟悉,因為一個專題需要處理一點3D model而接觸了OpenGL
一般網路上可以找到的3D model都有obj檔和mtl檔(可藉由mtl檔將圖片包覆在model上作為紋理)
目前我做了可以讀出obj的程式 不過一直沒辦法顯示出他的紋理
爬了文也找了很多網路資料 似乎很多人都有類似的問題
但一直沒有一個demo可以參考
想請問各位高手們能不能為小弟指點迷津
餵入的資料(Input):
一顆石頭的3D model(含obj file及mtl file)
預期的正確結果(Expected Output):
這是我用meshlab開出來的3D圖,是一個有紋理的石頭~~
http://imgur.com/d5guSrq
錯誤結果(Wrong Output):
用我寫的程式呈現出來只是一坨黑黑的東西(形狀對了但沒有紋理)
http://imgur.com/Cl7kjBl
程式碼(Code):(請善用置底文網頁, 記得排版)
http://codepad.org/HM8edgNx
附註:
我本身對程式真的很不熟悉,希望解釋時可以詳盡一點謝謝 ^____^
作者: longlongint (華哥爾)   2015-12-31 00:48:00
小弟不才 我猜你要的是texture
作者: on9bb (on9)   2015-12-31 00:49:00
對的!!!不過一直沒辦法呈現 現在很懊惱
作者: Bencrie   2015-12-31 02:07:00
你的程式碼沒處理 texture 那一塊,沒紋理貼圖很正常或者看 glm 有沒有幫你處理讀圖檔跟 texture coord
作者: iamstudent (stu)   2015-12-31 17:25:00
從mtl檔案讀出需要的圖片檔名然後用可以讀取圖片的library載入圖片到記憶體用glGenTexture產生貼圖id, bind之後用glTexImage2D把圖片資料從主記憶體搬到顯示卡記憶體畫出物品時bind貼圖並enable,頂點要給貼圖座標網路上直接找OpenGL貼圖的範例程式看一下就好我是不知道你mtl的貼圖給到多複雜如果有bump_map或是specular_map就可能要寫shader只有diffuse map的話,用傳統貼圖的GL_MODULATE就夠了

Links booklink

Contact Us: admin [ a t ] ucptt.com