粒子是从发射器中生成的对象。 每个粒子按照其自身的寿命和速度运行,并由纹理可视化。
拓扑组
拓扑类型定义了粒子在该层的几何体类型。 基本上可区分为五种截然不同的范式:
公告牌
经典的镜头对齐点精灵粒子。 这一类型的粒子是您在很多情况下使用的通用类型,例如火焰、燃烧、烟雾、梦幻粒子等。
基于几何网格的粒子
每个粒子都使用一个作为几何类型的几何网格。 这将为粒子系统开启种种使用新效果的可能性,从简单的游戏痕迹到传统技术无法实现的复杂效果。
您可以用”Randomness”(随机性)参数指定任意旋转轴和变量。 绕该轴发生的旋转由”Liftime and Transform”(寿命和变换)组定义。
拉伸粒子
拉伸粒子适合表现火花或光束,因为它们以条纹的形式渲染。 如果层中的粒子要被拉伸,其长度可通过两种截然不同的方式确定:
固定长度: 拉伸粒子有一个固定长度,由”固定长度”参数指定。
相对速度: 粒子长度始终与粒子速度对应。 您可以通过”Speed multiplier”(速度倍增)参数影响其相对速度。
这些拉伸模式的粒子可启用附加的平面对齐勾选项。 如设置,粒子条纹将不和镜头对齐,而是相对于其运动方向对齐。 这种设置也许适合瀑布中落下的水体。
轨迹
与拉伸粒子类似,但在其内部,毗邻粒子总是彼此相连(如有必要也会形成重叠),从而构成连续的轨迹。 使用该模式可创造刀光剑风、彗星和火球,或者将粒子发射器附到使用”跟随路径”组件的路径上。
注: 如果仅按下粒子编辑器工具栏中的”模拟”按钮,照亮”跟随路径”组件的光源不会被动画化,也不会在该模式下生成轨迹。 这种情况下,请按”在编辑器中运行”查看轨迹。
环状波
粒子与某个平面对齐,以某个点为圆心向外扩散。 非常适合于创造大型爆炸的冲击波或魔法召唤环。
纹理组
Texture File(纹理文件): 定义该层所有粒子使用的粒子纹理图像。 载入图像时,左侧显示 RGB 通道和图像,右侧显示可用的 Alpha 通道。 您也可双击某张图像改变其纹理。
Transparency(透明度): 定义透明度模式,即粒子纹理与帧缓存混合的模式。 典型模式为 alpha 混合(用于烟雾等)或叠加混合(用于火焰等)。
Aspect ratio(纵横比): 粒子纹理的宽 / 高比例。 例如,如果纹理为 256×128,则该值应设为 0.5。
Particle center(粒子中心): 粒子中心点的相对坐标。 默认值为(0.5,0.5),即简单的公告牌粒子的中心。 拉伸粒子应换成(0,0.5),即以左边缘为中心。 粒子中心可使用旋钮控制或单击纹理图像的方式手动更改。 中心以白色十字表示。
子分区和动画组
仅当粒子纹理平均分割为动画帧铺块时,该组中的属性才有意义。
Sub division(子分区): 动画铺块在 x 指向和 y 指向上的数量。
Used frames(使用帧数): 动画中使用的动画铺块的实际数量。 可少于 U*V。
预览模式: 该参数定义了纹理组中的纹理预览显示图像的方式。 您可以预览子分区铺块或单一切片。
从随机帧开始: 如果勾选从随机帧开始,则会从某个随机帧开始动画。 该勾选项也应用于切片间无动画模式。 在那种情况下,粒子会在生成时随机挑选一帧。 勾选后,您可以将动画曲线作为概率曲线使用,以提高某些帧被选中的几率。如果不想使用这一行为模式,请勾选”禁用”勾选框(仅在作为概率曲线使用时可见)。
平滑淡入淡出: 如启用,像素着色器会在动画帧之间淡入淡出。 如果无可用帧,则这一选项会被禁用,请将使用帧数属性设为 > 1。
动画模式:
切片间无动画: 粒子不应动画化。
在指定时间内重复: 使用动画时间重复动画。
寿命循环: 在粒子寿命期执行一个动画循环。
粒子颜色
Apply scene brightness to particles(对粒子应用场景亮度): 如启用,实例位置的场景本地亮度(在大部分情况下其实为暗度,因为对象不显示全亮)将应用于粒子。 因为该值仅在创建时计算一次,所以此功能不会造成显著的性能负担。 场景亮度提取自场景的 vLux 光照网格。
颜色和 Alpha: 定义 RGB+A 颜色值,用它乘以所有粒子颜色。 这有助于调节所有粒子的颜色和透明度。 该颜色在所有颜色(来自颜色曲线和场景亮度)的基础上相乘。
颜色与寿命渐变相乘: 允许美工使用 vForge 曲线编辑器编辑粒子寿命期的颜色曲线(包括 alpha)。
颜色与随机纹理采样相乘: 定义一个可选位图文件名。 如果在此指定一个位图,则每个新粒子在初始化时都会带一个来自该纹理的随机纹理色。 该随机色将会乘以”恒色”。 引擎会载入该文件为系统内存位图,所以位图文件应保存为未压缩格式,且文件应较小。 该功能可用来为每个新粒子提供一个来自给定调色板的随机色。 请注意,在粒子寿命期间,颜色曲线依然会发挥相乘作用。
注: 如果粒子要被时间变化系统照亮,那么除了上文提到的”应用场景亮度”选项之外,粒子图形的”ApplyTimeOfDayLighting”属性也需设为 true。
寿命和变换组
粒子寿命和变形属性负责控制粒子的基本特征,包括粒子保持、速度、时长和变形。
Particle life time(粒子寿命): 定义单个粒子的平均寿命。 其变量应用于每个单个粒子实例。 寿命越长,世界中存在的粒子可能就越多。 如不想让粒子过多,可使用发射器 Fix particle count(固定粒子计数)选项进行控制。 其变量应用于每个单个粒子。
在寿命期内重复粒子生命周期: 如果勾选此项,粒子会在其寿命完结后再次以其最终状态(例如位置、朝向等)生成。
Initial Speed(初始速度): 新粒子的初始平均速度(以世界单元 / 秒为单位)。 其指向由发射器类型和发射器锥体角度决定。 其变量应用于每个单个粒子。 当一个新粒子生成,其速度会受风或重力等外部约束的影响。
下图显示了一个粒子在不同初始速度下的对比,其粒子寿命为 1。
Maximum Size(最大尺寸): 定义粒子的最大尺寸。
Size Curve(尺寸曲线): 可选选项,定义一条尺寸曲线(相对于最大尺寸,以世界单元为单位)。 一个粒子在其寿命期间会按尺寸曲线的轨迹变化。 例如,可创建开始时较小、在寿命期间不断变大的粒子。
单个粒子旋转对拉伸粒子不可用。
支持以下旋转模式:
Constant angle(常数角): 公告牌不旋转,但每个粒子可以带一个在生成时分配的初始随机旋转角度,由 Initial Angle Range(初始角度范围)定义。 例如,如果范围设为 0 - 360,则每个粒子会在生成时随机旋转为任意角度。
Simple rotation(简单旋转): 粒子恒定旋转的速度,以度 / 秒为单位。 如角速为正值,则粒子逆时针旋转。 该模式下可定义 Rotation Speed Range(旋转速度范围)。 每个粒子在生成时获得一个在此范围内的随机速度,但在寿命期间,其旋转速度不会改变。
Rotation curve(旋转曲线): 该模式下,旋转角度来自一条旋转曲线。 该曲线定义了旋转角度随时间而变化的情况。 一个旋转曲线循环的时长可任意设置,单位为秒,如设为 0,则时长等于粒子寿命。 如果勾选 Start at random offset(起始随机补偿),则每个粒子的旋转曲线起点将是随机位置。
着色器效果组
可通过着色器部分为粒子应用自定义着色器。 自定义着色器可包含 UV 卷轴等附加效果。 自定义粒子着色器可通过 vForge 着色器编辑器创建,请参阅着色器 - 介绍章获取创建着色器的更多信息。
Particles.inc 是一个常用的模板,可向售后支持人员索取。
Soft Particles(柔和粒子): 柔和粒子会切换状态,决定了是否应用某个专用着色器让粒子在与几何体的交叉线上淡出。
注: 与默认粒子效果相比,这一柔化效果会对渲染性能(填充率)造成显著影响。 因此应仅在需要时使用该效果。 还要注意的是必须在主层设置一个渲染器节点(正向或延迟)。
为粒子编写自定义着色器时需考虑若干事项:
与标准几何体不同,其顶点位置不单纯是从模型视图投射矩阵变形而来的传入位置。 公告牌也必须被覆盖。 严格按需要的方式覆盖是非常重要的。 因此,合适的做法是引用或直接包含 Particles.inc 文件,至少顶点着色器应如此。
一个粒子效果需要至少两个技术回退。 第一个技术回退不带任何包含标记(用于旧显示芯片),第二个带有包含标记‘hwspanning’ 和 Particles.inc 中为顶点着色器定义的 #define PARTICLES_USE_HARDWARESPANNING。 目标系统支持实例化(SM3.0)则选取该子技术。 如果缺失‘hwspanning’ 技术回退,还有一个使用默认粒子效果的回退(即等同于未应用任何着色器)。
如果粒子效果使用平滑动画淡出,回退排列组合也应提供“smoothanim”包含标记。
如果粒子效果需要支持 DX11 中的 alpha 测试,则该效果必须支持”alphatestinshader”包含标记。 因为 DX11 中的 alpha 测试必须使用 clip() 指令执行,所以还需要另一个版本的着色器。 在排列组合着色器配置中使用 IsPermutationSupported() 来禁用在其他平台上的编译。
在本地空间生成和变形粒子(发射器选项卡: 常用属性): 如启用,粒子模拟会在效果图形的本地空间发生,实际变形矩阵被追踪到通常模型视图 / 模型视图投射矩阵。 该着色器必须正确地使用这些矩阵。 因为这比通常着色器需要更多指令,SDK 内置名为 Shaders/Particles_LS.Shaderlib 的专用粒子着色器效果库。 凭借该功能,本地空间中可显示被渲染的粒子。 对于几何体粒子,这意味着几何体指向也随效果旋转。
相应地,有两个属性必须更改,以在本地空间渲染器粒子效果:
1、勾选”着色器在本地空间变形”选项。
2、从 Particles_LS.Shaderlib 库等来源分配一个使用本地空间变形的粒子效果。
几何体粒子不需要应用第二部分,因为没有该部分也能正常工作。
注: 在本地空间渲染粒子时,应用于该效果的约束将无法按预期生效。 所以此类层不应分配任何约束。
附加法线贴图: 如果您的自定义着色器也包含法线贴图,您可以在此指定该法线贴图。