购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.4 常用粒子类型:GPU Sprites

在游戏特效制作中,有时需要短时间内表现大量粒子,如图3-91所示,例如表现流体、粉尘、碎片等,这个时候需要数以万计的粒子来表现效果。如果使用普通的粒子类型来制作的话,CPU和显卡配置差的计算机就特别卡。然而虚幻引擎提供了一种使用显卡GPU来渲染大量粒子的计算方式,大大降低了CPU的负担。

图3-91

使用GPU粒子可以制作大量的浮游粉尘或沙尘暴,这里通过案例来对GPU类型粒子发射器进行简单的说明。

如图3-92所示,在引擎主面板的资源浏览器Content根目录Particles文件夹中创建一个粒子系统,将其命名为GPU-DATA。文件名中间不能有空格,不过可以用减号或者下画线的形式将名称联系到一起,方便查找。

图3-92

鼠标双击新建的GPU-DATA粒子系统,打开粒子系统编辑面板,在粒子发射器模块区空白处单击鼠标右键,找到Type Data命令,选择New GPU Sprites把发射器定义为GPU类型,如图3-93所示。

图3-93

现在的粒子发射器是以显卡GPU为计算核心来进行粒子处理的,计算机显卡功能越是强大,处理同屏显示的粒子数量就会越多,支持数以万计的粒子流体。GPU粒子的特点是,只处理当前屏幕中看得到的粒子,当前屏幕之外的不处理。

如图3-94所示,将发射器转换为GPU粒子类型后,粒子预览窗口左下会出现一条警告提示,提醒需要设置GPU粒子的边界。如图3-95所示,单击上方工具栏Bounds按钮右边的下拉三角形菜单,选择Set Fixed Bounds就给GPU粒子建立了一个边界框。

图3-94

图3-95

将前面AnimTrail Data小节中制作的材质在这里给GPU类型粒子来使用。选中粒子发射器Required基础属性模块,在属性窗口Material材质栏选中上一节给AnimTrail Data类型粒子制作的圆形渐变纹理材质,预览窗口中粒子体已经变为圆形了,如图3-96所示。

图3-96

如图3-97所示,把Required模块属性中Screen Alignment屏幕对齐方式类型设置为PSA Velocity速度对齐方式。这种类型是使粒子朝向始终随着速度方向的变化进行变化。

图3-97

随后改变粒子体的大小,选中粒子发射器Start Size基础尺寸模块,在Start Size属性中,将粒子的最大尺寸Max数值分别设置为1、5、1,最小尺寸Min数值分别设置为1、1、1,如图3-98所示。

X轴和Z轴的最大尺寸与最小尺寸数值固定为1,Y轴最大与最小数值设置为5和1,Y轴数值用来控制粒子体的长度。

图3-98

选中粒子发射器Spawn粒子生成速率模块,修改粒子数量,由于GPU类型支持大量粒子,Rate属性中也可以将数值设置的大一些。如图3-99所示,将Constant数值设置为500,发射器每秒生成500个粒子。

图3-99

如图3-100所示,选中Lifetime粒子的生存时间模块,在属性窗口中把粒子生存时间的最小值与最大值分别设置为1与2(以秒为单位)。

图3-100

粒子从发射器发射出来后,单独粒子体的生命时长在1秒与2秒之间,粒子体消亡的时间最短不会少于1秒,最长不会超过2秒。数值区间可以依需求自行设定。

选中Start Velocity基础速度模块,改变粒子的发射方向与速度,使粒子体呈放射状发射。

属性窗口中,X轴与Y轴的最大、最小速度数值分别设置为100与-100,Z轴最大速度Max的数值设置为10,最小速度Min的数值设置为0,给粒子流10个单位的区间厚度,如图3-101所示。

图3-101

接着来给粒子上色。选中Color Over Life粒子生命颜色模块,把输入数据类型设置为固定常量类型。打开Constant下拉属性栏,R、G、B三个颜色通道的数值分别设置为0、5、20,如图3-102所示。

图3-102

如图3-103所示,现在粒子体表现的是带有光晕的高亮蓝色。设置完粒子发射器的这些默认模块,还需要创建新的模块改变粒子动态造型。在粒子发射器模块区空白处单击鼠标右键,如图3-104所示,找到Attraction命令中Point Gravity引力点模块并加入到发射器中。

