任何時候你想在iPhone應(yīng)用程序或其他任何OpenGL工程中使用如Blender,3ds Max 或Cinema 4D等軟件制作的3D對象模型,都需要讓你的程序去訪問這些制作好的數(shù)據(jù)文件。要達到這個效果,你可以加載并解析本地保存的模型文件,或者干脆自己在內(nèi)存中創(chuàng)建一個你想要表現(xiàn)的模型。
功能:
OBJ2OPENGL是一個將模型文件轉(zhuǎn)換成C/C++頭文件的轉(zhuǎn)換器,轉(zhuǎn)換后的頭文件中包含存儲面的頂點,法線,紋理坐標的簡單的浮點型數(shù)組。OBJ2OPENGL是一個將 Wavefront OBJ 3D模型文件轉(zhuǎn)換成OpenGL ES可以使用的C/C++頭文件的Perl腳本。轉(zhuǎn)換后的頭文件和Objective-C以及iPhone SDK庫是兼容的。腳本的思路和代碼都是基于Margaret Geroch的,他允許我增強并重新發(fā)布這個版本。它現(xiàn)在支持紋理映射和存儲法線(而不是重新計算)。我已經(jīng)改變了產(chǎn)生的數(shù)組結(jié)構(gòu)以使用glDrawArrays而不是glDrawElements。這對紋理和法線是非常有好處的。這個版本包含了幾個可選的命令行工具,用來更好的控制它的行為(如縮放和平移原點,設(shè)置對象和輸出文件名等)。
你可以簡單的做一個默認的轉(zhuǎn)換操作:
./obj2opengl.pl banana.obj要包含轉(zhuǎn)換后的對象你必須這么做:
// include generated arrays
#import "banana.h"
// set input data to arrays
glVertexPointer(3, GL_FLOAT, 0, bananaVerts);
glNormalPointer(GL_FLOAT, 0, bananaNormals);
glTexCoordPointer(2, GL_FLOAT, 0, bananaTexCoords);
// draw data
glDrawArrays(GL_TRIANGLES, 0, bananaNumVerts);