粒子效果
有三竖列的粒子,都在绕某个轴进行旋转。根据下面的文本提示来看,应该是每堆粒子的旋转操作的赋予方式不同,分别是直接操作网格体朝向(Mesh Orientation),操作旋转的速度(Rotational Velocity),操作发起旋转的力(Rotational Force)。(理科生可能会比较好懂,其实就是分别操作位置,速度以及加速度,如果你脑中有公式的话,其实这三者做的是同一件事,。)
Niagara蓝图部分
蓝图中包含了三个发射器(对应三种模式),并配文做出相应的解释。左上角是操作Mesh朝向,右上角是旋转力,右下角是旋转速度。粗略看过去,可以看到很多解算器,力,速度的模块,让我们直接进入分析阶段。
效果实现分析
Mesh Orientation
Initialize Particle中,设置了多出来体现随机性——Color Mode,Mass Mode,Mesh Scale Mode。其中Color Mode中Color Channel Mode是对在四个通道上取随机值得模式进行选择,即每个通道是单独处理,还是和其他通道一起去做随机。
初始化朝向Initial Mesh Orientation
Update Mesh Orientation是以Deltatime(Engine)为间隔,旋转速率为1,单位旋转大小为(0.5,0.3,0.3)。但是在这种模式下,Rotational Drag是不会对最终的解算产生影响的,所以勾不勾选都没有影响。
Rotational Velocity/ Drag
旋转速度这个属性的赋予并不像方向那样直接。这里首先进行了根据质量计算大小和旋转惯性——Calculate Size and Rotational Inertia by Mass。此外,这个模块还会重写Mesh的size属性(如果已经初始化过的话,否则就相当于在此进行了初始化)。
定义旋转力(Mesh Rotation Force),并在第一帧施加(Apply Initial Forces,相当于在第一帧进行了一次解算)。
这是考虑了质量的情况下(即考虑了惯性作用),也可以直接给一个初旋转速度——Add Rotational Velocity Module。
此时,就需要额外的解算器——Solve Rotational Forces and Velocity。需要在有Solve Forces and Velocity模块在的情况下才能正常添加。
此外,可以应用获得的动能来做一些跟速度变化相关的效果(如速度过快时发光等等)。
Rotational Force
旋转力的赋予反而更加简单直观。
总结
到了本系列的最后一个粒子,反而没有那么多的花俏。相比于真正的物理解算软件,游戏引擎的解算还是达不到那么高的精度,但是其表现力还是值得肯定的。
其实就Niagara的本质来说,本系列文章的解读深度肯定是不够的,关于脚本模块,我们很少去进入其中分析其写法,更多的,还是基于已有的官方给定的功能模块进行分析和总结。这当然是不够的,但饭也要一口一口的吃,我始终认为,伟大的诞生在于对细节的重视,好高骛远并不是长期的学习方法。通过对Niagara官方示例内容的学习,我认为对于最浅的这层知识点,我已经基本没有疏漏了,同时对整体的框架也有了一定的把握。
我后面还会针对Niagara_Advance和NiagaraSimulationStage做解读和技术分析,其中也会注意增加更多更加底层的分析。希望在Niagara全部系列文章完结的时候,能够上至表层特效表现,下至底层技术原理,从里到外建立起自己的技术自信。