xp11的模型支持五种类型的贴图,基本色贴图、夜间贴图、法线贴图、光泽度贴图、金属度贴图,本专栏主要围绕后面三者进行讨论,法线贴图、光泽度贴图、金属度贴图在xp11中统一被整合入法线贴图中,其中光泽度贴图和金属度贴图均为灰度图。 首先介绍的是光泽度贴图(glossiness map),光泽度贴图存储于原法线贴图的alpha通道中,其值为0(黑色)到1(白色),值越小,越白,能够反射的光线便越少,对应在模型上便是越粗糙,法线贴图的看起来就越透明;反之,值越大,越黑,能够反射的光线便越多,模型看起来便越光滑,法线贴图的透明度便越低。而粗糙度贴图(roughness map)的原理和光泽度贴图的原理完全相反,在粗糙度贴图中黑色即为最光滑、白色即为最粗糙,所以若使用粗糙度相关的PBR流程,在流程结束后反转粗糙度贴图,再将其加入到alpha通道即可,或者可以直接在substance painter中直接设定相应的导出格式,直接导出即可。图1便为我所制作的zggg的玻璃的法线贴图,图中可以看出因为玻璃的反射能力极强,所以在法线贴图中的表现便是不透明的,而玻璃之间的框架由于不具备没有玻璃那么强的反光能力,粗糙度很高,所以看起来就相当于全透明的。图2便为xp11实际渲染的效果。 当然仅靠光泽度贴图还无法完成图2的效果,下面要引出的便是金属度贴图(Metallic map)。在xp11中金属度贴图储存于法线贴图的bule通道中。于粗糙度贴图不同,在PBR材质中,金属度贴图决定了模型能够反射光线的总量,对于光泽的纯金属来说,其能够将反射光线以入射光线70%-100%强度反射出去,对于这类金属,其金属度也是极高的,既接近1(白色)。对于金属(导体)金属度就会较强;对于绝缘体,物体的金属度就较低,接近0(黑色)。粗糙度相同的导体和绝缘体,二者能反射光的部位是相同的,但前者能将该部位的入射光以70%-100%强度反射出去,后者只能反射入射光强度的4%左右。我认为金属度是决定模型在xp11中渲染质感非常关键的因素之一。通过我下面四张的对比图可以明显看出,在加金属度之前模型看起来都是十分塑料的,但有了金属度贴图,航站楼屋顶的金属材料质感充分表现了出来。 下面就来讲讲法线贴图,在图2到图6这几张图中可以明显看出,航站楼上均有明显的凸棱或者一道道金属板之间的凹坑,这些效果都是由法线贴图来实现的。既然上述两种贴图分别占据了法线贴图的bule通道和alpha通道,那么剩下的red通道和green通道便是用来存储物体的凹凸信息的。图中航站楼的法线信息是我利用高度图(height map)生成的,当要制作法线贴图时,可以先制作高度图,再将高度图转换为法线贴图。高度图也是一种灰度图,0(黑色)代表位置最低,1(白色)代表位置最高。制作好高度图后便可通过substance painter、substance designer、photoshop等3d软件将其转化为法线贴图。如图7我一般通过substance designer将高度图转化为我所需的ao图、法线贴图、曲率图。但在转化时需要注意,法线贴图有两种格式,一种是OpenGL格式,另一种是DirectX格式。这两种法线贴图的区别是他们的green通道是相反的,x-plane则使用的是第一种OpenGL格式的法线贴图。
写在最后,如果想要xplane将法线贴图、光泽度贴图、金属度贴图全部正常读取,需要在obj文件中添加下面3条指令。 TEXTURE_NORMAL t1_r6_n.png NORMAL_METALNESS GLOBAL_specular 1 或者直接在模型导出时勾选上normal metalness,如图8。
除此之外xp的法线贴图仅支持32位(24位RGB+8位alpha)PNG格式的贴图,不支持DDS格式,在png格式中alpha通道相当于图片透明度。本人通常习惯于在substance painter中完成xp材质制作,并制作了相应预设用于直接导出适用于xplane的贴图,如图9。如有需要可联系本人获取预设文件。
最后,本文仅为xplane的PBR流程入门教程。如有不足之处,敬请批评指正。如需进一步学习,请前往xplane的开发者网站、adobe官网进行深入学习。希望本文能对热爱模拟飞行地景开发的你们产生一点帮助。 参考资料
本文已同步到b站,欢迎各位前去三连 https://www.bilibili.com/read/cv14089857?spm_id_from=444.41.0.0
|