图3-103

图3-104

单击Point Gravity模块,如图3-105所示,在属性窗口中将Position位置属性的Z轴数值设置为100,将这个引力点放置在世界坐标轴上方100个单位的位置。Radius影响范围数值设置为10000,覆盖范围尽量大。Strength引力强度属性的数据输入类型设置为常量曲线类型。

图3-105

如图3-106所示,单击Points后面的“+”(加号)按钮两次,创建两个控制节点。在0号节点中将In Val数值设置为0,将这个控制节点设置在粒子体出生的时间,Out Val数值设置为0,意思是粒子体在生成的时间,不受引力点影响。在1号节点中,将In Val数值设置为1,把控制节点设置在粒子消亡的时间段,Out Val数值设置为200。我们需要粒子在生命开始至消亡的时间内,受到的引力逐渐加强,在粒子消亡的时候受到的引力强度最大,使粒子体划出弧线。

图3-106

效果如图3-107所示,所有的粒子体生成以后,会往Z轴(向上的方向)开始运动并呈弧线形向引力点中心聚拢。如果把粒子的生存时间设置长些的话,可以看到粒子以磁极方向在运动。

图3-107

接下来制作一个简单的GPU粒子流,让粒子像水一样从管道(发射器)中喷射出来,落在地板上弹射后继续流淌直至粒子生命消亡,如图3-108所示。

图3-108

还是在虚幻引擎主面板的资源浏览窗口Content根目录Particles文件夹中建立一个Particle System,并将它命名为GPUstream,如图3-109所示。

图3-109

双击GPUstream粒子系统打开粒子编辑窗口,在粒子发射器模块区域空白处单击鼠标右键,选择Type Data→New GPU Sprites,将发射器定义为GPU类型。

单击粒子工具栏Bounds按钮右侧的小三角,选择Set Fixed Bounds。(这两步操作在前面案例中有图示。)

如图3-110所示,选中粒子发射器Required基础属性模块,设置屏幕对齐方式为PSA Velocity速度对齐。

图3-110

我们给这个粒子发射器新建一个材质球。在引擎主面板Content根目录Materials文件夹中新建一个材质球,将这个材质球命名为Particles,双击材质球进入材质编辑窗口。

如图3-111所示,在材质基础属性中,混合模式选择Additive高亮叠加类型,光照模式设置为Unlit无光模式,勾选Two Sided双面显示。

如图3-112所示,在材质编辑窗口中添加常量表达式并赋值为1,添加一个粒子颜色表达式,将常量表达式与粒子颜色表达式的RGB通道进行乘法运算,乘法结果连接材质Emissive Color自发光通道。

图3-111

图3-112

粒子颜色表达式的Alpha通道与Radial Gradient Exponential圆形渐变表达式进行乘法运算,结果连接到材质Opacity透明通道。

添加一个常量表达式并赋值100,将这个表达式连接圆形渐变表达式的Density节点,这个节点的数值代表将这个圆形渐变的边缘强化100倍,使圆形边缘不再有羽化渐变效果,预览中可以看到硬边圆形效果。将这个材质球添加到GPUstream粒子系统默认发射器Required模块属性窗口的Material栏中,作为这个粒子的纹理材质。

如图3-113所示,选中Spawn粒子生成模块,在属性窗口中将Rate的数值设置为2000(这个数量根据自己计算机配置好坏决定,计算机配置强大的可以加大数值,配置不是太好的酌情减少)。

图3-113

打开Lifetime粒子生存时间模块,将粒子生命的最小时间与最大时间分别设置为1和3,粒子的生命长度控制在1~3秒,如图3-114所示。

图3-114

接下来调整粒子的Start Size模块,如图3-115所示,在属性窗口中将最大尺寸Max的数值分别设置为1、5、1,最小尺寸Min的数值全部设置为1,X轴与Z轴固定粒子的大小,Y轴的数值用来控制粒子拉伸的长度。

图3-115

案例Start Velocity初始速度模块属性中,设置了最大速度Y轴的数值为100,最小速度的Y轴数值是0,使粒子向Y轴以0~100个速度单位发射,如图3-116所示。

图3-116

