什么是 OBJ 文件?
Wavefront 的 Advanced Visualizer 应用程序使用 OBJ 文件来定义和存储几何对象。通过 OBJ 文件可以实现几何数据的前后传输。 OBJ 格式支持点、线、纹理顶点、面和自由形式几何(曲线和曲面)等多边形几何。此格式不支持动画或与场景的灯光和位置相关的信息。 OBJ 文件通常是由 CAD(计算机辅助设计)生成的 3D 建模过程的最终产品。存储顶点的默认顺序是逆时针方向,避免显式声明面法线。尽管 OBJ 文件在注释行中声明了比例信息,但尚未为 OBJ 坐标声明任何单位。
历史
Wavefront Technologies 为其 Advanced Visualizer 应用程序创建了 OBJ 文件格式,以存储几何对象和 3D 数据。它的 2.11 版本被新记录的版本 3 所取代。文件格式是开放的,并且已由其他供应商为其 3D 图形应用程序实施。 Wavefront Technologies 保持这种文件格式开源和中立。
OBJ 文件格式
在 3D 对象中,对表面几何进行编码是一项具有挑战性的工作,而 OBJ 文件格式可以很好地完成。这种格式非常通用,因为它提供了许多对表面几何进行编码的选择。以下是三种允许的格式,它们各有优缺点:
多边形面细分
OBJ 文件格式便于用户使用简单或复杂的几何形状镶嵌 3D 模型表面。对于模型的表面几何编码,文件存储每个多边形的顶点和法线。尽管镶嵌增加了模型的粗糙度,但有必要在文件大小和打印质量之间找到正确的平衡。
自由曲线
OBJ 文件格式允许用户定义自由曲面曲线来指定模型的曲面几何形状。由于自由曲线比多边形面更复杂,因为只有很少的数学参数,曲线可以最好地由自由曲线定义。因此,与多边形镶嵌相比,使用更少的数据,自由曲线用于生成任何 3D 模型的高质量编码,而无需扩大文件大小。
自由曲面
OBJ 文件格式还指定了曲面几何图形与自由曲面补丁的平铺。这种自由曲面贴片 (NURBS) 非常适用于没有刚性径向尺寸的表面,例如卡车车身、直升机机翼或船体。使用自由曲面非常有利,因为它们更精确,可以在更高的精度下保持更小的文件大小。这些表面是航空航天和汽车工业的重要组成部分,低精度是不可原谅的。
以下关键字按数据类型排列以定义表面几何形状。
元素 | 自由曲线/曲面体语句 | 自由曲线/曲面属性 |
---|---|---|
p | Point | parm |
l | Line | trim |
f | 面 | 孔 |
curv | Curve | scrv |
curv2 | 2D 曲线 | sp |
surf | Surface | end |
显示/渲染属性 | g | 组名 |
bevel | 斜面插值 | shadow_obj |
lod | 细节层次 | trace_obj |
d_interp | 溶解插值 | ctech |
c_interp | 颜色插值 | stech |
usemtl | 材料名称 | mtllib |
几何顶点 | ||
v | 几何顶点 | vn |
vt | 纹理顶点 | vp |
颜色和纹理
OBJ 文件允许将颜色和纹理信息存储在称为材料模板库 (MTL) 的关联文件格式中。多色几何模型一起使用这两个文件进行渲染。 MTL 文件是基于 ASCII 的,并且通过使用 Phong 反射模型描述表面的光反射特性来促进计算机渲染。该标准已被大量软件供应商采用,他们利用其进行材料交换。由于不支持镜面反射和视差贴图等最新技术,MTL 格式略微过时。