[Unity] 【转载】创作绚丽的粒子星系

查看:2017 |回复:6 | 2019-11-22 17:36:05

您需要 登录 才可以下载或查看,没有账号?注册

x
本文将由来自加拿大的游戏开发者Mirza Beig,分享在不使用插件和脚本的情况下,创作绚丽的粒子星系效果。通过本文的学习,你将进一步了解Unity的粒子系统的使用。

b9f87479-8ee1-4558-97d8-8403530c6950_640.jpeg




我们将制作绚丽的粒子星系步骤拆分为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之间随机取值,从而加入细微的随机旋转角度。



我们将核心光亮,耀斑和闪烁的粒子系统结合后,我们将得到下图的效果。



然后,将其加入星系系统,就得到了下图非常精美的效果。



小结






Part 7:基础银河系盘

这部分是一个简单平坦的粒子系统,它将作为银河系盘的基础。我们复制具有相似设置的核心光亮粒子系统。




将Start Size改为固定值8,将Start Color改为透明度较高的深蓝色。




将Emission模块的Rate over Time改为2。




将Render Mode改为Mesh,Mesh部分设为Quad。Sorting Fudge设为-32, Render Alignment设为Local。该类型渲染对齐(Render Alignment)表示粒子会朝Transform的方向淡化。




本示例我们想要制作一个平面银河系盘,所以我们还要设置Transform的Rotation,我们将Transform组件的Rotation X值设为90。




Part 8:蓝色烟雾银河系盘

我们将添加一个带有烟雾精灵图集的动态银河系盘。




首先复制第7部分粒子系统。我们将Material改为Alpha烟雾散开精灵图集动画,并将Sorting Fudge改为8。


现在设置的材质使用了Alpha混合补帧着色器,它能够在当前帧和下一帧之间平滑地交叉淡化。使用该着色器是因为该系统粒子的存在时间会比精灵图集的帧更长,我们不希望每次在系统为粒子选择新帧时出现跳帧现象。


为了让该着色器正常工作,需要传入额外数据,我们可以勾选Custom Vertex Streams,并添加UV2流和AnimBlend流。




我们将Start Lifetime改为15,使Start Size在5~8之间随机取值,勾选3D Start Rotation,从而设置该选项下的Z值在0~360之间随机取值,然后将Start Color改为透明度较高的白色。


勾选3D Start Rotation是因为当启用Shape模块后,我们需要指明仅需要在本地Z轴随机选择旋转角度,否则随机的2D旋转角会导致每条轴都随机变化。




因为我们还未设置好该粒子系统,使其按照8×8、64帧精灵图集处理纹理,所以会得到以下画面。




启用Texture Sheet Animation模块,并将Tiles的X和Y值分别设为8。我们对Frame over Time曲线稍加修改,使其从0.05开始并调整曲线形状,如下图所示。




将Tiles设为8×8会立即得到以下结果。我们得到的烟雾银河系盘中,烟雾太过密集,无法很好地和之前的粒子系统进行融合。




我们将Emission模块的Rate over Time将为0.5。




启用Shape模块,并将Scale的XYZ值改为0.25、0.25和0.05。该粒子系统由基础银河系盘复制得来,绕着X轴旋转了90度,这样会使其沿着本地XY空间,即世界空间XZ发射和扩散粒子,并在本地Z空间小范围分布。




现在对Color over Lifetime模块和Size over Lifetime模块进行调整。我们让颜色从纯白色浅入,然后淡出为淡蓝色。Size部分调整为均匀向上的曲线。




最后在Rotation over Lifetime模块中,将Angular Velocity改为在-10~5之间随机取值,这样会对俯视角银河系盘设定顺时针运动的随机旋转角。




Part 9:橙色烟雾银河系盘

这是通过复制得来前一部分粒子系统的变体,只不过它时橙色的。




首先修改Material,设为附加动画混合烟雾的精灵图集。Sorting Fudge设为-4,使该粒子系统处于其它烟雾银河系盘之上的图层。




在Main模块中,将Start Lifetime降低为10,使Start Size在8~12之间随机取值。将Start Color设为Random between Two Colors,并将二个颜色设为透明度不同的白色。




修改Color的渐变端点,使其在较亮的棕黄色和较暗的橘红色之间变化。




将Angular Velocity的随机值调整为-5~10之间。我们要让粒子按逆时针旋转,和蓝色烟雾银河系盘方向相反。




最后,将Texture Sheet Animation模块的Frame over Time曲线改为直线。




Part 10:垂直耀斑

在这一部分,我们将创建一个全新的粒子系统,其效果类似“类星体光束”。




我们将Render Mode设为Mesh,Mesh设为Quad。我们将使用Ultimate VFX中的模糊闪光精灵材质。为了让网格面向本地Transform方向,我们将Render Alignment设为Local。




