OBJ格式模型详细介绍
概述:
obj是一種3d模型格式,很適合與3D模型之間互導(dǎo)。目前幾乎所有知名的3D軟件都支持obj文件的讀寫。
obj文件在導(dǎo)出時(shí)一般包括兩個(gè)文件.obj文件和.mtl文件。其中obj文件表示模型網(wǎng)絡(luò)文件,mtl文件表示模型使用的材質(zhì)。
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 1 g pCube1 usemtl file1SG f 1/1/1 2/2/2 3/3/3 f 3/3/3 2/2/2 4/4/4 s 2 f 3/13/5 4/14/6 5/15/7 f 5/15/7 4/14/6 6/16/8 s 3 f 5/21/9 6/22/10 7/23/11 f 7/23/11 6/22/10 8/24/12 s 4 f 7/17/13 8/18/14 1/19/15 f 1/19/15 8/18/14 2/20/16 s 5 f 2/5/17 8/6/18 4/7/19 f 4/7/19 8/6/18 6/8/20 s 6 f 7/9/21 1/10/22 5/11/23 f 5/11/23 1/10/22 3/12/24
特點(diǎn)說(shuō)明:
OBJ文件不需要任何種文件頭,文件由一行行文本組成,注釋行以符號(hào)“#”為開頭,空格和空行可以隨意加到文件中。
有字的行都由一兩個(gè)標(biāo)記字母也就是關(guān)鍵字(Keyword)開頭,關(guān)鍵字可以說(shuō)明這一行是什么樣的數(shù)據(jù)。
多行可以邏輯地連接在一起表示一行,方法是在每一行最后添加一個(gè)連接符()。 注意連接符()后面不能出現(xiàn)空格或Tab格,否則將導(dǎo)致文件出錯(cuò)。
關(guā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)
重點(diǎn)元素詳解:
v頂點(diǎn)
vt紋理坐標(biāo)
vn頂點(diǎn)法向量
f 面
一、頂點(diǎn)
v -0.500000 -0.500000 0.500000 v 0.500000 -0.500000 0.500000
格式:v x y z
意義:每個(gè)頂點(diǎn)的坐標(biāo)
二、紋理坐標(biāo)
vt 0.001992 0.001992 vt 0.998008 0.001992
格式:vt u v w
意義:繪制模型的三角面片時(shí),每個(gè)頂點(diǎn)取像素點(diǎn)時(shí)對(duì)應(yīng)的紋理圖片上的坐標(biāo)。紋理圖片的坐標(biāo)指的是,紋理圖片如果被放在屏幕上顯示時(shí),以屏幕左下角為原點(diǎn)的坐標(biāo)。
注意:w一般用于形容三維紋理,大部分是用不到的,基本都為0。
三、頂點(diǎn)法向量
vn 0.000000 0.000000 1.000000 vn 0.000000 0.000000 1.000000
格式:vn x y z
意義:繪制模型三角面片時(shí),需要確定三角面片的朝向,整個(gè)面的朝向,是由構(gòu)成每個(gè)面的頂點(diǎn)對(duì)應(yīng)的頂點(diǎn)法向量的做矢量和決定的(xyz的坐標(biāo)分別相加再除以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 頂點(diǎn)索引 / 紋理坐標(biāo)索引 / 頂點(diǎn)法向量索引)
意義:繪制三角面片的依據(jù),每個(gè)三角面片由三個(gè)f構(gòu)成,由f可以確定頂點(diǎn)、頂點(diǎn)的對(duì)應(yīng)的紋理坐標(biāo)(提取紋理圖片對(duì)應(yīng)該坐標(biāo)的像素點(diǎn))、通過(guò)三個(gè)頂點(diǎn)對(duì)應(yīng)的頂點(diǎn)法向量可以確定三角面的方向。
補(bǔ)充:有些模型可能會(huì)出現(xiàn)四邊形的繪制方式,那樣的模型關(guān)于面的數(shù)據(jù)描述是這樣的 f v/vt/vn v/vt/vn v/vt/vn v/vt/vn ,比三角面繪制方式多一項(xiàng)數(shù)據(jù)。
補(bǔ)充說(shuō)明:
頂點(diǎn)的個(gè)數(shù)與頂點(diǎn)法向量的個(gè)數(shù)一樣多。
頂點(diǎn)的個(gè)數(shù)不一定與紋理坐標(biāo)的個(gè)數(shù)一樣多,因?yàn)橛锌赡芎芏囗旤c(diǎn)公用一個(gè)紋理坐標(biāo)的像素。
面索引的個(gè)數(shù)也與其余數(shù)據(jù)數(shù)量無(wú)關(guān)。
最終每個(gè)三角面的顏色,是由構(gòu)成這個(gè)三角面的三個(gè)頂點(diǎn)進(jìn)行插值計(jì)算(有例如:一個(gè)三角面其中兩個(gè)頂點(diǎn)對(duì)應(yīng)的紋理坐標(biāo)是黑色的,另外一個(gè)是白色,那整個(gè)面呈現(xiàn)的顏色是由黑變白漸變,而不是三個(gè)顏色值的平均值。這就是插值的作用)來(lái)確定。所以面的顏色有可能不與每個(gè)點(diǎn)的顏色一致。
原文地址:https://blog.csdn.net/xyh930929/article/details/82260581
總結(jié)
以上是生活随笔為你收集整理的OBJ格式模型详细介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 为什么本田杰德销量低?
- 下一篇: 三轮蛤蟆车哪年出来的