图形学基础 | mtl文件详解

mtl文件详解

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范围内的数字参数。各个参数代表的光照模型如下所示:

光照模型属性
0Color on and Ambient off
1Color on and Ambient on
2Highlight on
3Reflection on and Ray trace on
4Transparency: Glass on / Reflection: Ray trace on
5Reflection: Fresnel on and Ray trace on
6Transparency: Refraction on / Reflection: Fresnel off and Ray trace on
7Transparency: Refraction on / Reflection: Fresnel on and Ray trace on
8Reflection on and Ray trace off
9Transparency: Glass on / Reflection: Ray trace off
10Casts 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

  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值