UE4 材质学习笔记07(叶子摇晃着色器/雨水潮湿着色器/材质函数/雨滴着色器)

一.叶子摇晃着色器

现实世界中叶子的晃动十分复杂,这次我们将实现每个叶子都动起来,来接近现实世界的效果

先让它整体动起来,可以用time节点,然后用sin节点限制移动的范围

接下来就是找到一个方法,把这条树枝上的单个叶子分离开来,这样我就可以让单个叶子以不同的幅度摆动 ,我要做的是画一个看起来像这样的蒙版遮罩,你不需要为这个蒙版准备一个高分辨率的纹理,只要你能把单个叶子指定为属于红色组、绿色组或蓝色组就行

然后将三个时间值乘以我们的蒙版,根据我们对叶子的分组,会得到三个不同的值,然后加到UV上,每个叶子会根据所属的组来摆动。

最后要做的时用动画控制叶子的法线 ,这样看起来就不只是来回移动了,它们实际上是在轻微摇摆了,它让叶子感觉像是三维的

事实上,着色器应用到树木上以后效果还不错

二.雨水潮湿着色器/材质函数

怎么让表面看起来是潮湿的呢,吸收水分的多孔表面 颜色会变深。表面的基础颜色越深 饱和度越高,所以首先Desaturation增加饱和度。然后再将颜色变暗,所以我们得到一个比开始时颜色更暗、更饱和的表面。

当水在材质表面汇聚时,实际上会更平滑,镜面反射更少,接下来模拟这个效果

首先放入一个const2节点,表示潮湿墙面的粗糙度和高光度,水是非常光滑的,粗糙度设置为0.07,大多数表面的高光度为0.5,但是水的反射率比大多数表面要低一些,设置为0.3.然后可以根据潮湿度来进行插值。

现在的效果看起来已经很不错了

现在 创建了一个有湿度控制的材质,假设我要把所有这些节点都添加到每一个材质上,将是个巨大的工作量,所以就要用到材质函,把所有这些节点放进一个单独的函数里。

输入和输出在材质中的显示顺序可以在细节面板的Sort Priority修改

然后只要把材质函数拖拽到材质中就可以使用了,Porousness是用于定义多孔渗水,0代表表面完全不透水,1代表完全透水,表面更暗,更饱和

三.雨滴着色器

首先是雨滴纹理,RG通道将用作法线,B通道是时间偏移,这个遮罩蒙版会让每一滴水滴在稍不同的时间出现,Alpha通道也是蒙版,小黑点代表我想要的静态水滴,白色代表动态水滴

那么首先获取到法线。

接下来我要做的就是提取蒙版,首先从蒙版中获取动态和静态水滴,然后将它们相加并且与法线相乘。

现在这个材质上面都是雨滴,事实上雨滴只会出现在顶部。只需要获取顶点法线的z值,另外可以增加一个常量控制是否下雨。如果想增强水滴的大小,可以将获取法线的*2-1换成*4-2。最后可以修改一下粗糙度,让这些看起来更像水滴。可以在最后的蒙版的结果加上一个power,然后设置成0.1次幂,最后加上OneMinus节点。

最终效果:

相关推荐
2303_Alpha1 天前
SpringBoot
笔记·学习
萘柰奈1 天前
Unity学习----【进阶】TextMeshPro学习(三)--进阶知识点(TMP基础设置,材质球相关,两个辅助工具类)
学习·unity
沐矢羽1 天前
Tomcat PUT方法任意写文件漏洞学习
学习·tomcat
好奇龙猫1 天前
日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(10):91-100语法+考え方13
学习
向阳花开_miemie1 天前
Android音频学习(十八)——混音流程
学习·音视频
工大一只猿1 天前
51单片机学习
嵌入式硬件·学习·51单片机
c0d1ng1 天前
量子计算学习(第十四周周报)
学习·量子计算
Hello_Embed1 天前
STM32HAL 快速入门(二十):UART 中断改进 —— 环形缓冲区解决数据丢失
笔记·stm32·单片机·学习·嵌入式软件
咸甜适中1 天前
rust语言 (1.88) 学习笔记:客户端和服务器端同在一个项目中
笔记·学习·rust
Magnetic_h2 天前
【iOS】设计模式复习
笔记·学习·ios·设计模式·objective-c·cocoa