粒子系统
最近更新时间:2023-11-13
概述
粒子系统可以模拟并渲染许多称为粒子的小图像产生视觉效果。在粒子系统中,每一份粒子图元均具有:形状、大小、颜色、透明度、运动速度和运动方向、生命周期等属性。系统共同模拟每个粒子以产生完整效果。对于诸如火焰、烟雾等动态对象时,粒子系统非常有用。
粒子编辑器
Flexi引擎内置粒子编辑器。
新建粒子
在资源预览窗口中,右击空白处弹出菜单,点击单一粒子(Single Particle),即可创建一个粒子文件。
打开粒子编辑器
双击新建的粒子文件即可打开粒子编辑器。
编号 | 说明 |
---|---|
1 | 菜单栏 |
2 | 工具栏 |
3 | 预览窗口 |
4 | 属性面板 |
5 | 动画曲线控制面板 |
属性
粒子属性面板控制粒子的各种属性,得到所需的各种效果,其中最主要的是粒子属性和场景属性。
粒子属性
- 渲染(Renderer)
设置单个面片的渲染属性。
属性 | 描述 |
---|---|
贴图文件(Map File) | 每个粒子面片的基础纹理。 |
折射贴图(Refraction Map) | 折射效果贴图。 |
折射强度(Refraction Intensity) | 折射效果的强度。 |
显示类型(Display Type) | 显示类型,可根据实际用途进行选择。 |
软粒子深度偏置(Depth Bias) | 渲染粒子时的深度偏移系数。 |
广告牌模式(Billboard Mode) | 设置广告牌模式,分别为:默认垂直模式、Y轴旋转模式、叶片模式、未知。 |
旋转轴偏差(Axis Deviation) | 设置粒子旋转轴轴向随机系数。 |
粒子计算模式(Particle Calculation Mode) | 计算粒子效果的模式,分别为:自动模式、CPU模式、GPU模式、全局模式。 |
粒子颜色(Particle Color) | 为单个粒子添加一个颜色。 |
粒子亮度(Particle Brightness) | 粒子的亮度(自发光)。 |
随机颜色(Random Color) | 随机读取贴图上的颜色。 |
颜色动画(Color Animation) | 粒子在运动过程中随机颜色。 |
接受动态光照(Accept Dynamic Illumination) | 是否在粒子效果上接受动态光照。 |
光源类型(Light Type) | 简单类型、标准类型。 |
透光强度(Transmittance Intensity) | 粒子上的透光强度,数值越大,粒子上的高光越明显,数值越小,粒子上的高光越不明显。 |
- 序列帧(Texture Sheet Animation)
设置序列帧贴图的属性。
属性 | 描述 |
---|---|
序列帧数量(Sequence Frame Amount) | 贴图文件中序列帧的个数。 |
起始序列帧号(Start Sequence Frame Number) | 贴图文件中序列帧开始的帧索引。 |
序列帧行数(Sequence Frame Row Amount) | 贴图文件中序列帧的行数。 |
序列帧列数(Sequence Frame Column Amount) | 贴图文件中序列帧的列数。 |
序列帧循环(Frame Loop) | 是否开启锁定每秒30帧进行渲染。 |
- 运动(Motion)
设置粒子的移动属性。
属性 | 描述 |
---|---|
粒子速度(Particle Speed) | 粒子移动的速度。 |
粒子速度偏移(Particle Speed Offset) | 粒子速度的随机扰动。 |
随机方向(Random Direction) | 随机扰动的方向。 |
抖动强度(Particle Jitter Strength) | 粒子随机抖动的强度。 |
抖动速度(Particle Jitter Speed) | 粒子随机抖动的速度。 |
重力影响(Gravity Influence) | 重力对粒子的影响。 |
- 发射(Emission)
设置发射粒子的属性。
属性 | 描述 |
---|---|
粒子发射轴向(Particle Emission Axial) | 发射粒子的方向。 |
重复发射(Repeated Emission) | 是否重复发射。 |
一次发射数量(The Number Emitted At A Time) | 发射器一次发射粒子的数量。 |
发射间隔时间(Emission Interval Time) | 每次发射之间的间隔时间,只有在设置重复发射为真时才能使用。 |
发射间隔随机值(Emission Interval Variate) | 每次发射间隔的随机扰动。 |
保持绑定位置(Keep Binding Location) | 在特效编辑器中指定发射器是否一直保持绑定到模型的位置。 |
保持绑定方向(Keep Binding Direction) | 在特效编辑器中指定粒子是否一直保持发射的方向。 |
保持前次发射方向(Keep Previous Emission Direction) | 在特效编辑器中指定发射器是否一直保持发射出的粒子的方向。 |
缩放不影响速度(Scale Not Affect Speed) | 指定发射器是否一直保持发射出的粒子的速度不受缩放影响。 |
保持绑定发射器方向(Keep Binding Emitter Direction) | 特效编辑器中指定发射器是否一直保持发射的方向。 |
发射器形状(Emitter Shape) | 粒子发射器的发射形状。 |
发射角度(Emit Angle) | 指定发射器发射出的粒子的角度范围(只对发射器形状为Sphere和Cone的发射器有效)。 |
发射半径(Emit Radius) | 指定发射器发射出的粒子的半径范围(只对发射器形状为Sphere、Box、Circle的发射器有效)。 |
发射厚度(Emit Thickness) | 指定发射器发射出的粒子的厚度(只对发射器形状为Sphere、Cone、Circle的发射器有效)。 |
发射器缩放X(Emitter Scale X) | 指定发射器发射粒子的X方向的缩放。 |
发射器缩放Y(Emitter Scale Y) | 指定发射器发射粒子的Y方向的缩放。 |
发射器缩放Z(Emitter Scale Z) | 指定发射器发射粒子的Z方向的缩放。 |
发射器随机位置(Emit Rand Pos) | 发射器发射粒子的位置随机扰动。 |
包围盒大小X(Bounding Box Size X) | 设置粒子在场景中的显示范围X,超出包围盒的不再显示。 |
包围盒大小Y(Bounding Box Size Y) | 设置粒子在场景中的显示范围Y,超出包围盒的不再显示。 |
包围盒大小Z(Bounding Box Size Z) | 设置粒子在场景中的显示范围Z,超出包围盒的不再显示。 |
- 包围盒(Bounds)
自定义粒子包围盒的大小。
属性 | 说明 |
---|---|
使用固定包围盒(Use Fixed Relative Bounding Box) | 是否使用固定的相对边界框。 |
包围盒最小值X(Min Bounding Box X) | 最小点X坐标值。 |
包围盒最小值Y(Min Bounding Box Y) | 最小点Y坐标值。 |
包围盒最小值Z(Min Bounding Box Z) | 最小点Z坐标值。 |
包围盒最大值X(Max Bounding Box X) | 最大点X坐标值。 |
包围盒最大值Y(Max Bounding Box Y) | 最大点Y坐标值。 |
包围盒最大值Z(Max Bounding Box Z) | 最大点Z坐标值。 |
- 粒子系统(Particle System)
设置粒子系统的属性。
属性 | 描述 |
---|---|
向量场(Vector Field) | 向量场文件,该文件描述了一个有范围的力场,在此范围内的粒子将受到力场的影响(详细介绍可参考粒子与向量场)。 |
向量场强度 (Vector Field Strength) | 向量场强度,可设置数值为0.0-10.0。 |
播放速度(Play Speed) | 粒子运动的播放速度。 |
粒子数量(Particle Amount) | 一次粒子发射的数量。 |
生命周期(Lifetime) | 粒子的生命周期。 |
生命周期偏差(Lifetime Deviation) | 如果大于粒子持续时间,则这个值为粒子持续时间;如果生命周期和偏移之差小于拖尾时间,则拖尾时间为生命周期和偏移之差。 |
粒子持续时间(Particle Duration) | 粒子的存在时间,可以大于生命周期。 |
粒子大小(Particle Size) | 粒子的初始大小。 |
粒子大小偏移(Particle Size Offset) | 粒子大小的随机扰动,值越大,扰动越大。 |
长宽比例(Aspect Ratio) | 设置粒子面片的长宽比例,数值越大,面片会被拉长。 |
粒子角度偏差(Angle Deviation) | 设置粒子自身的角度偏移量。 |
粒子自转(Particle Rotation) | 设置粒子自转系数,该值为正数时粒子逆时针旋转,为负数时粒子顺时针旋转(注意:设置完成后,需在粒子自转曲线编辑面板中K一帧后粒子才会开始自转)。 |
粒子自转偏移(Particle Rotation Offset) | 设置粒子自身的旋转角度偏移量。 |
粒子自转方向随机系数(Particle Rotation Random Direction) | 设置粒子自转方向随机系数。 |
回收标志(Recycle Mark) | 开启之后粒子会朝发射器中心方向发射。 |
延迟卸载(Delay Unload) | 延迟删除粒子,只有当粒子的可见性为0时才能删除粒子。 |
喷射模型(Jet Model) | 加载喷射的模型(即渲染单个粒子为一个模型)。 |
- 风力(Wind)
设置粒子系统的风属性。
属性 | 描述 |
---|---|
风力影响(Wind Influence) | 设置风力对粒子的影响,如果风力影响为0,则重力影响也为0。 |
风力影响偏差(Wind Influence Deviation) | 设置风力对粒子的影响的偏移量。 |
上升速度(Rise Velocity) | 设置粒子的上升速度。 |
- 碰撞(Collision)
设置粒子在场景中碰撞的属性。
属性 | 描述 |
---|---|
最小尺寸(Min Size) | 设置粒子的最小尺寸。 |
着陆高度(Landing Height) | 设置粒子的着陆高度。 |
- 引力器(Attractor)
设置引力器的属性。
属性 | 描述 |
---|---|
引力器速度(Attractor Speed) | 设置被引力器吸引的速度。 |
引力器类型(Attractor Type) | None:没有;Self:发射器自身;Point:指定引力点;Line:指定引力位置线段。 |
粒子公转速度(Particle Revolution Speed) | 设置粒子围绕吸引力点的公转速度。 |
粒子公转速度偏移(Particle Revolution Speed Offset) | 设置粒子围绕吸引力点的公转速度的偏移量。 |
- 拖尾(Trails)
设置粒子拖尾的属性。
属性 | 描述 |
---|---|
生成拖尾(Generate Trail) | 设置是否生成拖尾。 |
拖尾时间(Trail Time) | 设置拖尾的时间。 |
拖尾片段数量(Trail Segment Number) | 设置拖尾细分段数。 |
拖尾透明度(Trail History Alpha) | 设置是否使用以前的Alpha值。 |
拖尾颜色(Trail History Color) | 设置是否使用以前的颜色值。 |
拖尾大小(Trail History Size) | 设置是否使用以前的粒子大小。 |
修正拖尾大小(Modify Trail Size) | 设置是否修正粒子拖尾的大小。 |
- 高级(Advanced)
设置粒子的高级属性。
属性 | 描述 |
---|---|
粗糙度(Roughness) | 设置粒子面片的粗糙度。 |
金属度(Metallic) | 设置粒子面片的金属度。 |
法线贴图(Normal Map) | 设置粒子面片的法线贴图。 |
场景设置
属性 | 描述 |
---|---|
光照(Illumination) | 太阳参数。 |
环境(Environment) | 环境全局光照参数。 |
摄像机(Camera) | 摄像机参数。 |
风(Wind) | 全局风参数。 |
SSDO效果(SSDO Effect) | 环境遮挡参数。 |
抗锯齿(Anti-aliasing) | 抗锯齿效果。 |
泛光效果(Bloom) | 泛光效果。 |
动画曲线
在动画曲线控制面板中可以控制粒子效果动态过程中的变化形式。
基本编辑
在动画曲线控制面板左侧选择一个粒子效果进入该效果的曲线编辑面板。在曲线编辑区域空白处双击可添加一个新的关键帧。
删除关键帧。选择所需要删除的关键帧,然后按Delete键即可删除该关键帧,可框选多个关键帧一起删除;或者点击面板中的删除(Delete)按钮,在弹出的删除关键帧(Delete Key)窗口中选择想要删除的关键帧(以每个关键帧的时间(Time)代表该关键帧),然后点击OK按钮。
移动关键帧。选中想要移动的关键帧,鼠标左击不松开即可移动该关键帧。
修改关键帧。在曲线编辑区域上方会显示出当前所有关键帧的时间(Time)和值(Value),在其输入框中输入数字即可直接修改关键帧。
点击参数(Parameter)按钮弹出关键帧参数窗口,该窗口中显示了当前曲线上所有关键帧的信息。
粒子可见性
在粒子可见性(Particle Visibility)中可设置粒子在生命周期中其可见性是如何变化的。
在动画曲线控制面板左侧点击粒子可见性(Particle Visibility)打开粒子可见性曲线编辑面板,此时曲线编辑区域内会出现一条默认线性曲线。
当前曲线上有两个关键帧,在面板上方会显示曲线上每个关键帧的时间(Time)和值(Value)。曲线范围值由1到0,值1代表粒子完全可见,值0代表粒子不可见。
粒子大小
在粒子大小(Particle Size)中可设置粒子在生命周期中其尺寸大小是如何变化的。
在动画曲线控制面板左侧点击粒子大小(Particle Size)打开粒子大小曲线编辑面板,此时曲线编辑区域内会出现一条默认线性曲线。
当前曲线上有两个关键帧,在面板上方会显示曲线上每个关键帧的时间(Time)和值(Value)。曲线范围值由0到1,值0代表当前粒子在其生命周期中的最小尺寸,值1代表当前粒子在其生命周期中的最大尺寸即粒子属性中的粒子大小(Particle Size)。尺寸大小在动态变化中的粒子,其生命周期中不同时期的尺寸大小等于粒子属性中的粒子大小(Particle Size)乘以对应的值(Value)。
粒子速度
在粒子速度(Particle Speed)中可设置粒子在生命周期中其速度是如何变化的。
在动画曲线控制面板左侧点击粒子速度(Particle Speed)进入粒子速度曲线编辑模式,此时曲线编辑区域内会出现一条默认线性曲线。
当前曲线上有两个关键帧,在面板上方会显示曲线上每个关键帧的时间(Time)和值(Value)。曲线范围值由0到0.02,值0代表当前粒子在生命周期中的最慢速度(即粒子静止),值0.02代表当前粒子在生命周期中的最快速度。速度在动态变化中的粒子,其生命周期中不同时期的速度等于粒子属性中的粒子速度(Particle Speed)乘以对应的值(Value)。
粒子自转
在粒子自转(Particle Rotation)中可设置粒子在生命周期中其自转程度是如何变化的。
在动画曲线控制面板左侧点击粒子自转(Particle Rotation)打开粒子自转曲线编辑面板,初始时未有粒子自转程度的动态变化。
在编辑粒子自转曲线前,需先在粒子属性(Particle Property)面板中设置粒子自转(Particle Rotation)属性。粒子自转程度在动态变化中的粒子,其生命周期中不同时期的自转程度等于粒子属性中的粒子自转(Particle Rotation)乘以对应的值(Value)。
上升速度
在上升速度(Rise Velocity)中可设置粒子在生命周期中上升速度是如何变化的。
在动画曲线控制面板左侧点击上升速度(Rise Velocity)打开上升速度曲线编辑面板,初始时未有粒子上升速度的动态变化。
在编辑上升速度曲线前,需先在粒子属性(Particle Property)面板中设置风力(Wind)属性。上升速度在动态变化中的粒子,其生命周期中不同时期的上升速度等于粒子属性中的上升速度(Rise Velocity)乘以对应的值(Value)。
粒子抖动速度
在粒子抖动速度(Particle Jitter Speed)中可设置粒子在生命周期中抖动速度是如何变化的。
在动画曲线控制面板左侧点击粒子抖动速度(Particle Jitter Speed)打开粒子抖动速度曲线编辑面板,初始时未有粒子抖动速度的动态变化。
在编辑粒子抖动速度曲线前,需先在粒子属性(Particle Property)面板中设置粒子抖动速度(Particle Jitter Speed)和粒子抖动强度(Particle Jitter Strength)。粒子抖动速度在动态变化中的粒子,其生命周期中不同时期的抖动速度等于粒子属性中的粒子抖动速度(Particle Jitter Speed)乘以对应的值(Value)。
引力器速度
在引力器速度(Attractor Speed)中可设置粒子在生命周期中引力器速度是如何变化的。
在动画曲线控制面板左侧点击引力器速度(Attractor Speed)打开引力器速度曲线编辑面板,初始时未有粒子引力器速度的动态变化。
在编辑引力器速度曲线前,需先在粒子属性(Particle Property)面板中设置引力器(Attractor)选项中的引力器速度(Attractor Speed)和引力器类型(Attractor Type)。引力器速度在动态变化中的粒子,其生命周期中不同时期的引力器速度等于粒子属性中的引力器速度(Attractor Speed)乘以对应的值(Value)。
颜色变化
在动画曲线控制面板中点击颜色(Color)打开颜色关键帧面板,在该面板中可设置粒子颜色在其生命周期中的动态变化效果。色条左侧表示粒子生命的开始,色条右侧则表示粒子生命的结束。
单击色条下方空白处即可在不同位置处添加颜色关键帧。如果想要删除关键帧,需要先选中关键帧,然后点击删除(Delete)按钮,或者选中关键帧后鼠标按住不松开向四周拖动,这样也可删除关键帧(注意:关键帧最多8个)。
选中关键帧,在颜色(Color)和位置(Location)中可分别修改该关键帧的颜色和位置。选中关键帧,左右拖动可改变该关键帧的位置,直接双击关键帧可进入该关键帧的颜色选择窗口中修改其颜色。
粒子与向量场
在微积分和物理学中,向量场(Vector Field)是把空间中的每一点指派到一个向量的映射,物理学中的向量场有风场、引力场、电磁场、水流场等等。描述向量场的文件后缀为.fga,一般由第三方的DCC软件制作,Flexi引擎中提供导入的功能。如果想要使用向量场的功能,必须确保粒子系统的粒子计算模式(Particle Calculation Mode)为GPU模式。
FGA文件
FGA文件主要描述了在三维中,一个长方体空间内每个体素的向量/矢量大小。
文件的第一行指定了向量场的维度大小,由三个数字组成,分别表示向量场的X,Y,Z轴的维度,维度大小记为X,Y,Z。一般来说,X = Y = Z, 且为2的倍数。
第二行的三个数字表示了该向量场长方体边界最下方的一个顶点在世界空间中的坐标。
第三行的三个数字则表示第二行数字确定的点的对角线顶点世界坐标,由这两个点(坐标)可以唯一确定一个在三维空间中的长方体。
接下来是向量场真正的内容,由X × Y × Z行组成,表示在此向量场坐标系的每个体素确定的向量大小。(如下方的文件,共有 16 ×16 × 16 + 3 = 4099行。)
向量场相关操作
将DCC软件制作导出的FGA文件拖到编辑器的资源预览窗口中。
导入完成:
在粒子编辑器的粒子属性(Particle Property)面板中,设置渲染(Render)选项下的粒子计算模式(Particle Calculation Mode)为GPU。
然后在粒子系统(Particle System)选项下的向量场(Vector Field)中选择一个FGA资源。
如果想要调节力场的强度,可以在向量场强度(Vector Field Strength)中调整,可调整数值范围为0.0~10.0。
调整粒子系统(Particle System)选项下的粒子数量(Particle Amount)、生命周期(Lifetime)、粒子持续时间(Particle Duration)和发射(Emit)选项下的一次发射数量(The Number Emitted At A Time)至合适值,可继续通过调整运动(Motion)选项下的粒子抖动强度(Particle Jitter Strength)、粒子抖动速度(Particle Jitter Speed)和重力影响(Gravity Influence)来添加粒子抖动和重力效果。
下图为向量场、粒子抖动、重力等属性共同作用的结果(互相兼容)。