將OBJ模型轉換為.h檔案給Xcode使用
阿新 • • 發佈:2018-11-01
參考:http://heikobehrens.net/2009/08/27/obj2opengl/ (英文版的 這裡為翻譯成中文的作為學習記錄
每當您想要使用3D軟體(如攪拌器,3ds max或4D影院)在iPhone應用程式或任何其他OpenGL專案中建模時,您都必須使設計的資料可以訪問您的程式。為此,您可以載入和解釋模型儲存的檔案,也可以直接提供程式期望的記憶體中所需的內容。
OBJ2OPENGL做後者,並且作為從模型檔案轉換為C / C 標頭的轉換器,它將面部,法線和紋理座標的頂點描述為簡單的浮點陣列。
iPhone上有8,056個面部的紋理化和照明3D模型
OBJ2OPENGL是一個Perl指令碼,讀取 描述3D物件的Wavefront OBJ檔案,並以適合與OpenGL ES一起使用的形式寫入描述物件的C / C ++包含檔案。它與Objective C和iPhone SDK的庫相容。
這個指令碼的原始想法和程式碼基礎來自Margaret Geroch,他很樂意讓我改進和重新發布這個版本。它現在支援紋理對映和儲存法線(而不是重新計算它們)。我已經將生成的陣列的結構改為使用glDrawArrays而不是glDrawElements。對於法線和紋理來說,這是特別需要的,其中頂點保留某些形狀的不同資訊。此外,此版本還包括幾個命令列選項,以更好地控制其行為(例如縮放和移動原點或設定物件和輸出檔案的名稱)。
如果您可以使用預設值進行轉換,那麼簡單
./obj2opengl.pl banana.obj
要包括轉換的物件,你需要做的就是
// include generated arrays
#import“banana.h”
//將輸入資料設定為陣列
glVertexPointer(3,GL_FLOAT,0,bananaVerts);
glNormalPointer(GL_FLOAT,0,bananaNormals);
glTexCoordPointer(2,GL_FLOAT,0,bananaTexCoords);
//繪製資料
glDrawArrays(GL_TRIANGLES,0,bananaNumVerts);
例子
這兩個模型和生成的樣本輸出包含在提供的存檔中:
輸入 | 產量 | 質地 | 頂點 | 面 |
---|---|---|---|---|
cube.obj | cube.h | 8 | 6 | |
banana.obj | banana.h | 了banana.jpg | 4,032 | 8056 |
如何下載這個轉換工具:
http://heikobehrens.net/2009/08/27/obj2opengl/最下面有提供下載
如下:
下載
- OBJ2OPENGL.ZIP(指令碼和示例)
- OBJ2OPENGL.PL