
OBJ模型以文本文件形式存储,可读性很好。文件包含三维模型的几何顶点、纹理坐标、法线向量和材质使用等相关信息。一般来说,OBJ文件每一行由前缀字符加若干相关参数组成。前缀字符表明该行存储的信息类别,参数则是详细的信息内容。一个三维模型由若干个面元组成的边界轮廓表示,这些面元由空间顶点组合构成。所以对于三维模型,空间坐标顶点的定义很重要。在STL文件中,每个三角面片的定义都要存储完整的顶点信息,这就导致同一顶点在多个面片定义中重复出现,产生很多数据冗余,同时也割裂了三角面片之间的联系。

OBJ文件采用索引表达形式,对于在面片表示中会用到的所有空间顶点,先完成这些顶点的定义,并根据定义顺序默认赋予每个顶点唯一的索引值(从1开始,依次递增)。这样在后续面片定义中,通过索引值就能简单直接地进行顶点表达,顶点的引用顺序遵循右手定则。这种处理方式不仅消除了重复顶点的冗余信息,还能在一定程度上反映出模型顶点与面片以及面片之间的几何关系。对于纹理坐标和法线向量,OBJ文件也进行同样的处理。在进行三角面片定义时,将多个顶点、纹理坐标和法线向量的索引依次排列,中间用字符‘/’分隔,即若干个‘v/vt/vn’,就可以完成面元的表达。后两者在面片表示中并非必不可少,不需要时可以省略。