然后得到下图所示的结果。如果你不使用Ultimate VFX的话,该图像可作为选取纹理时的参考。






在Main模块中,我们勾选Prewarm,将Start Lifetime设为2,Start Speed设为0。我们希望这些粒子沿着本地Y轴垂直拉伸,因此勾选3D Start Size,并将XYZ设为0.5、10和1,然后将Start Color设为部分透明的橙色。




我们将得到下图的效果。




至此,我们已接近到最后的成品了,但现在粒子太多,扩散范围太大,所以我们需要将Emission模块的Rate over Time设为2,禁用Shape模块。




于是,我们得到了下图所示基础的光晕/类星体光束形状。




此时,因为旧粒子被替换时没有经过平滑的过渡,耀斑可能会偶尔闪烁,我们可以通过设置粒子浅入和淡出时的颜色来解决这个问题,按下图设置Color over Lifetime模块即可。




Part 11:垂直耀斑闪烁

我们可以尝试让闪烁效果以五倍速度呈现。虽然第10部分移除了部分闪烁效果,但我们仍想在光束上应用特殊类型的可控闪烁效果,从而得到风格化电影效果。




我们复制上部分系统,然后进行修改。


在Main模块上,将Start Lifetime设为在0.02~0.05之间随机取值。勾选3D Start Size,让X值在0.1~0.4之间取值,Y值在5~10之间取值。最后我们将Start Color的透明度调到最大。




在Emission模块,将Rate over Time设为在1~50之间随机取值。




加入耀斑后,得到下图的效果。




Part 12:垂直耀斑旋转余烬

这一部分,我们将制作绕着星系中类星体光束旋转的残存粒子。




首先,我们新建一个粒子系统,将Material设为附加点精灵,这与星系螺旋粒子一样。




我们勾选Prewarm,Start Lifetime设为在5~10之间随机取值。Start Speed设为0.01,这样设置能实现细微的随机扩散效果。Start Size设为在0.05和0.125之间随机取值,Start Color设为橙褐色。




将Emission模块的Rate over Time设为5。




我们需要一个点状的发射源,所以将Shape模块的Shape设为Sphere,Radius设为0.01,并将Radius Thickness设为0。




现在对Velocity over Lifetime模块进行配置。Linear速度的Y值设为在-0.25~0.25之间随机取值,Orbital速度的Y值设为在1~2之间随机取值,最后将Radial速度设为0.05。




现在我们得到了旋转粒子的光束形状,下面我们只需要使粒子有动态的大小和不透明度即可。




我们将Color over Lifetime的透明度设为浅入,保留,再淡出。我们对Size over Lifetime模块进行设置,使粒子快速放大,然后再缓慢减小。




Part 13:具有轨迹的垂直光晕余烬和尾迹

这一部分将在余烬进行旋转时,加入一些流线型尾迹。




首先复制上部分粒子系统。我们在Main模块将Start Lifetime的第二个随机值改为8。




将Emission模块的Rate over Time改为1。




将Shape模块的Radius改为0.1。




将Velocity over Lifetime模块的Radial速度改为0.1。




将Renderer模块的Trail Material设为Ultimate VFX的haze2尾迹材质。该材质之前在大型外部星系螺旋中使用。




现在我们需要让尾迹开始渲染。勾选Trails模块,将Minimum Vertex Distance设为0,Width over Trail设为0.5,对Color over Trail进行设置,使其在整个尾迹长度逐渐淡化为完全透明。




加入尾迹后,我们会得到下图的效果。




Part 14:闪烁

现在星系部分已经完成,我们将添加一些额外的效果,使整体效果更华丽,首先我们加入闪烁效果。




首先,我们新建一个粒子系统,将Renderer模块的Material设为Ultimate VFX的附加闪光精灵。




下面是该精灵的样子。




在Main模块,勾选Prewarm。设置Start Lifetime在0.1~0.2之间随机取值。将Start Speed设为0。勾选Enable 3D Start Size,将X和Y值设为在0.05~0.25之间随机取值,这将导致粒子会随机地挤压和拉伸,就像奇特的闪烁星星一样。最后将Start Color设为在蓝色和橙红色之间随机选取。




将Emission模块的Rate over Time设为5。




现在处理Shape模块。将Shape属性设为Sphere,Radius设为2。我们希望将粒子发射器形状为薄盘状,但又不完全是平面,所以将Scale的Y值设为0.1。




下图是发射器的样子。请无视粒子的数量,为了展示生成区域,增大了粒子数量。




启用Size over Lifetime模块,并按下图设置Size的曲线。这样粒子会快速浅入再缓慢淡出。




Part 15:电磁爆射

星系会有随机的电磁爆射效果,效果很炫酷,它也是星系效果的最后一部分。




