支持OBJ文件语法

obj文件格式支持多边形和自由形式的表面对象。Obj Reader/Writer目前支持多边形面(f)对象(l)线和(p)点。自由形式的表面通常不用于.obj文件交换,目前也不支持。为了完整起见,下面总结了目前支持的语法。

语法和描述

V

顶点的位置。坐标是浮点数。

Vn

顶点正常。坐标是浮点数。

v

纹理坐标。

为水平方向,

是垂直方向(在一维光栅/纹理的情况下可选,默认为0),

是在3D光栅/纹理贴图的情况下的深度(在2D光栅/纹理的情况下可选,默认为0)。

f < v1 > / < vt1 > / < vn1 > < v2 > / < vt2 > / < vn2 > < v3 > / < vt3 > / < vn3 >…

面按顺时针顺序存储为一系列三个或更多的顶点。顶点由它们的位置、可选的纹理坐标和可选的法线来描述,并以整数索引的形式编码到各自的坐标列表中。面一般限于三角形或四边形平面。

L / / /

线被存储为一个或多个顶点和可选的纹理坐标。纹理通常不会映射到行,但可以用来存储表格数据或索引。

P

点被存储为一系列的一个或多个顶点。

mtllib < filename.mtl >

Material (.mtl)文件引用Material文件,该文件定义了后面对象中使用的材料。材质文件包含颜色、照明组件和纹理文件名引用。

usemtl < mtlname >

材质名称字符串标签,它引用了obj文件中接下来要使用的材质。

G

后面元素的组名字符串标记。

o <对象名>

后面元素(面)的对象名称字符串标记。

s < smoothgroup >

用于将元素组合在一起进行平滑着色操作的平滑组号。

文件扩展名

内容

.obj

几何数据

一个.obj文件可以包含许多类型的几何图形。然而,在实践中obj文件通常只包含面。

Obj文件通常包含三维几何。2D数据将被表示为一个坐标(通常是y或z)为0.0的所有几何体。