.mtl 文件(Material Library File)是材质库文件,与obj文件配合,把纹理颜色渲染到obj模型上。
描述的是物体的材质信息,ASCII存储,任何文本编辑器都可以打开和编辑。一个.mtl文件可以包含一个或多个材质定义,对于每个材质都包含材质的漫射(diffuse),环境(ambient),光泽(specular)的RGB的定义值,以及反射(specularity),折射(refraction),透明度(transparency)等其它特征,应用于物体的表面和顶点。
每个材质库文件的基本结构:
newmtl material_0
材质颜色光照定义
纹理贴图定义
反射贴图定义
newmtl material_1
材质颜色光照定义
纹理贴图定义
反射贴图定义
newmtl material_2
材质颜色光照定义
纹理贴图定义
反射贴图定义
例子:
newmtl material_0
Ka 1.000000 1.000000 1.000000
Kd 1.000000 1.000000 1.000000
Ks 1.000000 1.000000 1.000000
illum 2
Ns 0.000000
d 0.2
map_Kd textured_output.jpg
mtl 文件使用的关键字
-
newmtl: 定义新的材质组,后面参数为材质组名称 -
Ka: 环境反射(ambient color)
有三种描述格式,三者是互斥的,不能同时使用
*Ka r g b用RGB颜色值用来表示,g、b是可选的,如果只指定了r的值,则g、b的值都等于r的值。三个参数一般取值范围0.0~1.0,在此范围外的值则相应的增加或减少反射率;-
Ka spectral file.rfl factor用一个rfl文件表示。factor是一个可选参数,表示.rfl文件中值的乘数,默认1.0; -
Ka xyz x y z用CIEXYZ值来表示,x、y、z是CIEXYZ颜色空间的各分量值。y和z两参数是可选的,如果只指定了x的值,则y和z的值等于r的值。三个参数一般取值范围为0.0~1.0。
-
-
Kd: 漫反射(diffuse color)Kd r g bKd spectral file.rfl factorKd xyz x y z
-
Ks: 镜反射(specular color)Ks r g bKs spectral file.rfl factorKs xyz x y z
-
Tf: 滤光透射率(specular color)Tf r g bTf spectral file.rfl factorTf xyz x y z
-
Ke: 放射光(emissive color)Ke r g bKe spectral file.rfl factorKe xyz x y z
-
illum: 照明度(illumination)
illum numnum取值范围0~10.值 意义 0 Color on and Ambient off1 Color on and Ambient on2 Highlight on3 Reflection on and Ray trace on4 Transparency: Glass on/Reflection: Ray trace on5 Reflection: Fresnel on and Ray trace on6 Transparency: Refraction on/Reflection: Fresnel off and Ray trace on7 Transparency: Refraction on/Reflection: Fresnel on and Ray trace on8 Reflection on and Ray trace off9 Transparency: Glass on/Reflection: Ray trace off10 Casts shadows onto invisible surfaces -
d,渐隐指数-
d factor表示物体融入背景的数量,取值范围0.0~·1.0,不写默认1.0(不透明),与真正的透明物体材质不一样,这个渐隐效果是不依赖于物体的厚度或者是否具有光谱特性。该渐隐效果对所有光照模型都有效。0完全透明;1完全不透明。 -
d -halo factor指定一种受观察者影响的渐隐效果。列如,对于定义一个d -halo 0的球体,在它的中心是完全消隐的,而在表面边界将逐渐变得不透明。其中factor表示应用在材质上的渐隐率的最小值。而材质上具体的渐隐率将在这个最小值到1.0之间取值。其计算公式为:dissolve = 1.0 - (N * v)(1.0 - factor)
-
-
Ns: 反射指数
Ns exponent指定材质的反射指数,定义了反射高光度。
exponent是反射指数值,该值越高则高光越密集,一般取值范围在0~1000。 -
Sharpness: 清晰度(sharpness)
Sharpness value指定本地反射贴图的清晰度。如果材质中没有本地反射贴图定义,则将此值应用到预览中的全局反射贴图上。
value可在0~1000中取值,默认60。值越高则越清晰。 -
Ni: 折射值描述(optical density)
Ni ptical density指定材质表面的光密度,既折射值。
ptical density是光密度值,可在0.001到10之间进行取值。若取值为1.0,光在通过物体的时候不发生弯曲。玻璃的折射率为1.5。取值小于1.0的时候可能回产生奇怪的结果,不推荐。 -
Tr用于定义材质的Alpha透明度
-
Tf: 材质的透射滤波(transmission filter),对应数据为r、g、b值 -
map_Ka、map_Kd、 map_Ks材质的环境,散射和镜面贴图,对应数据为贴图文件名称 -
refl: 材质的反射属性
纹理映射
纹理映射可以对映射的相应材质参数进行修改,这个修改只是对原有存在的参数进行叠加修改,而不是替换原有参数,从而纹理映射在物体表面的表现上有很好的灵活性。
纹理映射只可以改变以下材质参数:
- Ka (color)
- Kd (color)
- Ks (color)
- Ns (color)
- d (scalar)
除以上参数外,表面法线也可以更改.
纹理文件可以有以下几种类型:
- 纹理映射文件
-
.mpc: 颜色纹理文件color texture files-- 可以改变Ka,Kd,Ks的值 -
.mps: 标量纹理文件scalar texture files-- 可改变Ns,d,decal的值 -
.mpb: 凹凸纹理文件bump texture files-- 可改变面法线
- 程序纹理文件
程序纹理文件是用数学公式计算纹理的样本值。有以下几种格式:
.cxc.cxs.cxb
以下是mtl文件中对于纹理映射的描述格式:
map_Ka -options args filename
为环境反射指定颜色纹理文件(.mpc)或程序纹理文件(.cxc)或是一个位图文件(jpg、png等)。
在渲染的时候,Ka的值将再乘上map_Ka的值。
而map_Ka的可选项参数有以下几个:
-blendu on | off-blendv on | off-cc on | off-clamp on | off-mm bse gain-o u v w-s u v w-t u v w-texres value
map_Kd -options args filename
为漫反射指定颜色纹理文件(.mpc)或程序纹理文件(.cxc)或是一个位图文件(jpg、png等)。
作用原理与可选参数和map_Ka同。
map_Ks -options args filename
为镜反射指定颜色纹理文件(.mpc)或程序纹理文件(.cxc)或是一个位图文件(jpg、png等)。
作用原理与可选参数和map_Ka同。












网友评论