obj及mtl文件数据

前言

obj文件是Alias|Wavefront公司开发的一种标准3D模型文件格式,适合用于3D软件模型之间的互导。

obj和信息文件mtl都是文本文件, 都可以用记事本打开, 本文主要对两种文件内数据格式简单的解释一下

obj

image-20210618171800597

OBJ3.0文件格式支持直线(Line)、多边形(Polygon)、表面(Surface)和自由形态曲线(Free-form Curve)。直线和多边形通过它们的点来描述,曲线和表面则根据它们的控制点和依附于曲线类型的额外信息来定义,这些信息支持规则和不规则的曲线,包括那些基于贝塞尔曲线(Bezier)、B样条(B-spline)、基数(Cardinal/Catmull-Rom)和泰勒方程(Taylor equations)的曲线。其他特点如下:

  1. OBJ文件是一种3D模型文件。不包含动画、材质特性、贴图路径、动力学、粒子等信息。

  2. OBJ文件主要支持多边形(Polygons)模型。虽然也支持曲线(Curves)、表面(Surfaces)、点组材质(Point Group Materials),但Maya导出的OBJ文件并不包括这些信息。

  3. OBJ文件支持三个点以上的面,这一点很有用。很多其它的模型文件格式只支持三个点的面,所以导入Maya的模型经常被三角化了,这对于我们对模型进行再加工甚为不利。

  4. OBJ文件支持法线和贴图坐标。在其它软件中调整好贴图后,贴图坐标信息可以存入OBJ文件中,这样文件导入Maya后只需指定一下贴图文件路径就行了,不需要再调整贴图坐标。

  • 常见关键字
关键字 含义 示例
# 注释 # www.blender.org
usemtl 材质名称 usemtl Glass
v 顶点坐标 v -0.101738 14.455023 0.659757
vt 贴图坐标点/UV坐标 vt 0.439941 0.453613
vn 顶点法线 vn 0.496902 -0.240822 0.833674
o 对象名称 o Legs
f f 654/611/647 652/609/645 657/614/650

mtl

当你导出Obj模型的时候会发现除了.obj文件还会有个同名.mtl文件,这个文件用来干什么的?其实这个文件是用来记录模型的材质库参数的,包括贴图、环境光参数、模型反射等参数。

image-20210618171740238

  • 常见关键字
关键字 含义 示例
# 注释 # www.blender.org
newmtl 材质名称 usemtl Glass
Ks 镜面反射颜色 Ks 0.500000 0.500000 0.500000
Ka 环境颜色 Ka 1.000000 0.000000 0.000000
Kd 漫反射颜色 Kd 0.640000 0.640000 0.640000
Ke 自发光/放射光 Ke 0.640000 0.640000 0.640000
Ni 材质的光密度/折射率 Ni 2.73
Tf 透明度 Tf 0.00 0.37 0.37
map_Bump/Bump 凹凸贴图 bump T_Ground_Grass_D.png -bm 1
map_Kd/Kd 漫反射贴图 map_Kd T_UE4_LOGO_CARD.TGA

下面放一张maya中的编辑器下的参数与mtl文件的对应关系

Tf参数与编辑器中的参数是 1-的关系即 Tf = 1 - 编辑器中的参数

image-20210618173920449