Notifications
Article
创作绚丽的粒子星系(1)
Published 5 months ago
209
0
本文将由来自加拿大的游戏开发者Mirza Beig,分享在不使用插件和脚本的情况下,创作绚丽的粒子星系效果。通过本文的学习,你将进一步了解Unity的粒子系统的使用。
我们将制作绚丽的粒子星系步骤拆分为16个步骤。由于篇幅限制,本文将分享前6个步骤,通过本文的学习,我们会得到一个非常精美的螺旋星盘效果。
下图是最终完成后绚丽的粒子星系效果。

说明事项

本教程中每个部分都是新的粒子系统,在学习使用过程应该以相同的名称为该部分命名。
最新的Unity实时特效工具Visual Effect Graph虽然也可以制作特效,但它和粒子系统的主要区别在于运行的硬件。粒子系统在CPU模拟生成,而Visual Effect Graph将大量计算移动到运行在GPU的计算着色器。目前Visual Effect Graph和粒子系统将同时在Unity 2018.3中存在。
本文篇幅较长,Mirza不打算重新制作纹理和材质,所以使用自己开发的粒子资源库Ultimate VFX进行制作,该资源可以在Asset Store资源商店获取。你也可以使用自制纹理和材质,只要它们符合本文效果的要求即可。
本文将使用Ultimate VFX的资源讲解创作过程,完整星系效果在Ultimate VFX中以预制件的形式提供。
Ultimate VFX下载地址:
https://assetstore.unity.com/packages/vfx/particles/ultimate-vfx-26701

Part 1:主螺旋

我们首先制作星系的内部效果,如下图所示。
打开Renderer模块,将Material设为点精灵。如果使用Ultimate VFX的话,可以直接搜索“Sprite point add”并添加即可。
接下来,我们将处理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个粒子。
目前我们得到了下图的效果。
现在,我们处理Emission模块和Shape模块。
我们将Rate over Time设为25, Shape设为Sphere,Radius设为0.01,并将Scale的Y值改为0,这样能使发射点成为小型点状区域。
我们对Orbital属性进行设置,点击该属性最右侧小箭头并在展开的选项中勾选Random Between Two Constants模式,将Y值设为1~1.125之间。Offset的X值设为0.025,并且设置粒子运动中的径向速度为0.05。
通过以上的设置,我们得到了下图类似螺旋星系的效果。
我们希望在粒子到达外部边缘时,限制粒子的大小和不透明度,因此启用Color over Lifetime模块和Size over Lifetime模块,请按下图进行设置。这样可以浅入粒子,保持原样,然后再淡出粒子。
我们打开Noise模块,将Strength改为0.0025,Frequency改为1,并将Scroll Speed设为0.5。这样设置可以平滑地偏移螺旋体的迭代,并为这些迭代设置随时间变化的动画。
下图是目前得到的效果,即该系统的完整版本。

Part 2:内部小型螺旋

在这一部分,我们将制作一个形状较小的副螺旋星系粒子系统,它需要使用许多和第1部分相同的设置。我们复制第1部分的粒子系统对象,然后开始制作下图效果。
首先设置Main模块。我们将Start Lifetime增加到100,Start Size改为在0.02~0.04之间,设置Start Color并使其在二种蓝色色调之间随机选取,Simulation Speed减少为0.2。
最后修改Emission模块和Velocity over Lifetime模块。我们将Rate over Time降为10,将Radial属性设为0.02。

Part 3:大型外部螺旋

第3部分的效果的范围更大,它基于此前的系统构建,将为整体星系效果带来规模感和不完美感。首先复制此前的系统,然后开始制作。
我们将Start Color的第一个颜色改为淡棕黄色,将Start Size的第二个值改为0.05,Simulation Speed改为0.1,Max Particle改为5000。
把Emission模块中的Rate over Time改为50。
现在我们得到了非常密集的效果。
在Velocity over Lifetime模块中,我们将Radial值改为0.2。这样会展开螺旋形状,使其覆盖更大范围。
Noise模块的Strength值改为0.025。
我们为该系统的部分粒子加入细微的尾迹效果。
启用Trails模块,按下图进行设置。Ratio和Lifetime设为0.005,Color over Lifetime的不透明度设为15,Width over Trail设为由0.6下降的曲线,Color over Trail设为从完全不透明到透明的线性渐变。
于是我们得到了效果一般且缺少材质的尾迹效果。
下一步指定尾迹材质。本文种使用的是Ultimate VFX中的haze2材质。
结合已经完成的粒子系统后,我们会得到下图的效果。

Part 4:核心光亮

核心光亮是一个简单的粒子系统,它代表了密集的星系核心效果。
我们对Material进行设置,使用附加混合效果的默认纹理。Ultimate VFX拥有相应的预设材质。
我们将Max Particle Size设为2,该值控制粒子渲染可以在视口上占用的最大空间。
Max Particle Size默认值0.5表示粒子无法大于渲染视口的一半大小,而且会在摄像机放大画面时缩小,从而保持设置状态。这样能够减少过度绘制,因为透明像素的渲染无法以不透明像素的剔除方式进行剔除。
本示例中,核心由少量粒子组成,它需要在摄像机放大画面时仍然覆盖屏幕的较大区域,因此我们将Max Particle Size设为2。
按照下图设置Main模块。我们勾选Prewarm,Start Lifetime设为4,Start Speed设为0,Start Size设为在2~5之间随机值,并将Start Color设为透明度较大的橙色。
我们将Emission模块的Rate over Time设为1,禁用Shape模块。我们希望发射粒子的区域设为非常小的点。
设置Color over Lifetime模块,使粒子能够浅入淡出。

Part 5:核心耀斑

核心耀斑粒子系统是核心光亮部分上的附加密度层。复制核心光亮粒子系统并进行修改。
我们将Material改为Alpha混合镜头光晕材质,请参考下图使用的是UltimateVFX的预设。并将Sorting Fudge设为-8,该值决定该系统的粒子是否会在其它透明对象前渲染的可能性。
在Main模块中,我们将Start Size设为在1~2之间随机值,并将Start Color的不透明度改为原来的二倍。
修改Color over Lifetime,使粒子先浅入,保持显示一段时间,然后淡出。

Part 6:核心耀斑尖刺

通过在顶层添加闪烁效果,这个粒子系统将为我丰富核心耀斑的效果。复制上一部分系统,进行更改。
我们将Material改为Alpha混合闪光纹理,并将Sorting Fudge设为2。
我们将在Main模块种进行一些改动。将Start Lifetime设为3~5之间随机值,Start Size在2~4之间随机值,Start Rotation设为在-25~25之间随机值。
按下图设置Color over Lifetime模块和Size over Lifetime模块。粒子浅入后,我们希望它们能保留较长时间,再进行淡出,并且加速扩张过程。
我们可以修改Random over Lifetime模块,使Angular Velocity在-4~4之间随机取值,从而加入细微的随机旋转角度。
我们将核心光亮,耀斑和闪烁的粒子系统结合后,我们将得到下图的效果。
然后,将其加入星系系统,就得到了下图非常精美的效果。

小结

在下一篇中,我们将完善已经完成的螺旋星系,加入银盘特效,制作闪烁的耀斑和旋转余烬,尾迹,最终实现绚丽而精美的银河星系,尽请期待。

更多Unity教程,尽在Unity官方中文论坛(UnityChina.cn) !
Unity China
576
Comments