转载作品

创作绚丽的粒子星系

短发凉快儿 发表于   2019-11-19 13:23:00
4594
4
41


我们分享加拿大的游戏开发者Mirza Beig,在不使用插件和脚本的情况下,创作绚丽的粒子星系效果。



                                             Part 7:基础银河系盘

 

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

6d987206-9300-4838-9f6b-90707cc685f5_640[1].gif




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

c3c1fa6c-e4f4-4915-a40f-9504826f740c_image[1].png





 将Emission模块的Rate over Time改为2

fe386d09-3a0f-45f7-816b-4b7490eeb7af_image[1].png





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

592da978-48ee-4199-b45d-2c36d3897111_image[1].png





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




Part 8:蓝色烟雾银河系盘

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





首先复制第7部分粒子系统。我们将Material改为Alpha烟雾散开精灵图集动画,并将Sorting Fudge改为8。
现在设置的材质使用了Alpha混合补帧着色器,它能够在当前帧和下一帧之间平滑地交叉淡化。使用该着色器是因为该系统粒子的存在时间会比精灵图集的帧更长,我们不希望每次在系统为粒子选择新帧时出现跳帧现象。
为了让该着色器正常工作,需要传入额外数据,我们可以勾选Custom Vertex Streams,并添加UV2流和AnimBlend流。

0a7687e3-c51a-4587-ba02-bb18551e5b75_image[1].png





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

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

4087faf5-5ed1-445e-8c0f-22d76a14d8d0_image[1].png





因为我们还未设置好该粒子系统,使其按照8×8、64帧精灵图集处理纹理,所以会得到以下画面。de2005d1-7390-4d8a-92cf-c0f666948d54_image[1].png





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

731ac473-c619-4a50-8d7f-1e61b9f55c95_image[1].png





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

24ed91dd-53d8-4e23-904e-a1e009831fba_image[1].png





我们将Emission模块的Rate over Time将为0.5。8e7d82bc-118e-420d-9632-5060f2370c3a_image[1].png





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

f6f1f75e-4d0d-4190-a240-1467dca1b0e6_image[1].png




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

f366ed0c-17c8-4bbf-9c49-4095ddae782d_image[1].png





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

9764f9ca-1c56-44be-afb3-407b6958d7c8_image[1].png




                                                Part 9:橙色烟雾银河系盘

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

b5efc2b4-2cef-4c34-bc7c-1480b0666e75_640_2[1].gif



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

103d5782-6df3-4fb3-9927-85e47816aa98_image[1].png





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

c4290b77-ad9b-47d6-ba9e-2179159cbfbc_image[1].png





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

ff551364-493c-4d14-af38-7dd89950e112_image[1].png




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

d700cb44-0d98-456c-804b-8edf701d182d_image[1].png



                                                 Part 10:垂直耀斑


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

9a79e4c1-ddbc-4266-8aee-afc70d461322_image[1].png



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

2073f8f7-f080-4fdf-ad74-8f9e1608d0a5_image[1].png




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

edcf4bd1-573b-4b06-a6d8-e5c5c941fbe1_image[1].png




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


93dad72d-77c7-4a06-86fd-3a655ddb7e6e_image[1].png





 我们将得到下图的效果。


10c97154-4f1e-4b70-9c55-1d53269b9e25_image[1].png




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


db809d9a-209e-4e27-94ce-ae2dbae64a39_image[1].png



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

a7d550bb-5ef1-4bb9-954b-4aca1c9866b5_image[1].png




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


c8a0689e-81e5-4575-87d0-ce12a125753e_image[1].png



                                            Part 11:垂直耀斑闪烁


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

0b5bd6b5-f302-4cc1-92be-f4e70dad4aa1_640_3[1].gif




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

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

9bedb2ac-ba10-4cad-a6c0-779a1f55314e_image[1].png




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

d7753c59-8f32-4176-8ad6-7cf8cefdd9b6_image[1].png





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

fe8526d1-460d-4d36-969a-d20a6960851f_image[1].png




                                        Part 12:垂直耀斑旋转余烬


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

9e9e0255-10d1-4aac-86cb-c9e5cb824a60_640_4[1].gif



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

f1addf69-a801-48d2-ab9c-13b15dade2a7_image[1].png



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

0b1b54b4-f092-49e7-8f32-0425f22dbd15_image[1].png




将Emission模块的Rate over Time设为5。a95a5e8f-0d3b-471e-af2b-cb5e4ad92048_image[1].png



我们需要一个点状的发射源,所以将Shape模块的Shape设为Sphere,Radius设为0.01,并将Radius Thickness设为0。37c4d436-5b46-4798-92f8-39563849565c_image[1].png





