MTL材质详解
.mtl 文件(Material Library File) 是材质库文件.
一个.mtl文件可以包含一个或多个材质定义.
对于每个材质都有其颜色.纹理和反射贴图的描述,应用于物体的表面和顶点.
以下是一个材质库文件的基本结构:
newmtl mymtl_1
材质颜色光照定义
纹理贴图定义
反射贴图定义
newmtl mymtl_2
材质颜色光照定义
纹理贴图定义
反射贴图定义
newmtl mymtl_3
材质颜色光照定义
纹理贴图定义
反射贴图定义
……
注释:每个材质库可含多个材质定义. 每个材质都有一个材质名.
用newmtl mtlName来定义一个材质.
对于每个材质.可定义它的颜色光照纹理反射等描述特征.
材质颜色光照
环境反射
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~1。
漫反射
Kd r g b
Kd spectral file.rfl factor
Kd xyz x y z
高光镜面反射
Ks r g b
Ks spectral file.rfl factor
Ks xyz x y z
滤光透射率描述
Tf r g b
Tf spectral file.rfl factor
Tf xyz x y z
光照模型描述格式
illum illum_#
指定材质的光照模型。illum后面可接0~10范围内的数字参数。各个参数代表的光照模型如下所示:
光照模型 | 属性 |
---|---|
0 | Color on and Ambient off |
1 | Color on and Ambient on |
2 | Highlight on |
3 | Reflection on and Ray trace on |
4 | Transparency: Glass on / Reflection: Ray trace on |
5 | Reflection: Fresnel on and Ray trace on |
6 | Transparency: Refraction on / Reflection: Fresnel off and Ray trace on |
7 | Transparency: Refraction on / Reflection: Fresnel on and Ray trace on |
8 | Reflection on and Ray trace off |
9 | Transparency: Glass on / Reflection: Ray trace off |
10 | Casts shadows onto invisible surfaces |
渐隐指数描述
d factor
参数factor表示物体融入背景的数量,取值范围为0.0~1.0,取值为1.0表示完全不透明,取值为0.0时表示完全透明。当新创建一个物体时,该值默认为1.0,即无渐隐效果。
与真正的透明物体材质不一样,这个渐隐效果是不依赖于物体的厚度或是否具有光谱特性。该渐隐效果对所有光照模型都有效。
d -halo factor
指定一种受观察者影响的渐隐效果。例如,对于一个定义为 d -halo 0.0的球体,在它的中心是完全消隐的,而在表面边界处将逐渐变得不透明。
其中factor表示应用在材质上的渐隐率的最小值。而材质上具体的渐隐率将在这个最小值到1.0之间取值。其计算公式为:
dissolve = 1.0 - (N*v)(1.0-factor)
反射指数描述
Ns exponent
指定材质的反射指数,定义了反射高光度。
exponent是反射指数值,该值越高则高光越密集,一般取值范围在0~1000。
清晰度描述
Sharpness value
指定本地反射贴图的清晰度。如果材质中没有本地反射贴图定义,则将此值应用到预览中的全局反射贴图上。
value可在0~1000中取值,默认60。值越高则越清晰。
折射值描述
Ni ptical density
指定材质表面的光密度,即折射值。
ptical density是光密度值,可在0.001到10之间进行取值。若取值为1.0,光在通过物体的时候不发生弯曲。玻璃的折射率为1.5。取值小于1.0的时候可能会产生奇怪的结果,不推荐。
纹理映射
纹理映射可以对映射的相应材质参数进行修改,这个修改只是对原有存在的参数进行叠加修改,而不是替换原有参数,从而纹理映射在物体表面的表现上有很好的灵活性
纹理映射只可以改变以下材质参数:
- Ka (color)
- Kd (color)
- Ks (color)
- Ns (scalar)
- d (scalar)
除了以上参数,表面法线也可以更改。
纹理文件类型可以是以下几种:
纹理映射文件
.mpc:颜色纹理文件color texture files ——可改变Ka,Kd,Ks的值
.mps:标量纹理文件scalar texture files——可改变Ns,d,decal的值
.mpb:凹凸纹理文件bump texture files——可改变面法线
以下是mtl文件中对于纹理映射的描述格式:
1. map_Ka -options args filename
为环境反射指定颜色纹理文件. 在渲染的时候,Ka的值将再乘上map_Ka的值
2. map_Kd -options args filename
为漫反射指定颜色纹理文件或程序纹理文件,或是一个位图文件。
作用原理与可选参数与map_Ka同。
3. map_Ks -options args filename
为镜反射指定颜色纹理文件或程序纹理文件,或是一个位图文件。作用原理与可选参数与map_Ka同。
bump -options args filename
程序纹理文件
程序纹理文件是用数学公式来计算纹理的样本值。有以下几种格式:
.cxc
.cxs
.cxb