最新的Unity实时特效工具Visual Effect Graph虽然也可以制作特效,但它和粒子系统的主要区别在于运行的硬件。粒子系统在CPU模拟生成,而Visual Effect Graph将大量计算移动到运行在GPU的计算着色器。

本文将使用Ultimate VFX的资源讲解创作过程,完整星系效果在Ultimate VFX中以预制件的形式提供。

由于篇幅较长,我把教程分为4个页面,每个页面4个部分。相关链接

本教程中每个部分都是新的粒子系统,在学习使用过程应该以相同的名称为该部分命名。

Part 1:主螺旋

我们首先制作星系的内部效果,如下图所示。

打开Renderer模块,将Material设为点精灵。如果使用Ultimate VFX的话,可以直接搜索“Sprite point add”并添加即可。
「U3D」创作绚丽的粒子星系

接下来,我们将处理Main模块,请按照下图进行设置。

勾选Prewarm,我们所有的粒子系统都需要启用该功能,因为我们不想等待效果以蜗牛般缓慢的速度进行模拟。

我们将Start Lifetime设为50,粒子系统将围绕自身创建螺旋形状,我们需要给粒子足够留存时间,因此挡螺旋动画完成时,粒子依旧存在,现有粒子绕着轴旋转时,逐渐生成更多粒子。

我们将Start Speed设为0.01,该数值有助于分散粒子,并赋予它们更自然和随机的形态。Start Size将在0.05~0.1之间随机取值,从而实现大小的变化。

Start Color设为橙色,Simulation Speed设为0.25。最后我们将Max Particles改为2000,粒子系统中将有1200个粒子。
「U3D」创作绚丽的粒子星系

目前我们得到了下图的效果。

现在,我们处理Emission模块和Shape模块。

我们将Rate over Time设为25, Shape设为Sphere,Radius设为0.01,并将Scale的Y值改为0,这样能使发射点成为小型点状区域。
「U3D」创作绚丽的粒子星系

我们对Orbital属性进行设置,点击该属性最右侧小箭头并在展开的选项中勾选Random Between Two Constants模式,将Y值设为1~1.125之间。Offset的X值设为0.025,并且设置粒子运动中的径向速度为0.05。
「U3D」创作绚丽的粒子星系

通过以上的设置,我们得到了下图类似螺旋星系的效果。

我们希望在粒子到达外部边缘时,限制粒子的大小和不透明度,因此启用Color over Lifetime模块和Size over Lifetime模块,请按下图进行设置。这样可以浅入粒子,保持原样,然后再淡出粒子。

我们打开Noise模块,将Strength改为0.0025,Frequency改为1,并将Scroll Speed设为0.5。这样设置可以平滑地偏移螺旋体的迭代,并为这些迭代设置随时间变化的动画。
「U3D」创作绚丽的粒子星系

下图是目前得到的效果,即该系统的完整版本。

Part 2:内部小型螺旋

在这一部分,我们将制作一个形状较小的副螺旋星系粒子系统,它需要使用许多和第1部分相同的设置。我们复制第1部分的粒子系统对象,然后开始制作下图效果。

首先设置Main模块。我们将Start Lifetime增加到100,Start Size改为在0.02~0.04之间,设置Start Color并使其在二种蓝色色调之间随机选取,Simulation Speed减少为0.2。
「U3D」创作绚丽的粒子星系

最后修改Emission模块和Velocity over Lifetime模块。我们将Rate over Time降为10,将Radial属性设为0.02。
「U3D」创作绚丽的粒子星系

Part 3:大型外部螺旋

第3部分的效果的范围更大,它基于此前的系统构建,将为整体星系效果带来规模感和不完美感。首先复制此前的系统,然后开始制作。

我们将Start Color的第一个颜色改为淡棕黄色,将Start Size的第二个值改为0.05,Simulation Speed改为0.1,Max Particle改为5000。
「U3D」创作绚丽的粒子星系

把Emission模块中的Rate over Time改为50。
「U3D」创作绚丽的粒子星系

现在我们得到了非常密集的效果。

在Velocity over Lifetime模块中,我们将Radial值改为0.2。这样会展开螺旋形状,使其覆盖更大范围。
「U3D」创作绚丽的粒子星系

Noise模块的Strength值改为0.025。
「U3D」创作绚丽的粒子星系

我们为该系统的部分粒子加入细微的尾迹效果。

启用Trails模块,按下图进行设置。Ratio和Lifetime设为0.005,Color over Lifetime的不透明度设为15,Width over Trail设为由0.6下降的曲线,Color over Trail设为从完全不透明到透明的线性渐变。
「U3D」创作绚丽的粒子星系

于是我们得到了效果一般且缺少材质的尾迹效果。

下一步指定尾迹材质。本文种使用的是Ultimate VFX中的haze2材质。
「U3D」创作绚丽的粒子星系

结合已经完成的粒子系统后,我们会得到下图的效果。

Part 4:核心光亮

核心光亮是一个简单的粒子系统,它代表了密集的星系核心效果。

我们对Material进行设置,使用附加混合效果的默认纹理。Ultimate VFX拥有相应的预设材质。

我们将Max Particle Size设为2,该值控制粒子渲染可以在视口上占用的最大空间。

Max Particle Size默认值0.5表示粒子无法大于渲染视口的一半大小,而且会在摄像机放大画面时缩小,从而保持设置状态。这样能够减少过度绘制,因为透明像素的渲染无法以不透明像素的剔除方式进行剔除。

本示例中,核心由少量粒子组成,它需要在摄像机放大画面时仍然覆盖屏幕的较大区域,因此我们将Max Particle Size设为2。
「U3D」创作绚丽的粒子星系

按照下图设置Main模块。我们勾选Prewarm,Start Lifetime设为4,Start Speed设为0,Start Size设为在2~5之间随机值,并将Start Color设为透明度较大的橙色。
「U3D」创作绚丽的粒子星系

我们将Emission模块的Rate over Time设为1,禁用Shape模块。我们希望发射粒子的区域设为非常小的点。
「U3D」创作绚丽的粒子星系

设置Color over Lifetime模块,使粒子能够浅入淡出。
「U3D」创作绚丽的粒子星系