UE4 材质学习笔记03(翻书(Flipbook)动画/环境混合)

一.FlipBook Animation

如果你想让游戏以每秒30帧的速度运行,所有内容都必须在33毫秒内渲染出来,

如果你想让游戏以每秒60帧的速度运行的话,必须在16毫秒内。

所以当一个效果需要很多细节的时候,往往会离线创建它,然后将这个效果的每一帧放到一张纹理上,之后通过shader回放每一帧

例如下面就是一个爆炸效果的每一帧

材质编辑器里的FlipBook节点可以帮助我们播放每一帧,我们只需要连接时间节点以及行列数以及原来的UV,这个节点就可以给出我们合适的UV坐标来进行贴图采样。当我们将时间节点直接连接Animation phase的时候,默认每秒播放30帧,如果想要更改每秒播放的帧数,可以将时间节点乘上一个常数

但是接下来我们要不依靠FlipBook节点,自己来实现这个效果,这有利于我们了解FlipBook节点里面发生了什么,或者帮助我们改变效果或者做一些不同的东西。

要自己实现这个效果,首先就是缩小纹理,这个是使用乘法,这样就成功显示了第一帧的内容

接着要随时间增加变换UV坐标更换显示的图片。Floor函数可以将值向下取整。但是这样只有对角线上的图片

所以我们现在想让它按照每一行来播放,播放完一行就跳转到下一行。所以分别设置行数和列数,每当增加了六列以后行数就会加1,然后仍然将帧率设置成24

最终效果:

二.环境混合

在过去通常要给不同环境下的岩石都做一套纹理,然后就有了一堆不同的岩石资产,但是现在我们可以做的是我们可以创建一套岩石资产,然后根据岩石环境的不同来替换材质。

混合材质的方法就是使用lerp节点,Lerp节点会根据输入的Alpha(默认是0.5)对两张贴图的颜色进行混合,混合公式是lerp(A,B,t)=A+(B−A)×t

但是事实上苔藓应该只覆盖在岩石的顶部,因此我们引入世界空间的顶大法线,因为虚幻引擎是z轴朝上,所以获取到法线的z分量,通过这个分量去决定插值的比例,就可以让顶点法线向上的部分被苔藓覆盖,同时还要将法线的z值限制到0-1。

但是接下俩我们想要在岩石和苔藓之间有明显的分界线 ,首先可以在mask后面加一个power节点,这个可以进行幂运算,base值越大,二者分割线越明显,然后可以加上一个值控制苔藓的范围,加1的时候刚好覆盖一半的范围

但是这样的边缘线太生硬了,所以改为使用岩石自身的法线,使用法线的时候要将法线从切线空间转换到世界空间,这样岩石和苔藓相容的很好,当我们想要将岩石更换到其它环境的时候,只需要更换苔藓的贴图为其它环境的贴图就可以

相关推荐
Z21-X24 分钟前
云原生运维学习笔记:容器技术的演进、底层原理与 Docker 全生命周期管理
运维·笔记·学习·云原生
Rabitebla8 小时前
【Linux 底层原理】进程(十):进程等待详解---从僵尸进程到 wait、waitpid 与 status
linux·c++·笔记·学习·visual studio
无心水13 小时前
24、系统架构师论文写作专题 核心考点与学习笔记
笔记·学习·系统架构·架构师·安全架构·软考架构师·软考系统架构设计师
蒸蒸yyyyzwd13 小时前
邓明 Agent 系统面试-意图识别学习笔记
笔记·学习
La Pulga18 小时前
【FreeRTOS源码学习笔记】空闲任务与阻塞延时
笔记·mcu·学习·嵌入式·freertos·实时操作系统
蒸蒸yyyyzwd18 小时前
秋招学习笔记 day106
笔记·学习
小李不想当小白20 小时前
WDG看门狗(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
lisw051 天前
作为人类代理的大语言模型及其角色分类!
人工智能·学习·语言模型
Z21-X1 天前
云原生运维实战笔记:企业网站综合上云部署与云运维服务全景解析
运维·笔记·学习·云原生
坤坤子吖1 天前
Linux网络编程:UDP进阶,从字典服务器到简单聊天室
linux·服务器·网络·c++·笔记·学习