OBJ 文件是一种简单的文本格式,用于存储 3D 模型信息(顶点、法线、纹理坐标、面连接关系)。
顶点坐标 (Vertex Position)
- 关键字:
v - 格式:
v x y z [w]x, y, z: 三维坐标(浮点数)w: 可选齐次坐标,默认值1.0
- 示例:
v 0.5 1.0 -3.2 # 顶点 (x, y, z)
v 1.0 2.0 3.0 0.5 # 含 w 值
点法线 (Vertex Normal)
- 关键字:
vn - 格式:
vn i j ki, j, k: 法线向量的三维分量(浮点数)(归一化)
- 示例:
vn 0.0 0.0 1.0 # Z 轴正向法线
vn -1.0 0.5 0.2 # 自定义法线方向
纹理坐标 (Texture Coordinate)
- 关键字:
vt - 格式:
vt u v [w]u, v: 纹理 UV 坐标(浮点数,范围通常[0,1])w: 可选深度值,默认0(罕见使用)
- 示例:
vt 0.5 1.0 # 标准 UV
vt 0.3 0.4 0.5 # 含 w 值
面索引 (Face Indices)
- 关键字:
f - 格式:
f v1[/vt1][/vn1] v2[/vt2][/vn2] v3[/vt3][/vn3] ...- 索引规则:
- 从 1 开始计数(非 0 开始)
- 负值表示从末尾倒序索引(如
-1= 最后一个元素) - 支持三角形(3 顶点)、四边形(4 顶点)或多边形
- 三种格式:
- 仅顶点:
f 1 2 3 - 顶点+纹理:
f 1/1 2/2 3/3 - 顶点+纹理+法线:
f 1/1/1 2/2/2 3/3/3 - 顶点+法线(跳过纹理):
f 1//1 2//2 3//3
- 仅顶点:
- 索引规则:
- 示例:
f 1 2 3 # 三角形,仅顶点索引
f 1/1 2/2 3/3 # 顶点+纹理索引
f 1/1/1 2/2/2 3/3/3 # 顶点+纹理+法线索引
f 1//1 2//2 3//3 # 顶点+法线(无纹理)
- 可视化:
f 0 1 2
f 1 2 3
0───────1
│ / │
│ / │
│ / │
2───────3