【转载】Unreal —Rain Drops Shader 材质解析

722 阅读4分钟

原文链接:Unreal —Rain Drops Shader 材质解析 | 樱桃小嘴拆拆怪

正文

一、相关资料

参考 Bilibili up 虚幻自习室搬运的油管教程 —— Ben Cloward 虚幻 4 材质课合集

原视频出处: Rain Drops Shader - UE4 Materials 101 - Episode 14(访问该网址需XX上网)

获取贴图点击这里 -> 提取码:8888

二、效果

效果如图

三、材质部分

材质部分如下

image.png

四、贴图分析

下面我按照我自己理解的思路去尽量解释每一个步骤

我们观察这张贴图

这里 RG 通道储存了法线的信息

B 通道我们可以看出这是水滴较大的部分,并且不同大小水滴具有不同颜色的灰度信息,也就是说他们的颜色值的范围可能是 01 ,或者 00.600.4 等等

Alpha(透明通道)这里观察到大水滴、小水滴、物体表面具有三种颜色信息“白,黑,灰” 这样做的目的是为了过滤较大水滴、较小水滴,以及可以过滤出物体表面,是一个 Mask(遮罩,想象一下带着面具,露出你的眼睛,所以 mask 也有面具的意思)。

五、材质解析

好,分析完了贴图,下面我们看材质部分是怎样链接的—

image.png

image.png

我们看贴图的设置是这样的

看到压缩设置是默认的,没有以 Normal 格式进行压缩(原因看红色的注释),而且也勾上了伽马矫正 sRGB (为了适应真实世界的颜色,会对图片暗处的颜色倍增,比较笼统的解释,这部分可以在知乎看到更详细的讲解),此时法线在贴图上是以颜色空间 0 到 1 储存的,而法线是矢量,具有方向,法线空间的值是 -1 到 1 所以有了这一步 0~1 x 2 -1 变为-1~1

一样的理解为了增强效果,倍增了法线的范围

接下来我们制作大水滴的动画效果,仔细看我添加的注释

Blue 通道不断(重复,Frac 就做重复的工作了)减去一个时间增量

Tips:每一个步骤大家都可以连接到 BaseColor 或者 Normal 观察效果,方便直观地理解

水从高处掉落在物体表面(不太平坦的表面),较大的水滴受重力影响,会有移动,这里我们过滤出大水滴,叠加上我们的动画效果来模拟这一部分

image.png

Alpha通道 x 2 - 1 后,变成这样

我们就得到了较大的水滴了,这里实在不理解的拿出纸笔,把 Alpha 通道里不同的值演算一遍就知道了,小于 0 的值都会变为黑色,举个栗子,-0.7 虽然被显示为黑色,但是他是具有值的,并不是 0 。

雨滴落在物体表面,有大有小,有动有静,让我们继续产生美感。

反转,power 之后是这个样子的,这样我们就得到了静止的小水滴

power 的作用是让灰色的值例如 0.2,趋近于 0。

我们并不想让小水滴动起来,所以使用 Add加上这个效果

image.png

go on——》

雨水落下只会掉落在物体的表面(当然就不考虑水坑飞溅,弹射水滴到物体的底下或者背面了,偷笑),这部分很简单,把垂直于顶点的分量 Zmask 出来就行了

因为要控制整体效果,所以使用叠加 Multiply

image.png

连接这部分

image.png

是这样的

image.png

连上后法线于我们想要的效果是反的,表面粗糙,雨滴光滑,1-x 节点就是反转的作用,然后给上我们的 power,增强一下效果,小于 1 的值会更粗糙,1 不变。

最后连上 NormalRoughness, 观察一下

image.png

以后就可以运用这个效果了,可以封装成材质函数。

完。

六、封装为材质函数

image.png

我们输出的 Mask 是这样的

至于输出 Mask,我们以后做完整的下雨材质时,可以叠加其它下雨场景相关的效果。