再来调整Color Over Life粒子生命颜色模块。如图3-117所示,颜色属性中,颜色的数据输入类型设置为Vector Constant Curve常量曲线类型,来对粒子生命初始与生命消亡的颜色做渐变变化。鼠标左键单击Point属性栏右边的“垃圾桶”按钮,清除默认参数,然后单击“+”(加号)按钮两次,建立两个控制节点。

0号节点,设置In Val数值为0,控制节点设置在粒子生命开始位置。Out Val设置R、G、B的数值分别为1、20、100,使粒子体出生时为高亮蓝色;1号节点In Val的数值设置为1,将控制节点设置在粒子生命消亡位置。Out Val属性的R、G、B数值分别设置为100、20、1,粒子消亡时颜色从高亮蓝色变为高亮桔色。

图3-117

如图3-118所示,预览窗口中粒子流颜色呈蓝色向红色渐变过渡。接下来需要让粒子发射器的发射口径变大些,在粒子发射器模块区域空白处单击鼠标右键,如图3-119所示,在模块菜单中选择Location命令中的Sphere球形发射范围。

如图3-120所示,选中Sphere球形发射范围模块,打开Start Radius初始范围属性栏,Constant数值设置为10,使发射器范围的直径为10个单位。

图3-118

图3-119

图3-120

现在粒子发射器的发射口径变大呈管道状。发射器形态确定了,再来设置粒子流的重力表现。在发射器模块区空白处单击鼠标右键,找到Acceleration命令,选择Const Acceleration常量加速度模块并加入到发射器中,如图3-121所示。

图3-121

在加速度模块属性窗口中,调整Z轴数值为-1000,一般标准重力的数值为-980,如图3-122所示的数值取了整数。

图3-122

调整数值后,可以在粒子预览窗口中看见粒子受到重力的影响开始下坠了,如图3-123所示。

回到引擎主面板,把GPUstream粒子系统从资源浏览器中拖到场景窗口来观察。粒子在场景中流动,但是在经过地板的时候,还没有像案例中那样反弹流淌。

图3-123

我们还缺少粒子体与周围物体的互动,现在粒子体与其他物体相互都不影响。如果需要粒子与周围的物体互动,还需要给粒子发射器增加一个碰撞检测模块。

打开GPUstream粒子系统编辑窗口,在模块区域空白位置单击鼠标右键,如图3-124所示,在弹出来的模块菜单中找到Collision命令,给发射器添加Collision(Scene Depth)碰撞模块,使粒子体能与周围物体互动。

图3-124

如图3-125所示,在碰撞模块属性中,粒子反弹数值类型设置了限制数据类型,这种类型可以调整最大值与最小值。Resilience属性Max与Min数值代表粒子与物体发生碰撞,反弹高度的衰减。如果将数值设置为0.25,粒子与物体发生碰撞后,反弹的高度只有之前的1/4,再次反弹又只有前一次反弹高度的1/4,循环计算直到高度为0。如果数值为1,粒子反弹高度不计算衰减。

图3-125

案例中,使用限制数据类型来设置粒子反弹的最大值与最小值,目的是让粒子进行反弹计算时,可以在设定数值中随机取值,形成变化。在Resilience Scale Over Life属性的Response碰撞类型中可以选择三种碰撞行为,分别是Bounce反弹、Stop停止运动、Kill粒子消亡。案例中选择的是反弹效果。如果有需要可以自行选择其他碰撞行为类型。

这里介绍个小技巧,如图3-126所示,资源管理器中现在看到的粒子系统图标是一片黑,这是因为还没有任何截图作为单独粒子系统的图标,现在来给这些粒子系统图标添加上图案。

打开相应任意粒子系统编辑器面板,在粒子预览窗口中调整好粒子的方位,单击上方工具栏中的 按钮,对当前粒子预览窗口截图作为这个粒子系统的图标。

给粒子系统制作图标以后,在资源浏览器中可以直观地看到粒子系统的效果了,如图3-127所示。

图3-126

图3-127

如图3-128所示,看看我们这个GPU类型粒子流案例在场景中的状态,调节粒子发射器的位置或在场景中添加不同的物体可以达到不同的效果,读者可以自行尝试。

图3-128 dmmDuSIGK9QQ5ZNcJbscEwomTf5wvNi29T8GHX1gMaB5Jtw7yPcCwEdPi8L0+UJM

点击中间区域
呼出菜单
上一章
目录
下一章
×