1. 程式人生 > >將OBJ模型轉換為.h檔案給Xcode使用

將OBJ模型轉換為.h檔案給Xcode使用

參考:http://heikobehrens.net/2009/08/27/obj2opengl/  (英文版的 這裡為翻譯成中文的作為學習記錄

每當您想要使用3D軟體(如攪拌器3ds max4D影院)在iPhone應用程式或任何其他OpenGL專案中建模時,您都必須使設計的資料可以訪問您的程式。為此,您可以載入和解釋模型儲存的檔案,也可以直接提供程式期望的記憶體中所需的內容。

OBJ2OPENGL做後者,並且作為從模型檔案轉換為C / C 標頭的轉換器,它將面部,法線和紋理座標的頂點描述為簡單的浮點陣列。


iPhone上有8056個臉部的紋理化照明3D模型

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/最下面有提供下載

如下:

下載