导读:潮湿效果.物体表面是如何变湿的?.物体表面吸水使颜色变深.潮湿的颜色会变得暗淡且饱和.实现.增加饱和度且变暗.潮湿的物体表面的特点.当水作用在材质表面,材质表面的specualr会略微变弱且粗糙度会大幅降低.对于积水的表面,我们设置它的roughness = 0.07, spec
潮湿程度为1的效果
潮湿程度为0的效果
加入多孔性
多孔性也就是吸水性,多孔性越高,颜色越暗
本节展示如何实现雨滴效果
为了实现表面水珠,我们需要一个雨滴纹理,它的RG通道表示雨滴法线;B通道表示时间偏移mask(使得雨滴在不同时间出现);alpha通道表示静止和动态的雨滴
雨滴法线
时间偏移
动静雨滴
黑点表示静止的雨滴,白色表示动态雨滴
因为在纹理图中normal的范围为[0,1],而归一化normal范围为[-1,1],因此我们需要进行一个转化
这里重点在于Frac(),因为G通道值大多各不相同,这样减去时间的增量并取小数部分限制在[0,1]即可实现如下的闪烁效果
只需将时间offset用于A通道即可实现动态雨滴效果
无normal
“Multiply” “subtract” 是因为这里想提取time offset的白色雨滴(大雨滴)
有Normal
注意,这里使用power()是因为我们只想要得到白色和灰色的效果并不想要灰色,但此时范围是[-1,1],因此需要控制一下范围
和雨滴效果相同,流淌雨滴纹理由法线贴图(RG)、mask(B)、time offset(A)组成
为了应对物体从局部空间变化到世界空间的状况,需要将纹理映射到世界空间,这样无论物体进行任何矩阵运算,雨滴的流淌总是正确的
使用世界空间的位置作为采样的纹理坐标,只需提取RB
这里的Multiply()是为了正确的比例,乘以的value越小,采样得到的图像越大;value越大,采样得到的图像越小
为什么还有负号呢?因为这样可以对采样方向取负
这里改变正负号是为了让物体的侧面和正面不再相同
采样两次纹理进行合并是很简单的,但只采样一次又该如何实现呢?
在这里采用世界空间的法线作为物体面的判断基准
它的rgb通道都是相同的,a通道没有使用
下图中,可以将白色部分视为雨滴,基于这个实现动画即可
雨滴在不同物体上的滑落速度是不一样的,因此我们还需要让这些雨滴的速度有所差异
雨滴法线
将雨滴效果控制在物体侧面
3.5用于控制正方向的白色范围,-1,5用于控制负方向的白色范围
本节将展示如何实现雨滴打到水面产生的波纹效果
用该纹理可以实现圆从无到有,从小到大,最后渐渐消散
alpha通道包含time offset
实现纹理动画都需要Time节点。很容易实现以下内容
控制波纹边缘的锐度(让波纹边缘不再是渐变色)
初步实现波纹
因为水波纹属于正弦函数,因此在这里我们使用一个sin,并让他在一个周期内产生五个波纹(因为UE5的sin函数默认周期为1)
UE5中的sin函数并不是标准的sin函数(一个周期为2Π),它的默认周期为1,因此我们需要将其改为6.283185
目前我们实现的效果是到最大然后消失,但我们希望的是放大淡出。目前的效果是因为能量是从0到1,而放大淡出的效果应该是从1到0
目前的效果只是在固定位置不同时间段产生波纹,但没有展现波纹的叠加效果
首先,我们需要对”1-x”进行修改,添加力的因素
总体思路是使用四个不同的涟漪效果——不同的时间,不同的涟漪强度,对采样结果进行叠加
* 求取四个不同的时间
* 求取四个不同的uv
* 求取四个不同的雨滴重量
* normal混合
初步映射
控制水坑大小
这是一个灰度图,通过做减法即可放大水坑,但这里采用一种更加灵活的方式——lerp
让上图可以看到水坑的纹理延申到了其他面,但正常来说应该只有上面才会出现水坑,因此需要想办法让水坑只出现在物体上面
水坑的涟漪不仅仅在水滴落下时会产生,当被风吹时也会产生。水滴落下的效果在之前已经实现了,对于风吹的涟漪我们采用UE5提供的纹理
Rustling Leaves Shader - UE4 Materials 101 - Episode 12 - YouTube
上一篇:刀光拖尾功能的改良
下一篇:【Oculus Interact