OBJ 文件(三维模型文件格式)
OBJ 是 Wavefront科技 开发的一种定义几何的图形文件格式,该格式最初是为动画工具 Advanced Visualizer 开发,这个格式现在已经开放,并且被其他三维应用软件所使用。
OBJ 文件格式是表示三维图形的简单数据格式,可以包含每个顶点(Vertex)的位置、UV位置、曲面(Spline)属性、表面(Surface)属性、绘制多边形(Polygon)索引序列、绘制网格(Mesh)索引序列、渲染属性(材质、法线),以及组成面片(多边形)的顶点列表等数据,所以无需保存面法线数据。虽然OBj文件格式中的坐标没有具体的单位,但是文件中可以以注释的形式标注缩放信息。
OBJ 文件不需要文件头标识,可能会有注释行。每行数据的意义都通过每行开始的字符串表明,类似于编程语言的类型生命。
顶点相关的:
- v 几何体顶点(Geometric vertices)
- vt 贴图坐标点(Texture vertices)
- vn 顶点法线(Vertex normals)
- vp 参数空格顶点 (Parameter space vertices)
曲线、曲面:
- deg 度(Degree)
- bmat 基础矩阵(Basis matrix)
- step 步尺寸(Step size)
- cstype 曲线或表面类型 (Curve or surface type)
元素(Elements):
- p 点(Point)
- l 线(Line)
- f 面(Face)
- curv 曲线(Curve)
- curv2 2D曲线(2D curve)
- surf 表面(Surface)
自由形态曲线(Free-form curve)/表面主体陈述(surface body statements):
- parm 参数值(Parameter values )
- trim 外部修剪循环(Outer trimming loop)
- hole 内部整修循环(Inner trimming loop)
- scrv 特殊曲线(Special curve)
- sp 特殊的点(Special point)
- end 结束陈述(End statement)
自由形态表面之间的连接(Connectivity between free-form surfaces):
- con 连接 (Connect)
成组(Grouping):
- g 组名称(Group name)
- s 光滑组(Smoothing group)
- mg 合并组(Merging group)
- o 对象名称(Object name)
显示(Display)/渲染属性(render attributes):
- bevel 导角插值(Bevel interpolation)
- c_interp 颜色插值(Color interpolation)
- d_interp 溶解插值(Dissolve interpolation)
- lod 细节层次(Level of detail)
- usemtl 材质名称(Material name)
- mtllib 材质库(Material library)
- shadow_obj 投射阴影(Shadow casting)
- trace_obj 光线跟踪(Ray tracing)
- ctech 曲线近似技术(Curve approximation technique)
- stech 表面近似技术 (Surface approximation technique)
如果伴随着 OBJ 文件还有 MTL 文件,则 MTL 文件用于描述材质信息。几何处理时,不太使用材质信息。
OBJ 文件的处理难度较大。
参考文献
Wavefront .obj file * Wikipedia
OBJ解析 * 回眸笑苍生 * 博客园 (cnblogs.com)
Wavefront OBJ: Summary from the Encyclopedia of Graphics File Formats