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的时候刚好覆盖一半的范围

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

相关推荐
焄塰1 小时前
Ansible 管理变量和事实
学习·centos·ansible
oe10192 小时前
读From GPT-2 to gpt-oss: Analyzing the Architectural Advances(续)
笔记·gpt·学习
Include everything5 小时前
Rust学习笔记(三)|所有权机制 Ownership
笔记·学习·rust
杜子不疼.6 小时前
《Python学习之文件操作:从入门到精通》
数据库·python·学习
★YUI★6 小时前
学习游戏制作记录(玩家掉落系统,删除物品功能和独特物品)8.17
java·学习·游戏·unity·c#
livemetee7 小时前
Flink2.0学习笔记:Flink服务器搭建与flink作业提交
大数据·笔记·学习·flink
INS_KF7 小时前
【C++知识杂记2】free和delete区别
c++·笔记·学习
Easocen8 小时前
Mybatis学习笔记(五)
笔记·学习·mybatis
丑小鸭是白天鹅10 小时前
嵌入式C语言学习笔记之枚举、联合体
c语言·笔记·学习
楼田莉子11 小时前
C++算法题目分享:二叉搜索树相关的习题
数据结构·c++·学习·算法·leetcode·面试