这是一个完全基于尾迹的效果,首先新建一个粒子系统。我们将Renderer模块的Render Mode设为None。将Trail Material指定为Ultimate VFX的附加固体发光轨迹材质。




为了在制作时预览该效果,现在启用并配置Trail模块。


我们将Minimum Vertex Distance设为0,Width over Trail调整为曲线,使其快速放大再缓慢缩小。这样会使尾迹头部变成柔和的液滴形状。




接下来处理Main模块。我们勾选Prewarm,将Start Lifetime设为在0.1~ 0.25之间随机取值。Start Speed在2~5之间随机取值。Start Size在0.01~0.05之间随机取值。将Start Color设为在蓝色和橙色之间随机选取。




我们希望电磁爆射是罕见的自发产生,所以将Rate over Time设为在0.4~0.8之间随机取值。




该形状就像薄饼,实际发射区域的中心有中空部分,此处应没有粒子生成。我们将Shape模块的Shape类型设为Sphere。Radius设为2.5,Radius Thickness设为0.8。




我们可以使用Noise模块来创建一些混乱的移动效果,将尾迹渲染出电磁爆射的感觉。我们将Strength设为在5~15之间随机取值,将Frequency设为2,Scroll Speed设为10。




此时,电磁爆射尾迹可能显得太长。我们可以使用Limit Velocity over Lifetime模块来减缓渲染尾迹的粒子。我们将Speed设为在0.2~0.8之间随机取值,Dampen设为0.5。




Part 16:镜头光晕(电磁爆射子系统)

这一部分是电磁爆射粒子系统的后续部分。我们首先创建一个新的粒子系统。




我们需要小型耀斑粒子配合电磁爆射效果,可以使用Sub Emitters模块来实现。点击粒子系统部分右侧圆圈旁边的+按钮,新粒子系统会作为当前系统的子部分创建,对其重命名。


下图中,我们将该粒子系统命名为“Lens Flare”。然后将Inherit模式设为Color。这样会将所有子系统的基本着色设为父粒子的颜色。






在新的子发射器粒子系统中,我们将Renderer模块的Material属性设为更柔和的附加点精灵。




接下来处理Main模块。这次不需要在新系统勾选Prewarm。可以保留Looping的勾选状态,因为粒子发射过程由父系统控制,禁用该选项不会产生任何效果。


我们将Start Lifetime设为在0.05~0.1之间随机取值。将Start Size设为在5~15之间随机取值。将Start Color设为在不同透明度的白色之间随机选取。




我们希望每次电磁爆射只会发射一个耀斑,所以将Emission模块的Rate over Time设为0,点击+图标,添加新的Bursts部分。将Count值设为1。




最后,设置Color over Lifetime,使其快速浅入再缓慢淡出透明度。对Size over Lifetime的曲线进行设置,使粒子在生命周期中快速增大。




Part 17:组合所有效果

所有效果都已经完成,现在可以将各部分组合起来,添加到新的父粒子系统下,并禁用父粒子系统的所有模块。你可以将其用于播放整个效果,并同时缩放各部分。






如果希望缩放整个效果,可以使用父粒子系统对象,只要选取所有粒子系统,并将Main模块下的Scaling Mode设为Hierarchy即可。




大功告成,一个由粒子系统组成的绚丽的银河星系效果便呈现在我们眼前。




小结

最后,我们希望你喜欢这篇教程,并从中学习和掌握Unity Shuriken粒子系统的新知识。


评分

参与人数 3元素币 +16 活跃度 +27 展开 理由
qq_123_FcN + 1 + 1 学到了
源支始 + 15 + 16 【点赞】这很有大网气质!
毒游小行家 + 10 这个很漂亮

查看全部评分

2019-11-22 17:36:05  
 赞 赞 0

使用道具 登录

6个回答,把该问题分享到群,邀请大神一起回答。
2#
超级棒!
回复 收起回复
2019-11-23 17:43:26   回复
 赞 赞 0

使用道具 登录

3#
回复 收起回复
2020-1-20 15:23:32   回复
 赞 赞 0

使用道具 登录

4#
Xffect Editor Pro 4.4.1特效插件专业版Xffect Editor Pro 4.4.1特效插件专业版Xffect Editor Pro 4.4.1特效插件专业版
回复 收起回复
2020-1-29 09:07:09   回复
 赞 赞 0

使用道具 登录

5#
每天一早上元素,挖矿撩妹两不误!
回复 收起回复
2020-5-8 09:23:03   回复
 赞 赞 0

使用道具 登录

6#
资源哪里好,肯定元素找
回复 收起回复
2020-7-16 21:55:01   回复
 赞 赞 0

使用道具 登录

7#
感谢楼主分享~
回复 收起回复
2021-2-5 08:25:36   回复
 赞 赞 0

使用道具 登录

CG 游戏行业专业问题

手机游戏引擎手游引擎Unity3D技术
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表