以一个大理石地板的3d模型为例,如下图:
其包含三个文件,模型文件marble.obj,材质文件marble.mtl,及纹理贴图文件marble.png。obj构成了模型的主体,mtl为其材质,材质中有纹理贴图,对应png的图片。
obj和mtl文件本质是文本文件,由一行行文字组成,以notepad++或其他文本编辑器打开,会显示一行一行的文本信息,下面是对这些文本信息的解释说明。
OBJ文件
mtllib marble.mtl
#
# object Box001
#
v -38.9310 0.0000 39.5241
v -38.9310 0.0000 -40.7471
v 40.4302 0.0000 -40.7471
v 40.4302 0.0000 39.5241
v -38.9310 3.9873 39.5241
v 40.4302 3.9873 39.5241
v 40.4302 3.9873 -40.7471
v -38.9310 3.9873 -40.7471
# 8 vertices
vn 0.0000 -1.0000 -0.0000
vn 0.0000 1.0000 -0.0000
vn 0.0000 0.0000 1.0000
vn 1.0000 0.0000 -0.0000
vn 0.0000 0.0000 -1.0000
vn -1.0000 0.0000 -0.0000
# 6 vertex normals
vt 1.0000 0.0000 0.0000
vt 1.0000 1.0000 0.0000
vt 0.0000 1.0000 0.0000
vt 0.0000 0.0000 0.0000
# 4 texture coords
o Box001
g Box001
usemtl 07___Default
s 2
f 1/1/1 2/2/1 3/3/1
f 3/3/1 4/4/1 1/1/1
s 4
f 5/4/2 6/1/2 7/2/2
f 7/2/2 8/3/2 5/4/2
s 8
f 1/4/3 4/1/3 6/2/3
f 6/2/3 5/3/3 1/4/3
s 16
f 4/4/4 3/1/4 7/2/4
f 7/2/4 6/3/4 4/4/4
s 32
f 3/4/5 2/1/5 8/2/5
f 8/2/5 7/3/5 3/4/5
s 64
f 2/4/6 1/1/6 5/2/6
f 5/2/6 8/3/6 2/4/6
# 12 faces
- #:注释标记
- object:将一个obj模型分为多个模块,进行储存管理
- mtllib:描述了模型所使用的材质文件所在的路径
- usemtl:当前所用材质
- v:顶点
- vt:顶点的纹理坐标
- vn:顶点的法线
- o:对象(object)名称
- g: 组(group)名称
- s:光滑组(Smoothing group),处理面之间的光照信息来达到光滑效果
- f:面
其中面f需要拿出来单说,例如f 1/1/1 2/2/1 3/3/1:
空格隔开的三组数据分别表示三角形片元的三个顶点,在每一组数据中,每一个数字又分别代表着顶点/纹理坐标/法线所在行的行数。
以1/1/1为例:
- 1指向v的第一行,此例中为-38.9310 0.0000 39.5241
- 1指向vt的第一行,此例中为0.0000 -1.0000 -0.0000
- 1指向vn的第一行,此例中为1.0000 0.0000 0.0000
MTL文件
newmtl 07___Default
Ns 10.0000
Ni 1.5000
d 1.0000
Tr 0.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.5882 0.5882 0.5882
Kd 0.5882 0.5882 0.5882
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka marble.png
map_Kd marble.png
- newmtl:代表材质,以下皆为该材质的属性参数
- Ns:高光反射系数,值越高则高光越密集
- NI:指定材质表面的光密度,即折射值
- d:表示物体融入背景的数量,取值范围为0.0~1.0,取值为1.0表示完全不透明,取值为0.0时表示完全透明
- Tr:定义材质的alpha透明度
- Tf:材质的透射滤波(transmission filter),对应数据为r,g,b值
- illum: 照明度(illumination),后面可接0~10范围内的数字参数
- Ka: 环境光(ambient color)
- Kd: 散射光(diffuse color)
- Ks: 镜面光(specular color)
- Ke:放射光(emissive color)
- map_Ka:环境光所采样的纹理贴图路径,在.obj模型文件的根目录下
- map_Kd:漫反射光所采样的纹理贴图路径