特效入门-Niagara
首先考虑到特效有两个系统,一个是cascade,一个是Niagara。后者是虚幻搞出来替代前者的。所以说现阶段,基本上不必学习第一个了。
那么学习第二个,打算用一个教程来学习一下,做一个入门,然后以后的学习,就按照需求,需要啥学啥就可以了。
有几个不错的资源:
这里面提及到了很多特效相关的文章引用。
以后可以在需要某些效果的时候直接从这里找找。
还有下面这个,是关于Niagara系统的原理的讲解:
参考课程:
学习过程中,注意举一反三。学了一个效果,然后想想自己以前有啥想要做的效果和这个相关,然后动手试试。
快捷键
创建项目,然后创建关卡,整一个地形。六件套,这里没有放灯,同时多数人都习惯把加进去的这些组件xy给置零。
对于postprocess那个,都是把自动曝光给关了,也就是把下面俩改成1,然后把上边俩打开,调一下曝光补偿,让亮度合适。
导入这俩文件。准备把特效放在上边,他俩的材质:
这里加一个聚光灯。
然后加一个反射球,build一下灯光,这样反射球可以把聚光灯打散。
再导入贴图:
然后这个材质给到小盘子:
然后这四个ctrl + G打组。shift + G是取消打组,ctrl + shift + G是切换是否是组选模式。
有时候打组一直没反应,可能是当前切换到了非组选模式,没有任何反应。
最终的亮度参考。
然后导入画轴,需要
取消勾选这个,然后动画的选项也不要勾选。
然后再单独导入他的动画,这个默认就可。
Niagara
做之前,我们要检查一下碰撞,小盘子的那个必须要有碰撞。
然后搞一个小球的发射器,先做没有碰撞的。这里会做一个老粒子的,还会做一个新粒子的。
首先搞一个小球的材质:
先改一下左边:
然后老粒子:
进去之后随便点一下面板处,然后就可以把我们的材质赋给这个粒子了。
可以修改粒子生命周期。然后这里的速度是沿着特定轴的,不适用,我们可以换成一定范围角的速度:
先点击上边那个对号变成叉号,表示不用那个了,然后创建一个新的。
然后这里控制角度和速度。
给一个重力,
修改重力值。
然后创建新的,注意我们的文件结构,我们要在Niagara下面弄两个文件夹。
然后需要先创建一个emitter,才能放到场景中,
进去后改一下rate为20:
然后这里也加一个速度,带角的:
这里的速度本来不是设定范围的,我们需要点击右边的小三角,然后搜索下面即可:
这里重力没有修改,把阻力改成了1。
调完之后,我们不能把emitter直接拽到场景中,
必须创建一个system。
打开之后里面有一个空的,我们直接delete,然后添加刚刚创建的。
或者是直接再emitter那里创建system:
碰撞设置
这是老粒子的添加方式,
选择freeze表示发生碰撞后粒子就freeze。
设置一下这几个值,可以实现碰撞后弹起来的效果。
下面的是控制最多谈几次。
这里调的两个值的含义,第一组,damping factor,表示的是碰撞之后的速度会变小。变小的值是多少。damping本身的意思也就是阻尼,阻力。
如果我们只是单纯的设置这个值,同时下面设置成freeze,那么不会对结果有任何印象,因为freeze表示的是碰撞结束后的动作,这里默认是一次碰撞,那么碰一次之后就freeze,速度直接归为0。所以没有效果。
如果我们设置碰撞的次数为多次,那么就有用了,就会出现弹跳的现象。对于damping 设置的太大,会出现反向的行为,+8的速度直接变成负的某个速度。
然后Niagara就是在这里加一个,然后创建对应的system就得到碰撞的粒子了。
带颜色
对于老粒子:
对于新的:
对于粒子的大小,可以从下面调:
广告牌
就是普通情况下,粒子是随着我们视角转动的。而广告牌就是我们转动能够看到他的背面,也就是他不随着我们的视角转动。
这里直接从最开始无碰撞的复制得到一个,然后先把粒子数目改成1。size搞大一些。
然后加一个:
这个选Y表示把Y轴给拍扁。
然后把速度,加速度都给禁掉,把颜色换成一个恒定的颜色。
新的:
改数量,spawn rate,
把这个关了,然后scale color也可以关了,在initial里面设置color。
最后修改一下:
就可以变成广告牌了。
同时加一个这个,改一下:
在4.26版本的没有particle sprite facing了,
他被放在align 里面。
就可以y压扁,确定一个朝向了。
这个是竖直立着的广告牌,如果搞一个水平的,那么老粒子,直接把z给拍扁。对于一些法阵,经常用到这个广告牌。
Niagara的就是改一下face的朝向。
.
如果说粒子在场景中不动了,也就是不会一直发射动态刷新,可以打开然后把这个选项勾选上。
和这个勾是一样的效果。
mesh 发射器
导入一个box。从color复制一个改即可,然后:
点击黑色空白区,然后搞一个mesh data。
然后勾选这个,我们可以覆盖材质了,选择required,我们
点击这个类似回车的符号,就可以把材质情况,意思就是用他的默认材质,马赛克的。
然后这里可以修改一下大小,锁住xyz,表示yz都听x的,所以yz设置的值无效,都取x的值。
加一个旋转,这个是专门在发射mesh的时候给mesh加旋转的。这个表示的是初始的旋转。
还可以加一个控制的旋转,也就是旋转的时候加一个力。
对于Niagara:
这个render本来是sprite,就是发射的那些小球的渲染,我们把他给关了,然后添加一个mesh。然后把我们导入的mesh给赋上去,就可以发射mesh了。
如果我们想要改粒子的大小,改动这里没有用了,因为这里是sprite size,现在改成了发射mesh。
然后把下面这个给勾选上,调节的大小就是mesh的大小了。
然后我们还是之前的套路,点击右边三角,可以把这个改成一个范围的。
这里点击三角形,先弄了一个vector from float ,意思就是本来是用一个向量表示三个轴的缩放的,现在换成一个float来表示,那么自然就是三个轴具有相同的缩放倍数。
然后再来一uniform变成范围。
4.26操作的时候,需要先把mode改成random non-Uniform,然后再把向量改成float,就可以设置了。
首先初始的角度,应该在 spawn 发射里面修改,然后角度在orientation朝向里面,进去之后,orientation vector表示的是绕着哪个轴进行旋转,下面是旋转的角度,同样我们给他弄一个随机范围。这里的1表示的是旋转一周。
然后在空中的旋转就需要到update里面:
这里添加一个force,重点是这个force放的位置,他要和其他的东西直接保持合理的上下层级关系,否则效果就会出现错误。然后再弄一个范围即可。
有拖尾的粒子
从color复制进行修改。
这里首先一个列表示的一个发射器,我们点击最上边可以旋转这个emitter进行一个命名,然后右键空白区域,我们可以创建一个新的发射器,
然后给新发射器搞一个材质,这里选用的和刚才的一样的。
这里我们要实现拖尾效果,就是把这个粒子发射的位置改成上一个粒子。所以emitter初始的位置设置为tou。
这里是一个发射器,但是初始的发射位置是跟着之前的粒子ABCDEFG。。。走的,每发射一个,可能跟着A,可能跟着B,都有可能。
这也就意味着:如果我增大数目,非常大,那么发射的频率就会很快,那么基本上ABCDEFG。。都会后面跟着很多。没错就这么干:
然后再改一下生命周期,因为发射很多,最好比较短的周期:
然后我们想要修改一下粒子的大小,让他随着时间变化:
首先搞一个size by life,然后这个左边的0和1,表示的是刚出生和马上要结束生命的粒子,然后这里的大小值就类似一个缩放倍数,所以刚出生的时候是1,死的时候是0.
这样尾巴就变成细的了。
同时可以加一个颜色。
最后又补了这个,和alpha相关,alpha随着生命变化。
这里最后设置的是,0的时候,即刚出生的时候alpha是1,1的时候是0:
注意这里说的0,表示出生的时候,是in value的0,不是左上角的0和1,那个表示的只是2 array element的下标而已。
这里的input和output的逻辑就是函数对应加上插值。如果输入值是in val,那么对应out val,中间的部分就插值。
Niagara做法:
我们先打开这个,表示开启每一个粒子都有一个自己的id,
添加一个这玩意,表示追踪每一个粒子的位置,这个追踪位置必须开启id。
然后新建一个emitter来作为拖尾。上边这个是一个不会动的,一直闪的。我们从这个改就行了。这个注意命名,因为这个emitter,算是刚才那个的儿子,所以这里命名一般都会把爹的名字加上,然后补上后缀,很容易看出他俩的联系。
然后在system中,我们把做好的这个emitter给添加进去。
这个什么burst用不上,然后emitter state把他改成infinite,表示的是无限循环的。 同时下面的循环周期改成1.
然后需要加一个事件,
这里需要在system里面对emitter进行这样的操作,如果是单独打开emitter是找不到location event那个选项的。因为这个location event 最后选择的就是左边的他爹,如果单独打开肯定看不到他爹。
另外在system中对emitter进行的编辑并不会保存到emitter的文件中,也就是我在system对emitter加了东西,但是单独看emitter,是看不到system对这个做了修改的。
那么system中修改有什么意义呢?其实system中对emitter做的修改只是不会在文件上进行一个覆盖,但是在实际发挥功能的时候是overwrite的。
然后还需要加一个事件,
再修改一下这个发射的数量,现在就完成了从父亲中发射儿子的操作。核心就是添加一个事件。
然后我们需要对儿子的周期和颜色大小做一个调整。
这时候的大小只是一个initial 大小,不会变化,需要加一个update随着life变化。
这时候右边只是一个scale,我们需要的是一个随着生命变化的,那就是找三角形,然后输入curve
剩下保持默认就好了。
飘带粒子
直接从上边拖尾复制,老:
这里再required上方空白区,加一个ribbon,然后效果:
原因就是这个cascade系统,他不知道每一个粒子的id和位置,所以是整体来算飘带的一个连接,就出现了这种错误。
cascade想要实现这个,通常是只能有一个头,也就是只有一个父级,不能有多个父级。
这里创建了一个新的粒子,然后把速度关掉,数量改成10个,
这里使用的是自带的ribbon的材质,
这个自带材质需要在content那里的右下角勾选上边这两项才会显示出来。
然后还是同样的地方创建一个ribbon。
大致修改了上边几个地方,这时候拖动粒子就可以看到飘带效果了,所以说这个cascade只能够做这种一条的飘带in a particle system。多个会乱掉。
这个拖动才会有效果!!!!!!
Niagara就可以很简单的做到,因为他是单独每一个粒子都有一个id的,所以从拖尾复制一个,修改一下拖尾:
关掉sprite renderer,然后打开ribbon renderer。就可以了。
滑到底部,有一些bindings,意思就是ribbon粒子的属性是受哪些影响的,比如第一个position 就根据particle position来确定,有一些大小,也就是width,这里就由RibbonWidth来控制,所以调节之前的particle size是不起作用的。
这里需要加上一个关于ribbon的模块,里面就有width的调节了,同时还有其他的一些属性。
再搞一个curve。
beam
这个和ribbon类似,加一个beam,然后搞一个材质,用ribbon用的那个就行了,因为他俩都是长条的东西,同时把速度给关掉,spawn也关掉。
然后右键-beam-source,表示从哪里开始:
同样右键beam -target,
这个speed需要大一些:
把color over life 换成 initial color。
然后interpolation point表示的意思是:发射分为多少个段:
如果写1,那就一下子发射出来,如果是2,那就先发射一半,然后再来一半。
Niagara实现,新建一个:
关于beam主要是这俩玩意起作用,下面的保持默认即可,第一个里面beam end就是终点位置,就是target。关于beam的大小,默认给了一个曲线:
点击右上角的两个类似回车的符号,就变成默认的情况了,就是一个简单的固定值了,然后这个效果是一下子就出来的。如果想要上边那种好几次搞出来完整的,可以利用uv,动态处理材质等等的。
decal
这个就是一个材质,不分cascade和Niagara。