本节将讨论另一种广泛使用的3D数据文件格式,即OBJ文件格式。OBJ文件格式最初由Wavefront Technologies Inc.开发。与PLY文件格式类似,OBJ格式也有ASCII版本和二进制版本。二进制版本是专有的且未记录文档。本章主要讨论ASCII版本。
与之前类似,将通过示例来学习文件格式。第一个示例cube.obj如下所示。可以猜到,OBJ文件定义了一个立方体的网格。
第一行mtlib ./cube.mtl声明了伴随的材质模板库(MTL)文件。MTL文件描述了表面着色属性,将在下一个代码片段中解释。
对于o cube行,起始字母o表示该行定义了一个对象,对象的名称是cube。以#开头的行是注释行,计算机会忽略行的其余部分。每行以v开头,表示每行定义了一个顶点。例如,v -0.5 -0.5 0.5定义了一个具有x坐标为0.5,y坐标为0.5和z坐标为0.5的顶点。对于以f开头的每行,f表示每行包含一个面的定义。例如,f 1 2 3行定义了一个面,其三个顶点分别为索引为1、2和3的顶点。
usemtl Door行声明在此行后声明的表面应使用MTL文件中定义的名为Door的材质属性进行着色:
mtllib ./cube.mtl
o cube
# 顶点列表
v -0.5 -0.5 0.5
v