OBJ文件是Alias|Wavefront公司為它的一套基于工作站的3D建模和動(dòng)畫軟件"Advanced Visualizer"開(kāi)發(fā)的一種標(biāo)準(zhǔn)3D模型文件格式,,很適合用于3D軟件模型之間的互導(dǎo),也可以通過(guò)Maya讀寫,。比如你在3dsMax或LightWave中建了一個(gè)模型,,想把它調(diào)到Maya里面渲染或動(dòng)畫,導(dǎo)出OBJ文件就是一種很好的選擇。目前幾乎所有知名的3D軟件都支持OBJ文件的讀寫,,不過(guò)其中很多需要通過(guò)插件才能實(shí)現(xiàn),。
obj格式兼容性很好,推薦使用,!
1、OBJ文件的特點(diǎn)
OBJ3.0文件格式支持直線(Line),、多邊形(Polygon),、表面(Surface)和自由形態(tài)曲線(Free-form Curve)。直線和多角形通過(guò)它們的點(diǎn)來(lái)描述,,曲線和表面則根據(jù)它們的控制點(diǎn)和依附于曲線類型的額外信息來(lái)定義,,這些信息支持規(guī)則和不規(guī)則的曲線,包括那些基于貝塞爾曲線(Bezier),、B樣條(B-spline),、基數(shù)(Cardinal/Catmull-Rom)和泰勒方程(Taylor equations)的曲線。其他特點(diǎn)如下:
(1)OBJ文件是一種3D模型文件,。不包含動(dòng)畫,、材質(zhì)特性、貼圖路徑,、動(dòng)力學(xué),、粒子等信息。
(2)OBJ文件主要支持多邊形(Polygons)模型,。雖然也支持曲線(Curves),、表面(Surfaces)、點(diǎn)組材質(zhì)(Point Group Materials),,但Maya導(dǎo)出的OBJ文件并不包括這些信息,。
(3)OBJ文件支持三個(gè)點(diǎn)以上的面,這一點(diǎn)很有用,。很多其它的模型文件格式只支持三個(gè)點(diǎn)的面,,所以導(dǎo)入Maya的模型經(jīng)常被三角化了,這對(duì)于我們對(duì)模型進(jìn)行再加工甚為不利,。
(4)OBJ文件支持法線和貼圖坐標(biāo),。在其它軟件中調(diào)整好貼圖后,貼圖坐標(biāo)信息可以存入OBJ文件中,,這樣文件導(dǎo)入Maya后只需指定一下貼圖文件路徑就行了,,不需要再調(diào)整貼圖坐標(biāo)。
2,、OBJ文件的基本結(jié)構(gòu)
OBJ文件不需要任何種文件頭(File Header),,盡管經(jīng)常使用幾行文件信息的注釋作為文件的開(kāi)頭。OBJ文件由一行行文本組成,注釋行以符號(hào)“#”為開(kāi)頭,,空格和空行可以隨意加到文件中以增加文件的可讀性,。有字的行都由一兩個(gè)標(biāo)記字母也就是關(guān)鍵字(Keyword)開(kāi)頭,關(guān)鍵字可以說(shuō)明這一行是什么樣的數(shù)據(jù),。多行可以邏輯地連接在一起表示一行,,方法是在每一行最后添加一個(gè)連接符(\)。注意連接符(\)后面不能出現(xiàn)空格或Tab格,,否則將導(dǎo)致文件出錯(cuò),。
下列關(guān)鍵字可以在OBJ文件使用。在這個(gè)列表中, 關(guān)鍵字根據(jù)數(shù)據(jù)類型排列,,每個(gè)關(guān)鍵字有一段簡(jiǎn)短描述,。
頂點(diǎn)數(shù)據(jù)(Vertex data):
v 幾何體頂點(diǎn)(Geometric vertices)
vt 貼圖坐標(biāo)點(diǎn)(Texture vertices)
vn 頂點(diǎn)法線(Vertex normals)
vp 參數(shù)空格頂點(diǎn) (Parameter space vertices)
自由形態(tài)曲線(Free-form curve)/表面屬性(surface attributes):
deg 度(Degree)
bmat 基礎(chǔ)矩陣(Basis matrix)
step 步尺寸(Step size)
cstype 曲線或表面類型 (Curve or surface type)
元素(Elements):
p 點(diǎn)(Point)
l 線(Line)
f 面(Face)
curv 曲線(Curve)
curv2 2D曲線(2D curve)
surf 表面(Surface)
自由形態(tài)曲線(Free-form curve)/表面主體陳述(surface body statements):
parm 參數(shù)值(Parameter values )
trim 外部修剪循環(huán)(Outer trimming loop)
hole 內(nèi)部整修循環(huán)(Inner trimming loop)
scrv 特殊曲線(Special curve)
sp 特殊的點(diǎn)(Special point)
end 結(jié)束陳述(End statement)
自由形態(tài)表面之間的連接(Connectivity between free-form surfaces):
con 連接 (Connect)
成組(Grouping):
g 組名稱(Group name)
s 光滑組(Smoothing group)
mg 合并組(Merging group)
o 對(duì)象名稱(Object name)
顯示(Display)/渲染屬性(render attributes):
bevel 導(dǎo)角插值(Bevel interpolation)
c_interp 顏色插值(Color interpolation)
d_interp 溶解插值(Dissolve interpolation)
lod 細(xì)節(jié)層次(Level of detail)
usemtl 材質(zhì)名稱(Material name)
mtllib 材質(zhì)庫(kù)(Material library)
shadow_obj 投射陰影(Shadow casting)
trace_obj 光線跟蹤(Ray tracing)
ctech 曲線近似技術(shù)(Curve approximation technique)
stech 表面近似技術(shù) (Surface approximation technique)
3、OBJ文件實(shí)例
的確挺難理解,,下面通過(guò)實(shí)例來(lái)具體講解,。讓我們來(lái)創(chuàng)建一個(gè)OBJ文件,內(nèi)容為一個(gè)四邊形,,不過(guò)這一回我們不用3D軟件,,而是用寫字板來(lái)創(chuàng)建。打開(kāi)寫字板,,把下面的5行代碼寫入,,可以適當(dāng)加一點(diǎn)注釋。保存文件為文本格式,,文件名為"myObj.obj",。
v -0.58 0.84 0
v 2.68 1.17 0
v 2.84 -2.03 0
v -1.92 -2.89 0
f 1 2 3 4
|