一.OBJ文件简介
obj文件不包含面的颜色定义信息,可以引用材质库存储在一个.mtl的文件中(mtllib 材质库),材质库包含了材质的漫射(diffuse) 环境(ambient) 光泽(specular) 反射(specularity) 折射(refraction) 透明度(transparency)等
obj文件包含UV数据,但不包含材质特性及路径等,不包含动画 例子和动力学信息
obj3.0格式支持多边形(Polygon) 直线(Lines) 表面(Surfaces)和自由形态曲线(Free-form Curves)
二.OBJ文件基本结构
1.顶点数据(Vertex data):
- v 几何体顶点(Geometric vertices)
- vt 贴图坐标点(Vertex normals)
- vp 参数空格顶点(Parameter space vertices)
2.自由形态曲线(Free-form curve)/表面属性(surface attributes):
- deg 度(Degree)
- bmat 基本矩阵(Basis matrix)
- step 步尺寸(Step size)
- cstype 曲线或表面类型(Curve or surface type)
3.元素
- p 点(Point)
- l 线(Line)
- f 面(Face)
- curv 曲线(Curve)
- curv2 2D曲线(2D curve)
- surf 表面(Surface)
4.自由形态曲线(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)
5.自由形态表面之间的(Connectivity between free-form surfaces):
- con 连接(Connect)
6.成组(Grouping):
- g 组名称(Group name)
- s 光滑组(Smoothing group)
- mg 合并组(Merging group)
- o 对象名称(Object name)
7.显示(Dispaly)/渲染属性(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文件实例
下面obj文件是一个长方体,包含了基本信息(不含贴图)
# object Box01 代表注释信息
v -36.2848 0.0000 7.8963 代表顶点坐标
vn 0.0000 -1.0000 -0.0000 代表顶点法线坐标
vt 1.0000 0.0000 0.0000 代表贴图坐标
g Box01 代表组
s 2 代表光滑组
f 1/1/1 2/2/1 3/3/1 4/4/1 表示面 顶点索引 贴图(uv)索引 法线索引
# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware # 创建的文件:21.05.2019 11:16:45 # # object Box01 # v -36.2848 0.0000 7.8963 v -36.2848 0.0000 -26.2606 v 24.2100 0.0000 -26.2606 v 24.2100 0.0000 7.8963 v -36.2848 26.3326 7.8963 v 24.2100 26.3326 7.8963 v 24.2100 26.3326 -26.2606 v -36.2848 26.3326 -26.2606 # 8 vertices vn 0.0000 -1.0000 -0.0000 vn 0.0000 1.0000 -0.0000 vn 0.0000 0.0000 1.0000 vn 1.0000 0.0000 -0.0000 vn 0.0000 0.0000 -1.0000 vn -1.0000 0.0000 -0.0000 # 6 vertex normals vt 1.0000 0.0000 0.0000 vt 1.0000 1.0000 0.0000 vt 0.0000 1.0000 0.0000 vt 0.0000 0.0000 0.0000 # 4 texture coords g Box01 s 2 f 1/1/1 2/2/1 3/3/1 4/4/1 s 4 f 5/4/2 6/1/2 7/2/2 8/3/2 s 8 f 1/4/3 4/1/3 6/2/3 5/3/3 s 16 f 4/4/4 3/1/4 7/2/4 6/3/4 s 32 f 3/4/5 2/1/5 8/2/5 7/3/5 s 64 f 2/4/6 1/1/6 5/2/6 8/3/6 # 6 polygons