OBJ格式模型詳細介紹

2022-05-12 19:21:53 字數 3738 閱讀 8027

概述:

obj是一種3d模型格式,很適合與3d模型之間互導。目前幾乎所有知名的3d軟體都支援obj檔案的讀寫。

obj檔案在匯出時一般包括兩個檔案.obj檔案和.mtl檔案。其中obj檔案表示模型網路檔案,mtl檔案表示模型使用的材質。

obj示例:

# 一些注釋

mtllib cube.mtl

g default

v -0.500000 -0.500000 0.500000

v 0.500000 -0.500000 0.500000

v -0.500000 0.500000 0.500000

v 0.500000 0.500000 0.500000

v -0.500000 0.500000 -0.500000

v 0.500000 0.500000 -0.500000

v -0.500000 -0.500000 -0.500000

v 0.500000 -0.500000 -0.500000

vt 0.001992 0.001992

vt 0.998008 0.001992

vt 0.001992 0.998008

vt 0.998008 0.998008

vt 0.001992 0.001992

vt 0.998008 0.001992

vt 0.001992 0.998008

vt 0.998008 0.998008

vt 0.001992 0.001992

vt 0.998008 0.001992

vt 0.001992 0.998008

vt 0.998008 0.998008

vt 0.001992 0.001992

vt 0.998008 0.001992

vt 0.001992 0.998008

vt 0.998008 0.998008

vt 0.001992 0.001992

vt 0.998008 0.001992

vt 0.001992 0.998008

vt 0.998008 0.998008

vt 0.998008 0.998008

vt 0.001992 0.998008

vt 0.998008 0.001992

vt 0.001992 0.001992

vn 0.000000 0.000000 1.000000

vn 0.000000 0.000000 1.000000

vn 0.000000 0.000000 1.000000

vn 0.000000 0.000000 1.000000

vn 0.000000 1.000000 0.000000

vn 0.000000 1.000000 0.000000

vn 0.000000 1.000000 0.000000

vn 0.000000 1.000000 0.000000

vn 0.000000 0.000000 -1.000000

vn 0.000000 0.000000 -1.000000

vn 0.000000 0.000000 -1.000000

vn 0.000000 0.000000 -1.000000

vn 0.000000 -1.000000 0.000000

vn 0.000000 -1.000000 0.000000

vn 0.000000 -1.000000 0.000000

vn 0.000000 -1.000000 0.000000

vn 1.000000 0.000000 0.000000

vn 1.000000 0.000000 0.000000

vn 1.000000 0.000000 0.000000

vn 1.000000 0.000000 0.000000

vn -1.000000 0.000000 0.000000

vn -1.000000 0.000000 0.000000

vn -1.000000 0.000000 0.000000

vn -1.000000 0.000000 0.000000

s 1g pcube1

usemtl file1sg

f 1/1/1 2/2/2 3/3/3

f 3/3/3 2/2/2 4/4/4

s 2f 3/13/5 4/14/6 5/15/7

f 5/15/7 4/14/6 6/16/8

s 3f 5/21/9 6/22/10 7/23/11

f 7/23/11 6/22/10 8/24/12

s 4f 7/17/13 8/18/14 1/19/15

f 1/19/15 8/18/14 2/20/16

s 5f 2/5/17 8/6/18 4/7/19

f 4/7/19 8/6/18 6/8/20

s 6f 7/9/21 1/10/22 5/11/23

f 5/11/23 1/10/22 3/12/24

obj檔案不需要任何種檔案頭,檔案由一行行文字組成,注釋行以符號「#」為開頭,空格和空行可以隨意加到檔案中。

有字的行都由一兩個標記字母也就是關鍵字(keyword)開頭,關鍵字可以說明這一行是什麼樣的資料。

多行可以邏輯地連線在一起表示一行,方法是在每一行最後新增乙個連線符(\)。 注意連線符(\)後面不能出現空格或tab格,否則將導致檔案出錯。

關鍵字:

重點元素詳解:

一、頂點

v -0.500000 -0.500000 0.500000

v 0.500000 -0.500000 0.500000

格式:v x y z

意義:每個頂點的座標

二、紋理座標

vt 0.001992 0.001992

vt 0.998008 0.001992

格式:vt u v w

注意:w一般用於形容三維紋理,大部分是用不到的,基本都為0。

三、頂點法向量

vn 0.000000 0.000000 1.000000

vn 0.000000 0.000000 1.000000

格式:vn x y z

意義:繪製模型三角麵片時,需要確定三角麵片的朝向,整個面的朝向,是由構成每個面的頂點對應的頂點法向量的做向量和決定的(xyz的座標分別相加再除以3得到的)。

四、面

f 3/13/5 4/14/6 5/15/7

f 5/15/7 4/14/6 6/16/8

格式 :f v/vt/vn v/vt/vn v/vt/vn(f 頂點索引 / 紋理座標索引 / 頂點法向量索引)

補充:有些模型可能會出現四邊形的繪製方式,那樣的模型關於面的資料描述是這樣的 f v/vt/vn v/vt/vn v/vt/vn v/vt/vn ,比三角面繪製方式多一項資料。

補充說明:

頂點的個數與頂點法向量的個數一樣多。

頂點的個數不一定與紋理座標的個數一樣多,因為有可能很多頂點公用乙個紋理座標的畫素。

面索引的個數也與其餘資料數量無關。

最終每個三角面的顏色,是由構成這個三角面的三個頂點進行插值計算(有例如:乙個三角面其中兩個頂點對應的紋理座標是黑色的,另外乙個是白色,那整個面呈現的顏色是由黑變白漸變,而不是三個顏色值的平均值。這就是插值的作用)來確定。所以面的顏色有可能不與每個點的顏色一致。

OBJ檔案格式的詳細介紹

格式 v x y z 意義 每個頂點的座標 格式 vt u v w 意義 繪製模型的三角麵片時,每個頂點取畫素點時對應的紋理上的座標。紋理的座標指的是,紋理如果被放在螢幕上顯示時,以螢幕左下角為原點的座標。注意 w一般用於形容三維紋理,大部分是用不到的,基本都為0。格式 vn x y z 意義 繪製...

擷取3D遊戲模型為obj格式

1,將d3d9.dll snapconfig.cfg拷貝或覆蓋到遊戲執行目錄 若果原先已經有d3d9.dll,則先備份以便還原 2,執行遊戲,所有貼圖和模型會自動儲存到執行目錄的snapmesh資料夾。3,擷取完後不在使用時記得將d3d9.dll刪除或還原,否則每次啟動都會擷取導致遊戲很卡。snap...

mysql關係模型詳細介紹

關係的完整性 關係代數 關係資料模型由關係資料結構,關係操作集合,關係完整性約束三部分組成 關係操作 集合的操作方式 資料庫的完整性是指資料的正確性和相容性,利用完整性約束。dbms可以幫助使用者阻止非法資料的輸入 實體完整性約束 參照完整性約束 使用者定義的完整性約束 簡單來說關係完整性約束就是保...