正文
一、相关资料
参考 Bilibili up 虚幻自习室搬运的油管教程 —— Ben Cloward 虚幻 4 材质课合集
原视频出处: Rain Drops Shader - UE4 Materials 101 - Episode 14(访问该网址需XX上网)
获取贴图点击这里 -> 提取码:8888
二、效果
效果如图
三、材质部分
材质部分如下
四、贴图分析
下面我按照我自己理解的思路去尽量解释每一个步骤
我们观察这张贴图
这里 RG 通道储存了法线的信息
B 通道我们可以看出这是水滴较大的部分,并且不同大小水滴具有不同颜色的灰度信息,也就是说他们的颜色值的范围可能是 0 到 1 ,或者 0 到 0.6 ,0 到 0.4 等等
Alpha(透明通道)这里观察到大水滴、小水滴、物体表面具有三种颜色信息“白,黑,灰” 这样做的目的是为了过滤较大水滴、较小水滴,以及可以过滤出物体表面,是一个 Mask(遮罩,想象一下带着面具,露出你的眼睛,所以 mask 也有面具的意思)。
五、材质解析
好,分析完了贴图,下面我们看材质部分是怎样链接的—
我们看贴图的设置是这样的
看到压缩设置是默认的,没有以 Normal 格式进行压缩(原因看红色的注释),而且也勾上了伽马矫正 sRGB (为了适应真实世界的颜色,会对图片暗处的颜色倍增,比较笼统的解释,这部分可以在知乎看到更详细的讲解),此时法线在贴图上是以颜色空间 0 到 1 储存的,而法线是矢量,具有方向,法线空间的值是 -1 到 1 所以有了这一步 0~1 x 2 -1 变为-1~1
一样的理解为了增强效果,倍增了法线的范围
接下来我们制作大水滴的动画效果,仔细看我添加的注释
Blue 通道不断(重复,Frac 就做重复的工作了)减去一个时间增量
Tips:每一个步骤大家都可以连接到
BaseColor或者Normal观察效果,方便直观地理解
水从高处掉落在物体表面(不太平坦的表面),较大的水滴受重力影响,会有移动,这里我们过滤出大水滴,叠加上我们的动画效果来模拟这一部分
Alpha通道 x 2 - 1 后,变成这样
我们就得到了较大的水滴了,这里实在不理解的拿出纸笔,把 Alpha 通道里不同的值演算一遍就知道了,小于 0 的值都会变为黑色,举个栗子,-0.7 虽然被显示为黑色,但是他是具有值的,并不是 0 。
雨滴落在物体表面,有大有小,有动有静,让我们继续产生美感。
反转,power 之后是这个样子的,这样我们就得到了静止的小水滴
power 的作用是让灰色的值例如 0.2,趋近于 0。
我们并不想让小水滴动起来,所以使用 Add加上这个效果
go on——》
雨水落下只会掉落在物体的表面(当然就不考虑水坑飞溅,弹射水滴到物体的底下或者背面了,偷笑),这部分很简单,把垂直于顶点的分量 Zmask 出来就行了
因为要控制整体效果,所以使用叠加 Multiply
连接这部分
是这样的
连上后法线于我们想要的效果是反的,表面粗糙,雨滴光滑,1-x 节点就是反转的作用,然后给上我们的 power,增强一下效果,小于 1 的值会更粗糙,1 不变。
最后连上 Normal、Roughness, 观察一下
以后就可以运用这个效果了,可以封装成材质函数。
完。
六、封装为材质函数
我们输出的 Mask 是这样的
至于输出 Mask,我们以后做完整的下雨材质时,可以叠加其它下雨场景相关的效果。