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