示例obj模型文件:
#Blender v2.60 (sub 0) OBJ File: ‘’
#www.blender.org
mtllib cube.mtl
o Cube
v 1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 -1.000000 1.000000
v -1.000000 -1.000000 -1.000000
v 1.000000 1.000000 -1.000000
v 1.000000 1.000000 1.000001
v -1.000000 1.000000 1.000000
v -1.000000 1.000000 -1.000000
usemtl Material
f 1 2 3 4
f 5 8 7 6
f 2 6 7 3
f 3 7 8 4
f 5 1 4 8
usemtl Material.001
f 1 5 6 2
OBJ文件格式:
OBJ格式的文件由若干个部分组成,包括顶点坐标部分、表面定义部分、材质定义部分等。每个部分定义了多个顶点、法线、表面等等。
(1)以井号(#)开头的行表示注释,上面1行和2行就是软件根据自身版本创建出来的注释。
(2)第3行引用了一个外部材质文件。OBJ格式将模型的材质信息存储在外部的MTL格式的文件中。
mtllib < 外部材质文件名 >这里,外部材质文件是cube.mtl。
(3)第4行按照如下格式指定了模型的名称:
o < 模型名称 > 示例程序中没有用到这条信息
(4)第5行到第12行按照如下格式定义了顶点的坐标,其中w是可选的,如果没有就默认为1.0 。
v x y z [w]本例中的模型时一个标准的立方体,共有8个顶点。
(5)第13行到第20行先指定了某个材质,然后列举了使用这个材质的表面。第13行指定了材质名称,该材质被定义在第3行引用的MTL文件中。
usemtl < 材质名 >
(6)接下来的第14行到第18行定义了使用这个材质的表面。每个表面是由顶点、纹理坐标和法线的索引序列定义的。
f v1 v2 v3 v4 ···
其中v1、v2、v3、v4是之前定义的顶点的索引值。注意,这里顶点的索引值从1开始,而不是从0开始。本例为了简单,没有包含法线,如果包含了法线向量,就需要遵照如下格式:
f v1//vn1 v2//vn2 v3//vn3 ···
其中,vn1、vn2等式法线向量的索引值,也是从1开始。
(7)第19行到第20行定义了使用了另一个材质的表面,即橘黄色的表面。