现在对Velocity over Lifetime模块进行配置。Linear速度的Y值设为在-0.25~0.25之间随机取值,Orbital速度的Y值设为在1~2之间随机取值,最后将Radial速度设为0.05。afc515af-9f68-4df6-a225-addc25e582b1_image[1].png




现在我们得到了旋转粒子的光束形状,下面我们只需要使粒子有动态的大小和不透明度即可。f89caedb-b21a-4213-8ee6-6920b0c7299e_image[1].png




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

e32a8973-3a20-4690-aac3-146b639ac550_image[1].png



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


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

a67c2feb-249c-4396-a112-4ac2da90ca77_640_5[1].gif



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

20d218d1-9415-41dc-8b2a-199ccfdbaf03_image[1].png


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

45302a93-dbf5-429e-9f1d-5cf1b4811ec7_image[1].png


将Shape模块的Radius改为0.1。

c279ed35-3785-48b5-8682-fc47bfa679a4_image[1].png


将Velocity over Lifetime模块的Radial速度改为0.1。5728ff7c-d7d4-4454-8b18-7ce5a3277cef_image[1].png


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

6234c6b0-5980-4072-8309-54fddeaac0e5_image[1].png


现在我们需要让尾迹开始渲染。勾选Trails模块,将Minimum Vertex Distance设为0,Width over Trail设为0.5,对Color over Trail进行设

5a2b2804-bc7b-4ab4-a413-86f0fc2e2651_image[1].png



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

cb82c3b3-89a6-4c5d-a0f8-0020017d9f23_image[1].png





                                                              Part 14:闪烁


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

062b814b-2c13-48e9-89ff-6b4d2fda84cc_640_6[1].gif



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

6947c0db-e753-405f-92a2-cfcdc1f8aec6_image[1].png



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

cbe8215a-7c98-468e-88e4-5c9d01a730d4_image[1].png



将Emission模块的Rate over Time设为5cc64377f-83b8-449d-a680-610b36698079_image[1].png


现在处理Shape模块。将Shape属性设为Sphere,Radius设为2。我们希望将粒子发射器形状为薄盘状,但又不完全是平面,所以将Scale的Y值设为0.1。4dd40b7d-335f-41b4-883a-b75220de29f1_image[1].png



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

4d5582bb-d1db-48c3-a9b8-faed7f5c8d1c_image[1].png



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

a41a4439-8c49-4337-9978-0fafcc5e5a12_image[1].png



                                               Part 15:电磁爆射

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

b8d7bfc0-2470-4209-bc75-72e320b51f91_640_7[1].gif



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

5953f525-036b-4326-a97d-df10753d54db_image[1].png





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

65f6e0e0-760a-4bf2-ba7b-97fa25c0f1aa_image[1].png




我们希望电磁爆射是罕见的自发产生,所以将Rate over Time设为在0.4~0.8之间随机取值。85566b5d-4531-4243-9c7e-41a79d237b9b_image[1].png




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

63bbcc3f-1368-4d11-aeb7-02f1d3615e58_image[1].png





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





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

ad157bd2-6419-41f5-8194-3b61b2ff9897_image[1].png




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

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

39fd466f-6c8b-4a8a-9420-e54da7cfa76f_640_8[1].gif



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




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

9dcf71b8-2fbc-4735-9b01-1bdc02ef5804_image[1].png


61f38c4e-044f-4753-87d6-0ed6a7c738c2_image[1].png



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

765674e8-bb08-4e06-ad6c-f6a6247a55b8_image[1].png



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



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

eccabd75-574b-4eec-a88d-fb4b567961ea_image[1].png




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

f28e363a-80b5-41c8-8a15-00424590d6f6_image[1].png




 最后,设置Color over Lifetime,使其快速浅入再缓慢淡出透明度。对Size over Lifetime的曲线进行设置,使粒子在生命周期中快速增大。8352d546-6aef-4fbc-b6f8-fd08ba4bce04_image[1].png



                                                                  Part 17:组合所有效果


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

03f7b20b-c2e5-46e2-a5ed-cc087552526c_image[1].png

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

42873a21-2413-4605-8c16-ce9b6baad934_640_9[1].gif


小结
最后,我们希望你喜欢这篇教程,并从中学习和掌握Unity Shuriken粒子系统的新知识。更多Unity教程,尽在Unity官方中文论坛(UnityChina.cn)

标签:
确定
评论(4)
帅小奥
大佬,请问近期看机会吗,广州上市游戏公司
回复
1020天前
正义zzz
超屌~ 棒
回复
1399天前
爱吃炒饼
感谢分享 辛苦了
回复
1594天前
噢哟
辛苦啦,很棒
回复
1608天前
没有更多啦~
  • 咨询
    客服
  • 扫码加入QQ群 或搜索QQ群号: 797421367
  • 扫码关注公众号 或微信搜索: cokey游戏特效