基础类
组成粒子系统的基础类的参考资料,包含以下参考主题:
粒子系统类 - 说明基础 ParticleSystem 类属性的技术参考。
粒子发射器类 - 级联的发射器列表组件 - 粒子发射器的属性参考。
粒子模块类 - 所有模块继承级联类的属性参考。所有模块将包含本类中的属性。
TypeData 模块
添加发射器至 ParticleSystem 时,其默认类型为 sprite 发射器。TypeData 模块也可用于创建其他类型的发射器。这些模块提供发射其他类型粒子的特定功能,如光束、网格体和条带。
光束类型数据光束类型数据(Beam Type Data)模块指示发射器应该输出光束——连接粒子在原点和目标点之间形成一道光束。Beam 类型数据模块使发射器产生光束 - 连接粒子形成源点(如发射器)和目标点(如一个粒子或 Actor)之间的一个流。
GPUSprites类型数据
GPUSprite类型数据模块支持在GPU上模拟粒子,能高效地模拟和渲染数十万颗粒子。
GPUSprite 类型数据模块支持在GPU上模拟粒子。传统CPU系统允许在一帧中出现数千颗粒子。GPU模拟能高效地模拟和渲染数十万颗粒子。
GPU粒子不支持传统CPU粒子的所有功能,但它们拥有一些独特功能,可使效率得到极大提高。粒子发射仍在CPU上发生,以确定生成粒子的位置、时间和数量。CPU也可使用传统CPU粒子方法对大小和速度等初始属性进行指定。
将"GPU Sprites"类型数据模块添加至发射器,在级联中创造出GPU粒子sprite。在级联中创作其他特效后,在发射器上添加并编辑模块,对模拟参数进行修改。模拟随属性变化实时更新。
属性
受支持的属性
GPU粒子支持以下属性:
初始位置(Initial Location):
初始速度(Initial Velocity):
加速度(Acceleration):
阻力(Drag):
生命周期(Lifetime):
颜色(Color):
大小(Size):
旋转(Rotation)
自转速率(RotationRate):
子图像索引(SubImageIndex):
重要概念
在场景中使用GPU粒子时,对下列关键概念的理解至关重要。
运动
粒子运动以牛顿动态力学为基准。在每个时间步长中,粒子位置和速度基于其当前位置、当前速度、恒加速度和阻力进行整合。
GPU粒子虽然在细节上和传统CPU粒子不同,但其仍然支持轨道运动。从概念上而言,粒子移动犹如sprite围绕粒子实际位置(一个变量将使此位置发生偏移)进行轨道运动。可利用轨道向粒子添加额外的细节运动。
矢量场
除效率之外,GPU粒子最有趣的特性是向量场。向量场是一个由影响粒子运动的向量组成的统一网格。向量场作为Actor放置在场景中(整体向量场),可以像任何其他Actor一样进行平移、旋转和缩放。它们是动态的,可以在任何时候移动。场也可以放置在级联中(局部向量场),限制其对与其相关联的发射器的影响。当粒子进入向量场的边界时,粒子的运动将受到向量场的影响,当粒子离开边界时,向量场的影响将消失。
默认情况下,向量场会对其中的粒子施力。向量场还有一个"紧密度"参数。此参数控制粒子如何直接跟随场中的向量。当紧密度设置为1时,粒子直接从场中读取其速度,从而准确地跟随场。
静态向量场是向量网格永不改变的场。这些场可以从Maya导出并作为体积纹理导入。静态场资源占用低,可以用来向粒子添加有趣的运动,特别是通过对场本身的运动设置动画。
此外,还可以从二维图像重新构建向量场。在这种情况下,可以导入一个非常类似于法线贴图的图像,通过挤压它或将其围绕体积旋转来重新构建体积纹理。在此重新构建的基础上,可以添加一个静态向量场,引入一些噪点和随机性。此外,可以通过在图谱纹理中存储单独的帧来对2D图像设置动画。这样做让您可以离线执行流体模拟,并以极低的成本实时重新构建运动。
性能
GPU粒子的CPU开销主要视粒子的生成而定。粒子以传统CPU粒子的相同方式在CPU上生成,所以性能特征十分相似。
粒子的GPU开销主要视粒子的数量而定。少数功能在现有开销外增加了GPU粒子的额外开销。大部分GPU开销来自排序和渲染。排序为可选项,建议只在粒子发射器必需时启用。渲染通常视填充率而定。缩小粒子大小、减少粒子材质上的指令数量、减少粒子总量均能降低开销。粒子极小时,渲染主要视顶点开销而定。在此情况下,减少粒子数量是降低开销的唯一方法。
模拟开销将随与发射器重叠的矢量场的数量而变化。因此,减少重叠的矢量场数量有助于降低模拟开销。
移动设备GPU sprite
移动设备现已支持GPU粒子和矢量场!然而,此功能需要移动设备支持带MRT的32位浮点渲染目标,所以其只能在以下移动设备上使用。
将以下类型数据添加到粒子后,即可让粒子使用此功能。
GPU Sprites 类型数据
Global Vector Fields 类型数据
此外还需要将一个 矢量域 添加到粒子系统或放置在关卡中。
移动设备GPU sprite的限制
在移动设备上使用GPU sprite时,需要牢记以下限制。
矢量域交互: 和PC上的矢量域一样,移动设备GPU spirte同时最多只能受4个矢量域所影响。分为1个本地矢量域和最多3个放置在场景中的矢量域。
GPU粒子碰撞: 移动GPU sprite 不 支持任意碰撞选项(如与场景或网格体距离场碰撞),因为移动设备并不支持。
网格体类型
数据网格体类型数据模块决定了发射器应使用静态网格体实例而不是Sprite粒子。这对于弹片或残骸之类的效果十分有用。Mesh (网格体)类型数据模块指的是发射器使用的是StaticMesh(静态网格体)实例而不是平面粒子。 这对于碎片或是弹片的特效来说,是非常好用的。
网格体类型数据有以下属性:
条带类型数据
条带类型数据模块决定了发射器应当输出轨迹——连接粒子以形成条带。
Ribbon 类型数据模块意味着发射器将产生尾迹 - 连接粒子形成条带。粒子按其生成顺序连接。因此,粒子初始速度模式越不稳定,条带便越无序。
Ribbon 类型数据模块具备以下属性: