mtl 材质文件格式介绍

参照:https://www.pengfeixc.com/blogs/computer-graphics/mtl-graphic-file-parse

https://blog.csdn.net/qjh5606/article/details/89715946

1、mtl 简介

MTL文件一般包括一个或多个材质的定义,每个材质定义都包含颜色(color)、纹理(texture)和反射贴图(reflection map)。它们被用于描述几何体的表面和顶点的纹理。Material文件内容以ASCII格式存储,同时有.mtl文件扩展名。

 

2、mtl 文件数据示例

# Blender MTL File: 'None'
# Material Count: 5

newmtl Mat_maverick.008_ec135.bmp
Ns 96.078443
Ka 1.000000 1.000000 1.000000
Kd 1.000000 1.000000 1.000000
Ks 0.050000 0.050000 0.050000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
map_Kd ec135.bmp

newmtl Mat_maverick.009_ec1351.bmp
Ns 96.078443
Ka 1.000000 1.000000 1.000000
Kd 1.000000 1.000000 1.000000
Ks 0.050000 0.050000 0.050000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
map_Kd ec1351.bmp

newmtl Mat_maverick.010
Ns 96.078443
Ka 1.000000 1.000000 1.000000
Kd 0.000000 0.000000 0.000000
Ks 0.050000 0.050000 0.050000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 0.392157
illum 9

newmtl Mat_maverick.011_ec1351.bmp
Ns 96.078443
Ka 1.000000 1.000000 1.000000
Kd 1.000000 1.000000 1.000000
Ks 0.050000 0.050000 0.050000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
map_Kd ec1351.bmp

newmtl Mat_maverick.012_ec135.bmp
Ns 96.078443
Ka 1.000000 1.000000 1.000000
Kd 1.000000 1.000000 1.000000
Ks 0.050000 0.050000 0.050000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
map_Kd ec135.bmp

每个材质描述都由newmtl语句构成。一个.mtl文件包含多个不同的材质的定义。

newmtl语句给当前材质定义赋予一个名称,并代表了材质定义的起始点。起始语句后紧跟描述材质的材质颜色和纹理贴图语句。

每当使用newmtl关键字开始定义一个新的材质时,该语句后面描述(定义)该材质的所有语句的顺序是任意的。

 

3、关键字解释

材质名称:
newmtl 材质名称 
例子:newmtl Mat_maverick.012_ec135.bmp

光照:
冯氏光照是由环境光由环境光照(Ambient Lighting)、漫反射光照(Diffuse Lighting)、镜面光照(Specular Lighting)组成,分别对应 Ka、Kd、Ks
Ka r g b
Kd r g b
Ks r g b
例子:
Ka 1.000000 1.000000 1.000000
Kd 1.000000 1.000000 1.000000
Ks 0.050000 0.050000 0.050000

反光度:
为了模拟更真实的效果,还会有一个镜面高光的反光度参数(Shininess),描述了镜面高光的强度,反光度越大表示镜面高光越亮。所以我们可以认为材质由环境光照、漫反射光照、镜面光照和反光度共同定义和描述。反光度取值范围为0-1000。
Ns exponent
例子:Ns 96.078443

光照模型:
illum illumno
例子:illum 2

illum  对应的取值范围
0:恒色照明模型,最终颜色取值为Kd值,color = Kd。
1:漫反射照明模型,最终颜色由环境颜光照和漫反射光照决定,并且受多个光源影响。
2:漫反射和镜面光照结合模型,最终颜色由环境光照、漫反射光照和镜面光照共同决定。

材质纹理贴图:
纹理贴图语句通过将图像或纹理文件与可映射的材料参数关联来修改表面的材料参数,也就是材料显示的颜色。通过修改现有参数而不是替换它们,纹理贴图在改变对象表面外观方面提供了很大的灵活性。
纹理图片应该是一个方形的,并且尺寸必须是2的幂次方。例如256x256, 512x512, 1024x1024。
例子:
map_Ka mapfile.png
map_Kd mapfile.png
map_Ks mapfile.png

折射率:
指定材质表面的光密度,即折射值。
ptical density是光密度值,可在0.001到10之间进行取值。若取值为1.0,光在通过物体的时候不发生弯曲。玻璃的折射率为1.5。取值小于1.0的时候可能会产生奇怪的结果,不推荐。
例子:Ni 1.000000
渐隐指数:
参数factor表示物体融入背景的数量,取值范围为0.0~1.0,取值为1.0表示完全不透明,取值为0.0时表示完全透明。当新创建一个物体时,该值默认为1.0,即无渐隐效果。
与真正的透明物体材质不一样,这个渐隐效果是不依赖于物体的厚度或是否具有光谱特性。该渐隐效果对所有光照模型都有效 例子:d 1.000000

  

  

 

posted @ 2022-08-04 16:36  min_zhi  阅读(3248)  评论(0编辑  收藏  举报