找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2918|回复: 6

x-plane11 PBR 材质研究

[复制链接]
 楼主| 发表于 2021-11-20 22:02:05 | 显示全部楼层 |阅读模式
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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

点评

支持原创技术贴  发表于 2021-11-21 11:49

评分

参与人数 2威望 +1 金币 +50 支持 +2 收起 理由
耶稣泡观音 + 1 + 50 + 1
绿叶上的露珠gz + 1 支持原创技术贴

查看全部评分

发表于 2021-11-20 22:27:34 | 显示全部楼层
原创技术帖!支持!🙂
回复

使用道具 举报

发表于 2021-11-20 23:41:01 | 显示全部楼层
我之前尝试做的时候按手册那样做了光泽度信息的贴图,但是玻璃怎么也读不出镜面反射。后面好像是在模型文件里加了一行代码才解决,不知道你是怎么完成的,是就把光泽度信息做在法线贴图里就可以有镜面反射吗。
回复

使用道具 举报

 楼主| 发表于 2021-11-21 10:06:17 | 显示全部楼层
b797 发表于 2021-11-20 23:41
我之前尝试做的时候按手册那样做了光泽度信息的贴图,但是玻璃怎么也读不出镜面反射。后面好像是在模型文件 ...

多谢提醒,昨天忘记说了。镜面反射是光泽度贴图和金属度贴图共同作用的结果,光泽度贴图数值拉到1,让物体表现为最光滑,此是虽然是最光滑的,但是此时物体上的反射光仅为入射光强度的4%左右,这时物体看起来就像瓷器,如果要做到镜面反射的效果,则需要提高物体上反射光的强度,也就是增强金属度,将金属度贴图数值拉到1也就是白色,这时二者一结合就能够做出镜面反射的效果了。图中的玻璃就是将光泽度和金属度拉到最大的效果。
回复

使用道具 举报

发表于 2021-11-21 10:25:50 | 显示全部楼层
感谢分享!这同样对我一个初入机模开发的萌新很有帮助!
回复

使用道具 举报

发表于 2021-11-21 11:46:42 | 显示全部楼层
hth 发表于 2021-11-21 10:06
多谢提醒,昨天忘记说了。镜面反射是光泽度贴图和金属度贴图共同作用的结果,光泽度贴图数值拉到1,让物 ...

感谢分享,我之前似乎也是一知半解,你这样一说我好像终于懂了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表