Obj模型之mtl文件格式

.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 文件使用的关键字

  1. newmtl: 定义新的材质组,后面参数为材质组名称

  2. 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。
  3. Kd: 漫反射(diffuse color)

    • Kd r g b
    • Kd spectral file.rfl factor
    • Kd xyz x y z
  4. Ks: 镜反射(specular color)

    • Ks r g b
    • Ks spectral file.rfl factor
    • Ks xyz x y z
  5. Tf: 滤光透射率(specular color)

    • Tf r g b
    • Tf spectral file.rfl factor
    • Tf xyz x y z
  6. Ke: 放射光(emissive color)

    • Ke r g b
    • Ke spectral file.rfl factor
    • Ke xyz x y z
  7. illum: 照明度(illumination)
    illum num num取值范围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
  8. 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)
  9. Ns: 反射指数
    Ns exponent 指定材质的反射指数,定义了反射高光度。
    exponent是反射指数值,该值越高则高光越密集,一般取值范围在0~1000。

  10. Sharpness: 清晰度(sharpness)
    Sharpness value 指定本地反射贴图的清晰度。如果材质中没有本地反射贴图定义,则将此值应用到预览中的全局反射贴图上。
    value可在0~1000中取值,默认60。值越高则越清晰。

  11. Ni : 折射值描述(optical density)
    Ni ptical density 指定材质表面的光密度,既折射值。
    ptical density是光密度值,可在0.001到10之间进行取值。若取值为1.0,光在通过物体的时候不发生弯曲。玻璃的折射率为1.5。取值小于1.0的时候可能回产生奇怪的结果,不推荐。

  12. 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)

除以上参数外,表面法线也可以更改.

纹理文件可以有以下几种类型:

  1. 纹理映射文件
  • .mpc: 颜色纹理文件 color texture files -- 可以改变Ka,Kd,Ks的值
  • .mps: 标量纹理文件 scalar texture files -- 可改变Ns, d, decal的值
  • .mpb: 凹凸纹理文件 bump texture files -- 可改变面法线
  1. 程序纹理文件

程序纹理文件是用数学公式计算纹理的样本值。有以下几种格式:

  • .cxc
  • .cxs
  • .cxb

以下是mtl文件中对于纹理映射的描述格式:

  1. 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
  1. map_Kd -options args filename

为漫反射指定颜色纹理文件(.mpc)或程序纹理文件(.cxc)或是一个位图文件(jpg、png等)。
作用原理与可选参数和map_Ka同。

  1. map_Ks -options args filename

为镜反射指定颜色纹理文件(.mpc)或程序纹理文件(.cxc)或是一个位图文件(jpg、png等)。
作用原理与可选参数和map_Ka同。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章