OBJ文件詳解(轉)

OBJ文件是Alias|Wavefront公司爲它的一套基於工作站的3D建模和動畫軟件"Advanced Visualizer"開發的一種標準3D模型文件格式,很適合用於3D軟件模型之間的互導,也可以通過Maya讀寫。比如你在3dsMaxLightWave中建了一個模型,想把它調到Maya裏面渲染或動畫,導出OBJ文件就是一種很好的選擇。目前幾乎所有知名的3D軟件都支持OBJ文件的讀寫,不過其中很多需要通過插件才能實現。
  OBJ文件是一種文本文件,可以直接用寫字板打開進行查看和編輯修改。另外,有一種與此相關二進制文件格式(*.MOD),其作爲專利未公開,因此這裏不作討論。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

1OBJ文件的特點

OBJ3.0文件格式支持直線(Line)、多邊形(Polygon)、表面(Surface)和自由形態曲線(Free-form Curve)。直線和多角形通過它們的點來描述,曲線和表面則根據它們的控制點和依附於曲線類型的額外信息來定義,這些信息支持規則和不規則的曲線,包括那些基於貝塞爾曲線(Bezier)B樣條(B-spline)、基數(Cardinal/Catmull-Rom)和泰勒方程(Taylor equations)的曲線。其他特點如下:
  (1)OBJ文件是一種3D模型文件。不包含動畫、材質特性、貼圖路徑、動力學、粒子等信息。
  (2)OBJ文件主要支持多邊形(Polygons)模型。雖然也支持曲線(Curves)、表面(Surfaces)、點組材質(Point Group Materials),但Maya導出的OBJ文件並不包括這些信息。

  (3)OBJ文件支持三個點以上的面,這一點很有用。很多其它的模型文件格式只支持三個點的面,所以導入Maya的模型經常被三角化了,這對於我們對模型進行再加工甚爲不利。     

(4)OBJ文件支持法線和貼圖座標。在其它軟件中調整好貼圖後,貼圖座標信息可以存入OBJ文件中,這樣文件導入Maya後只需指定一下貼圖文件路徑就行了,不需要再調整貼圖座標。

2OBJ文件的基本結構

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 technique)
 
後邊還有續,沒轉,這些基本夠用了.
發佈了30 篇原創文章 · 獲贊 2 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章