请选择 进入手机版 | 继续访问电脑版

查看: 453|回复: 0

[技术] 创作绚丽的粒子星系(2)

[复制链接]

1287

主题

2010

帖子

2万

贡献

管理员

Rank: 9Rank: 9Rank: 9

积分
27055
QQ
发表于 2019-1-9 04:00:00 | 显示全部楼层 |阅读模式
我们继续分享加拿大的游戏开发者Mirza Beig,在不使用插件和脚本的情况下,创作绚丽的粒子星系效果。

在创作绚丽的粒子星系(1)中,我们已经得了一个精美的螺旋星系。在这一篇中,我们制作银河星系银盘,制作闪烁的耀斑和旋转余烬,尾迹,最终实现绚丽而精美的银河星系,下面是最终实现的效果。



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

01.gif


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

02.png


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

03.png


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

04.png


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

05.png


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

06.gif


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

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

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

07.png


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

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

08.png


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

09.png


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

10.png


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

11.png


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

12.png


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

13.png


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

14.png


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

15.png


Part 9:橙色烟雾银河系盘
这是通过复制得来前一部分粒子系统的变体,只不过它时橙色的。

16.gif


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

17.png


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

18.png


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

19.png


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

20.png


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

21.png


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

22.gif


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

23.png


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

24.png

25.png


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

26.png


我们将得到下图的效果。

27.png


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

28.png


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

29.png


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

30.png


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

41.gif


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

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

42.png


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

43.png


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

44.png


Part 12:垂直耀斑旋转余烬
这一部分,我们将制作绕着星系中类星体光束旋转的残存粒子。

45.gif


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

46.png


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

47.png


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

48.png


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

49.png


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

50.png


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

51.png


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

52.png


Part 13:具有轨迹的垂直光晕余烬和尾迹
这一部分将在余烬进行旋转时,加入一些流线型尾迹。

53.gif


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

54.png


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

55.png


将Shape模块的Radius改为0.1。

56.png


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

57.png


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

58.png


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

59.png


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

60.png


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

61.gif


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

62.png


下面是该精灵的样子。

63.png


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

64.png


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

65.png


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

66.png


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

67.png


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

68.png


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

69.gif


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

70.png


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

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

71.png


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

72.png


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

  
74.png


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

75.png


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

76.png


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

77.png


Part 16:镜头光晕(电磁爆射子系统)
这一部分是电磁爆射粒子系统的后续部分。我们首先创建一个新的粒子系统。

78.gif


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

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

79.png

80.png


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

81.png


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

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

82.png


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

83.png


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

84.png


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

85.png
86.png


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

87.png


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



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