on
mtl 文件解析
mtl:Material template library
同 obj 文件相同,都是 ASCII 编码的文件,可以直接打开,所以直接看内容就好
moon.mtl
# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
# File Created: 06.10.2013 19:40:35
newmtl 01___Default
Ns 10.0000
Ni 1.5000
d 1.0000
Tr 0.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.5882 0.5882 0.5882
Kd 0.5882 0.5882 0.5882
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka C:\Users\Utente\Pictures\MoonMap2_2500x1250.jpg
map_Kd C:\Users\Utente\Pictures\MoonMap2_2500x1250.jpg
map_bump C:\Users\Utente\Pictures\moon-normal.jpg
bump C:\Users\Utente\Pictures\moon-normal.jpg
注释
以 # 开头的都是注释,不多说
newmtl
格式 newmtl name
,表示材质的名字,后边跟随的内容都用于描述该材质
Ns
没找到具体的名词定义,但是个人理解就是反射指数,number of Shininess
格式 Ns number
,定义材质的光泽度(反射指数),该值的范围通常是 [0, 1000]
Ni
折射率,至于是什么的缩写我是真没找到,这里的 i 只能认为是index of refraction
,不过我个人也感觉有点牵强了
取值范围 [0.001, 10],如果是 1 的话,就代表光线不需要弯曲,玻璃的折射率通常是 1.5。
d
渐隐指数,dissolve。取值范围 [0, 1],0 表示完全透明,1 表示完全不透明。渐隐指数对所有的光照模型都有效。
Tr
transparent,透明度,与 d 正好相反, Tr = 1 - d
Tf
格式Tf r g b
,针对不同光单独定义的透明指数,比如 Tf 0 1 0
,代表可以透过所有绿光,但是红、蓝则完全不能透过。
illum
光照模型,illumination,表示该材质适用哪种光照模型,取值范围[0, 10],11 种光照模型分别是:
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
Ka
ambient,环境反射, default is (0.2,0.2,0.2)
Kd
diffuse,漫反射,default is (0.8,0.8,0.8)
Ks
specular,镜面反射, default is (1.0,1.0,1.0)
Ke
emissive,放射光(自发光),例如图形中的光源,Ke 0.0000 0.0000 0.0000
则为不发光材质
map_Ka
环境光纹理文件
map_Kd
漫反射纹理文件
map_bump
法线纹理文件
bump
同 map_bump
其他
这个文件中的 map_Ka、map_Kd、map_bump、bump 中的路径明显是错的,使用的都是绝对路径,这种在下载后渲染一定是会出问题的,需要改为相对路径。
参考
Material template library - wikipedia
MTL material format - paulbourke
模型加载、简单着色与纹理映射