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节点。

最终效果:

相关推荐
xiaoyaolangwj4 分钟前
高翔【自动驾驶与机器人中的SLAM技术】学习笔记(十三)图优化SLAM的本质
学习·机器人·自动驾驶
静止了所有花开1 小时前
SpringMVC学习笔记(二)
笔记·学习
爱吃生蚝的于勒1 小时前
C语言内存函数
c语言·开发语言·数据结构·c++·学习·算法
L_cl3 小时前
Python学习从0到1 day26 第三阶段 Spark ④ 数据输出
学习
Mephisto.java3 小时前
【大数据学习 | HBASE】hbase的读数据流程与hbase读取数据
大数据·学习·hbase
红中马喽4 小时前
JS学习日记(webAPI—DOM)
开发语言·前端·javascript·笔记·vscode·学习
尘浮生6 小时前
Java项目实战II基于微信小程序的移动学习平台的设计与实现(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·学习·微信小程序·小程序
Young_202202026 小时前
学习笔记——KMP
笔记·学习
yaosheng_VALVE6 小时前
稀硫酸介质中 V 型球阀的材质选择与选型要点-耀圣
运维·spring cloud·自动化·intellij-idea·材质·1024程序员节
暖和_白开水6 小时前
材质(三)——材质参数集和材质函数
ue5·材质