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

最终效果:

相关推荐
z23456d6 小时前
第三十九天学习心得
学习
水巷石子7 小时前
学习langChain4j的第二天,体验springBoot中的starter
java·spring boot·学习·spring·langchain4j
程序员梅雨7 小时前
微服务学习最终篇: Elasticsearch
学习·elasticsearch·微服务
clorinda7 小时前
PyTorch 手写数字识别学习笔记
pytorch·笔记·学习
m4Rk_8 小时前
【论文阅读】Agent 记忆机制(63):SAMem——把经验记忆细化为带长期价值的状态—Thought
论文阅读·人工智能·学习·开源·github
kyrie_sakura8 小时前
MySQL数据库学习笔记1 -- 基础概念,sql语句
数据库·学习·mysql
吴声子夜歌8 小时前
Linux命令——学习Shell(三)
linux·chrome·学习
小猪佩奇TONY9 小时前
Linux 内核学习(18) --- linux dma_buf 机制
linux·运维·学习
叶子野格9 小时前
《Verilog学习:数字系统设计基础》
学习·fpga开发
边境悍匪9 小时前
蜗牛学苑 Java 智能体学习 Day36|阿里云 OSS 文件上传、Spring 事务、全局异常思维导图复盘
java·学习·阿里云