模型檔案格式
##1 OBJ檔案
OBJ檔案是Alias|Wavefront公司為它的一套基于工作站的3D模組化和動畫軟體"Advanced Visualizer"開發的一種标準3D模型檔案格式,很适合用于3D軟體模型之間的互導,也可以通過Maya讀寫。比如你在3dsMax或LightWave中建了一個模型,想把它調到Maya裡面渲染或動畫,導出OBJ檔案就是一種很好的選擇。目前幾乎所有知名的3D軟體都支援OBJ檔案的讀寫,不過其中很多需要通過插件才能實作。
###1.1 OBJ檔案的特點
OBJ3.0檔案格式支援直線(Line)、多邊形(Polygon)、表面(Surface)和自由形态曲線(Free-form Curve)。直線和多角形通過它們的點來描述,曲線和表面則根據它們的控制點和依附于曲線類型的額外資訊來定義,這些資訊支援規則和不規則的曲線,包括那些基于貝塞爾曲線(Bezier)、B樣條(B-spline)、基數(Cardinal/Catmull-Rom)和泰勒方程(Taylor equations)的曲線。其他特點如下:
- OBJ檔案是一種3D模型檔案。不包含動畫、材質特性、貼圖路徑、動力學、粒子等資訊。
- OBJ檔案主要支援多邊形(Polygons)模型。雖然也支援曲線(Curves)、表面(Surfaces)、點組材質(Point Group Materials),但Maya導出的OBJ檔案并不包括這些資訊。
- OBJ檔案支援三個點以上的面,這一點很有用。很多其它的模型檔案格式隻支援三個點的面,是以導入Maya的模型經常被三角化了,這對于我們對模型進行再加工甚為不利。
-
OBJ檔案支援法線和貼圖坐标。在其它軟體中調整好貼圖後,貼圖坐标資訊可以存入OBJ檔案中,這樣檔案導入Maya後隻需指定一下貼圖檔案路徑就行了,不需要再調整貼圖坐标。
###1.2 OBJ檔案的基本結構
OBJ檔案不需要任何種檔案頭(File Header),盡管經常使用幾行檔案資訊的注釋作為檔案的開頭。OBJ檔案由一行行文本組成,注釋行以符号“#”為開頭,空格和空行可以随意加到檔案中以增加檔案的可讀性。有字的行都由一兩個标記字母也就是關鍵字(Keyword)開頭,關鍵字可以說明這一行是什麼樣的資料。多行可以邏輯地連接配接在一起表示一行,方法是在每一行最後添加一個連接配接符()。 注意連接配接符()後面不能出現空格或Tab格,否則将導緻檔案出錯。
下列關鍵字可以在OBJ檔案使用。在這個清單中, 關鍵字根據資料類型排列,每個關鍵字有一段簡短描述。
符号 | 頂點資料(Vertex data) |
---|---|
v | 幾何體頂點(Geometric vertices) |
vt | 貼圖坐标點(Texture vertices) |
vn | 頂點法線(Vertex normals) |
vp | 參數空格頂點 (Parameter space vertices) |
符号 | 自由形态曲線(Free-form curve)/表面屬性(surface attributes) |
---|---|
deg | 度(Degree) |
bmat | 基礎矩陣(Basis matrix) |
step | 步尺寸(Step size) |
cstype | 曲線或表面類型 (Curve or surface type) |
符号 | 元素(Elements) |
---|---|
p | 點(Point) |
l | 線(Line) |
f | 面(Face) |
curv | 曲線(Curve) |
curv2 | 2D曲線(2D curve) |
surf | 表面(Surface) |
符号 | 自由形态曲線(Free-form curve)/表面主體陳述(surface body statements) |
---|---|
parm | 參數值(Parameter values ) |
trim | 外部修剪循環(Outer trimming loop) |
hole | 内部整修循環(Inner trimming loop) |
scrv | 特殊曲線(Special curve) |
sp | 特殊的點(Special point) |
end | 結束陳述(End statement) |
符号 | 自由形态表面之間的連接配接(Connectivity between free-form surfaces) |
---|---|
con | 連接配接 (Connect) |
符号 | 成組(Grouping) |
---|---|
g | 組名稱(Group name) |
s | 光滑組(Smoothing group) |
mg | 合并組(Merging group) |
o | 對象名稱(Object name) |
符号 | 顯示(Display)/渲染屬性(render attributes) |
---|---|
bevel | 導角插值(Bevel interpolation) |
c_interp | 顔色插值(Color interpolation) |
d_interp | 溶解插值(Dissolve interpolation) |
lod | 細節層次(Level of detail) |
usemtl | 材質名稱(Material name) |
mtllib | 材質庫(Material library) |
shadow_obj | 投射陰影(Shadow casting) |
trace_obj | 光線跟蹤(Ray tracing) |
ctech | 曲線近似技術(Curve approximation technique) |
stech | 表面近似技術 (Surface approximation techniqu |