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同。

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