This page has been translated automatically.
视频教程
界面
要领
高级
实用建议
专业(SIM)
UnigineEditor
界面概述
资源工作流程
设置和首选项
项目开发
调整节点参数
Setting Up Materials
设置属性
照明
Sandworm
使用编辑器工具执行特定任务
如何擴展編輯器功能
嵌入式节点类型
Nodes
Objects
Effects
Decals
光源
Geodetics
World Nodes
Sound Objects
Pathfinding Objects
Players
编程
基本原理
搭建开发环境
使用范例
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Plugins
File Formats
Materials and Shaders
Rebuilding the Engine Tools
GUI
双精度坐标
应用程序接口
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
创建内容
内容优化
Materials
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials
注意! 这个版本的文档是过时的,因为它描述了一个较老的SDK版本!请切换到最新SDK版本的文档。
注意! 这个版本的文档描述了一个不再受支持的旧SDK版本!请升级到最新的SDK版本。

粒子系统(Particle Systems)

粒子系统(Particle Systems)之所以被称为真正的通用技术,在于其能创建可产生动态"模糊"效果的复杂活动结构体。 它们被用来对抽象的效果,诸如:火焰,烟雾,爆炸,魔法,电流,喷泉,火箭尾焰,蜂拥,以及许许多多其它的特效进行模拟。 所有的这些特效都很难通过传统的刚体对象复现:粒子不是由一组基本曲面元素表示的,而是由可形成粒子基本体积的质点表示的。 还有另一个区分特征是,粒子不是静止的,它们不仅能改变自身的位置,还能随着时间改变它们自身的形态。

一套粒子系统由三个主要实体组成:

另请参阅#

粒子(Particles)#

通过使用精细调节的粒子,您就能让场景变得更具吸引力。 这部分包含了喷射的粒子的参数介绍。

使用粒子系统模拟的火焰和烟雾。

粒子类型#

Unigine拥有如下类型的粒子:

  • Billboard,这种粒子是迄今为止用的最多的类型。 它们表示的是旋转的正方形平面,这些平面都面向摄像机。 举例来说,billboard型粒子可用来创建烟雾。
  • Flat,这种粒子都是垂直于它们所组成的粒子系统的Z轴的。 它们适合模拟一些在平面表面上的,像是水面上的特效。
  • Point,这种粒子与billboard型粒子相似。 它们也始终面向摄像机,不过却拥有固定的屏幕对齐朝向。
  • Length,属于billboard型粒子,能被沿着粒子运动的方向拉伸。 拉伸是可调节因子。 使用这一类型的粒子可有效模拟火花和飞溅特效。
  • Random,这是种在空间中被随意确定朝向的正方形粒子。 可使用这一类型的粒子对落叶进行成功模拟。
  • Route,这是种可用来创建运动对象轨迹的粒子(例如,船后面的泡沫线)。 它们与flat型粒子以前的实现相似。
  • Chain,属于billboard型粒子,它们可形成持续的,视觉上不间断的粒子流。 它们的长度直接取决于喷射源的产生速率。 这一类型的粒子被用来与可在喷射源之后创建链式尾迹的shift喷射源一起使用。

Length型粒子的拉伸和整平#

您可以通过Length stretch(长度拉伸)参数来指定粒子的长度

  • 当其值为0时,length型粒子就简单地变成了正方形billboard类型粒子。
  • 增加该值就可在粒子运动的方向上拉伸粒子。 结果由拉伸值乘以粒子速度值求得。 因此,速度越快,粒子在它们运动的方向上被拉伸的也就越多,而另一边仍然还保持着原来的宽度。
Length Stretch = 0
Length Stretch = 1

此外,您还可以指定Length Flattening(长度整平)参数。 该参数可使length型粒子不像普通billboard型粒子那样面向摄像机,而是更多地垂直于Z轴。

  • 若值为0,粒子将不会被整平。
  • 若为最大值1,那在粒子被喷射时,它们将是扁平的(垂直于Z轴)。
Length Flattering = 0
Length Flattering = 1

Variation(变化)#

Variation参数(VariationXVariationY)提供了多种多样的喷射粒子来使场景更自然。

如果启用了变化选项,那粒子将会沿合适的轴向随机获取所分配纹理的某一种可能的朝向。

注意
您需明智地使用这些参数:有时候其能使场景看起来更自然,而有时候(特别是在纹理已用在精确定义顶部和底部时)其也会破坏场景的合理性。

使用变化参数的一个例子:四个自动粒子的朝向

粒子的交互检测#

粒子的交互仅限于作用力的应用以及粒子与外部对象的碰撞。 有两种方法可用来检测与外部对象的碰撞:通过使用Intersection(相交)参数或Collision(碰撞)参数。

注意
粒子与粒子间碰撞是不做检查的,原因是碰撞检测是一种开销很大的操作。

Intersection(相交)#

相交代表的是只计算网格与粒子中心的碰撞,而不是与整个粒子的形状的碰撞。 只有当粒子的一半已穿透网格时相交才可将一点儿非自然现象视作物理反应的开始,不过若存在大量小粒子,那这种方法会非常适合计算碰撞。 这种方法的主要优势在于它属于又快又开销不大的性能优化方案。

Collision(碰撞)#

Collision(碰撞)选项,不同于Intersection(相交),它会检测整个粒子形状是否与网格进行了碰撞。 如果粒子足够大,那这会是更可取的方法,因为它提供了更高等级的可视现实:当粒子的边缘或顶点与对象接触时,粒子将会根据所设设置做出反应。 由于碰撞计算开销更大,因此对大粒子系统而言应谨慎使用该选项。

与物理节点的交互#

粒子系统的另一种交互方式是通过物理节点,即:风(wind)作用力(force)水体(water)与环境交互(也称为特效(effects))。

粒子的物理质量(Physical Mass)#

要想参阅场景的动力学,粒子就应拥有按千克计算的一定质量。 其值反映了物理节点将会如何影响粒子流。

注意
Physical Mass(物理质量)参数不会对其它计算产生影响。
  • 若质量为0,粒子系统的轨迹就不受外部作用力影响。
  • 质量越大,粒子就越重,能下倾粒子流,拉伸粒子或给出其它影响的物理节点也就越少。
物理掩码(Physical Mask)#

为了使粒子系统与物理节点的交互更具选择性,可使用位掩码(bit mask),且需为粒子作用力双双设置位掩码。 这些掩码应至少有一位是匹配的,否则将不会产生任何影响。 由于掩码的其它位可与其它作用力匹配,因此就能为场景集成提供完美控制。

粒子的节点层级#

要想创建复杂特效,就必须要让所有的粒子系统都按时同步。 将粒子系统设为节点将会导致如情况的发生:

  • 作为节点的所有粒子系统,都将相对于它们的父粒子系统被同步。 如果子粒子系统又拥有它们自己的子粒子系统,那仍然会将它们与层级最高的主父系统做同步。
  • 当创建新的子粒子系统时,应通过禁用并再次启用喷射源来将其与父粒子系统做同步 (通过Parameters(参数) 标签页 -> Enabled(启用) 复选框实现)。 在这一刻每一个子系统都由其自身的模拟参数来初始化(比如产生的持续时间(duration),产生的暂停周期(period)以及初始化的延迟(delay))。
  • 禁用或启用父喷射源(勾选Parameters(参数) 标签页 -> Enabled(启用) 复选框)会影响所有子粒子系统:它们将被自动且同步地停止或开始喷射粒子(已有的粒子仍会活过它们的生命期)。
  • 禁用或启用父节点(通过Node(节点) 标签页 -> Enabled(启用) 复选框实现)也会影响所有子节点:层级中的所有粒子系统都会被关闭然后开启 — 之后都会以与这些粒子系统被禁用之时所处状态一致的状态出现。

初始化的延迟#

Delay(延迟)选项定义了系统的初始化与节点的初始化间的过渡时间。 因此首先是父系统开始喷射粒子,只有在延迟暂停之后,才会激活子粒子的产生。 可使用某个随机化区间来设置延迟。

  • mean值和spread值都为0,那父系统和子系统系统将会被同步初始化。
  • 若使用了更高的 mean值,那子粒子系统的初始化将会被相对于父粒子系统延迟一段严格定义的时间周期。
  • 预设的spread值可为延迟暂停的随机化定义范围。

渲染选项#

下文介绍的这些选项决定了粒子系统的渲染细节。

Warming(加温)#

粒子系统会随着时间演变,因此在虚拟世界中遇到它之后,粒子系统一开始只是逐个粒子般的产生粒子,直到后来整个系统获得了预期的视觉特效为止。 当角色出现在空地上时,我们将看到有火焰会逐渐燃烧起来。 粒子的热启动(warm start)可立即就渲染出成熟的粒子系统。

热启动的技术实现:当遇到粒子系统被初始化时,该系统的生命期会从第一个粒子的产生开始计算直到该粒子的消失。 在此之后,粒子系统会被认为发生了演变,并会在这一状态下被渲染。 而计算也都是在固定帧速为25 fps的状态下求得,这是粒子系统能进行正确模拟所需满足的最低要求(另请参阅帧速间的相互关系)。

对除巨型粒子系统之外的任何粒子系统而言,可在不对其产生任何不利影响的情况下启用热启动。

Depth Sort(深度排序)#

如果粒子使用了alpha融合,那就需要用到深度排序选项。 如果未启用该选项,那么根据深度缓冲区的数据,被更远放置的不透明对象就会被错误地渲染在透明粒子的顶部之上。 借助深度排序,几何体将被按从后到前的顺序渲染,这有助于排除非正常的视觉特效。

Emitter(喷射源)#

喷射源是产生粒子的粒子系统的源头。 这部分包含了喷射源参数的描述。

喷射源的类型#

喷射源的类型定义了在其内产生粒子的体积的形状:

  • Point — 指粒子是从单点喷射的。
  • Sphere — 指粒子是从球体内的任意一点上产生的,该球体拥有确定半径
  • Cylinder — 指粒子是从缸体内的任意一点上产生的,该缸体拥有指定半径高度
  • Box — 指粒子是从立方体内的任意一点上产生的,该立方体拥有的参数为宽度(X轴),高度(Y轴)和深度(Z轴)。
  • Random — 如果选择了这种类型的喷射源,那就会在任意父网格的表面或粒子的表面之上产生粒子。 要想使用random型喷射源,您应将粒子系统设为网格的子节点。 在渲染期间,网格的随机顶点会被选择来产生粒子。
  • Spark — 这种类型的喷射源会从具备一定条件的点上产生粒子。 其可用来创建能通过自身产生新粒子的粒子:当第一个粒子与地面碰撞时,就会从碰撞点上生出新的火花粒子。 对于这种情况,spark型粒子系统应由父节点的第一批粒子的子节点组成。 Spark型喷射源可用来模拟粒子的级联。
  • 此外,还有一种喷射源,只有当您移动它时,它才会产生粒子。 其被称为Shift型喷射源,可使用Emitter shift(移动)选项来启用它。 启用后,只有当移动系统时才会产生粒子。 粒子可被移动到父节点之后(需要将它们分配为子节点),或是程序式定义粒子的运动。 Shift型喷射源拥有如下选项:

    • Emitter based(基础) - 指粒子是与喷射源一起移动的。 如果您开始移动喷射源,那粒子也会移动,原因是粒子的变换取决于喷射源的变换。
    • Emitter continuous(持续) - 用来启用可跟随shift型喷射源的持续粒子。

Emitter enabled(启用)选项可启用\禁用喷射源。
Emitter sync(同步)选项可启用子粒子与父粒子的同步,即使子粒子禁用了Emitter enabled(启用)选项也有效。

Particle system with a teapot as an emitter

茶壶网格用作了Random型喷射源的父节点。

Emitter Size(喷射源大小)#

通过喷射源的大小参数,您就可以指定粒子源的大小。 其字段的数量(不管是半径还是边界尺寸)取决于所选的类型

Limit per Frame(每帧限制)#

喷射源能在一帧中生成的最大粒子数是通过喷射源的限制参数控制的。 该参数指定了在喷射的Duration(持续时间)值被设为0(每一帧的喷射)的情况下要被立即喷射的粒子的准确数量。 对于其它情况,当粒子在某个时间周期(Duration不为0)内被连续喷射时,该参数一般被用来避免出现性能下降。

Sequence(顺序)#

该参数用来为粒子系统设置渲染顺序,特别适合用在创建像炮击(带有炮口火焰,烟雾以及使用了不同粒子系统渲染的每一个镜头)这样的复杂特效的场合。 该参数与Materials(材质)标签页内的Order(顺序)选项非常相似。 不过,该参数允许在粒子系统层级的内部设置渲染序列,目的是为了避免远摄的烟雾被渲染在了近景拍摄的火焰的顶层这种情况的出现。

  • 0代表会根据粒子系统的包围盒做默认排序。
  • 拥有最低Sequence编号的粒子会首先被渲染,并会由拥有最高Sequence编号的粒子覆盖,拥有最高顺序编号的这部分粒子会在最后,在其它粒子之上被渲染。

模拟参数#

这部分包含了模拟参数的介绍,这些参数可被用来获取场景的合理性。

为了模拟出唯一的粒子系统,Unigine引擎使用了随机方法。 随机过程引入了一定程度的随机性,这就使得指定范围内的结果值能存在差异。 最终,这种方法赋予了粒子系统表现自然,变化自由的形状和外观。 例如,粒子流中不是所有的粒子都会以完全相同的速度移动:有一些粒子会移动快一些,有一些粒子会慢一些,从而能模拟复杂交互。

每个模拟参数都拥有2个值:

  • Mean value(平均值)定义了平均值。 它用来设置重要的背景事件来控制参数。
  • Spread value(散布值)定义了可能变化的范围。 其值越高,粒子表现的差异性也就越大。
    散布值是【可选的】:若其值被设为0,那仿真过程也不受此影响,并且只会使用平均值。

待这些值被指定后,就可以使用如下公式来计算参数的最终结果了:

结果 = Mean值 + Random * Spread值
这里的Random是取值范围从-11的随机值。 这意味着,对系统中的每一个粒子而言,其参数都将是不同的,一个粒子的此参数值会紧挨着另一个粒子的此参数值。

Particle Radius(粒子半径)#

该参数定义了粒子的半径,换句话说,就是粒子的大小。 借助参数的spread值,您就可以生成具有不同大小的粒子流。

Increase In Radius (半径增加) - 粒子大小的增量,单位为每秒。

  • 正数会导致粒子在生成后不断增长。 例如,烟花在天空中生长和绽放。
  • 负数定义粒子逐渐减少。 例如,模仿在空气中消散的烟雾。

Orientation Angle(定向角)#

当粒子被生成时,其在空间中的朝向可由特定角度来定义。 通过使用该参数,您就能创建具有丰富结构和更高级视觉复杂度的粒子系统,方法就是指定mean值和spread值。

  • 如果该角的spread值被设为180 度,那粒子将在所有方向上被随机确定朝向。
注意
该选项不适用point类型和length类型的粒子。

Spawn rate(产生速率)#

如果启用了粒子(标记了Emitter Enabled(启用)复选框),那喷射源就会开始以指定速率创建粒子。 该参数定义了每秒钟喷射的粒子的数量。

  • 其值定义了在1秒钟内会生成多少粒子。 例如,值被设为5表示每秒钟会产生5个粒子。
  • 其值若为0则不产生粒子。
  • 如果勾选了Emitter shift(移动),那在喷射源移动了1个单位时,产生速率就与生成指定数量的粒子有了相互关联。

假设我们将Spawn rate(产生速率)设为了每秒1个粒子,喷射的Duration(持续时间)要少于1秒,还要为产生的Period(周期)设置任意非无穷值(针对的是反复进行的喷射,而不是单次的喷射)。 那么一旦启用了喷射源,它就会对Duration间隔进行计数(Period时间会被忽略),当这些间隔总计达到1秒时,就会产生1个粒子。 如果Spawn rate被设为了2个粒子,就会在这一累积的1秒周期内的某个时间点模拟出2个粒子。

计算要设置什么样的产生速率的方式大体是这样的。 如果您将喷射的Duration设为了0.1秒并且想要产生1-3个粒子,那就可以将Spawn rate设为10-15个粒子。 粒子系统取决于FPS,因此如果将产生速率严格设为了10个粒子,那最后很可能会陷入在一个Duration间隔内没有粒子被产生的困境(由于FPS是多变的,所以必要的Duration时间累积的不够)。 为了安全起见,可将Spawn rate增加到15个粒子。

Spawn threshold(产生阀值)#

spark型和random型喷射源产生的粒子的数量也能被同步给父粒子系统。 该参数允许调节由父粒子的速度决定的粒子的数量。

  • 当其值为0时,spark型喷射源的产生速率是独立于父粒子系统的。
  • 阀值越高,要生成的火花的父粒子的速度肯定就会越高。 如果阀值不够高,若有粒子的话,也只是很少的粒子。
注意
random型喷射源的阀值只在粒子系统作为父节点时才起作用。

Generation Duration(产生的持续时间)#

Duration(持续时间)#

喷射源不仅能连续生成粒子,而且还能在间隔中生成粒子。 Duration(持续时间)参数控制着时间周期,在此时间周期内会发生喷射。

  • 改值越高,粒子被生成的周期也就越长。
  • 将Duration设为0意味着粒子是通过无穷小的时间间隔被产生的,也就是说,只在一帧内,就同时产生了所有粒子。 例如,该值可用在您需要模拟单个粒子的炮击情况。 要被喷射的粒子的精确数量可通过Limit参数来控制。 (对于这种情况,为生成粒子,须将Spawn rate设置的非常高才行)。

Period(周期)#

待产生周期结束之后,喷射源就会有暂停,该暂停的持续时间由Period参数定义:

  • 如果mean值被设为0,那粒子就会被连续产生,而无任何停顿。
  • 如果该参数被指定为无穷(inf),那粒子的喷射源将会在一个产生周期之后变为非激活状态。

Life Time(生命期)#

Life Time参数反映了在喷射完之后粒子将存在多长时间,按秒计算。 该参数也具有mean值和spread值,这就使得粒子流可形成令人信服的,带有变化密度的消失尾迹。

  • 如果mean值被设为0,那粒子将不会出现。

伴随有颜色变化和渐变尾迹消散的火球,使用的是shift型喷射源。

喷射的方向#

Direction(方向)#

Direction参数指定了形成粒子流的所有喷射粒子在其上移动的方向。

  • 喷射方向分别沿X轴,Y轴和Z轴指定。 它们的值都是相对于彼此的,这意味着粒子流会被偏斜到值较大的方向上。
  • 该参数若为负值则会迫使粒子在轴的反方向上移动。

如果Random型喷射源被用来在网格表面生成粒子,就可以使喷射粒子在表面的法线方向上移动。 为此,您需要进行如下设置:

  • 将Direction值分别设为1, 1, 1
  • 将Spread值分别设为0, 0, 0

喷射的散布#

成形的粒子流允许为粒子创建不同的产生模型。 Spread选项为喷射方向引入了附加的角度调变。 其表示的是相同的spread值,这样就可以在所设限制内随意变化喷射粒子的方向

  • Spread控制着分别沿X轴,Y轴和Z轴的粒子的散射。 它们的值也都是相对于彼此的,以及direction值的。
  • 该参数值越高,粒子被散射的范围也就越大。 如果未指定direction值,那就将在正轴方向和负轴方向上都产生散射。

例如,要想创建向下散布并形成90 度圆锥的粒子流,可设置如下值:

  • Direction0, 0, -10。 这种设置会使整体运动沿Z轴向下。 也可在粒子系统被旋转之后使用正值来完成同样的操作。
  • Spread10, 10, 0。 这种设置会使粒子同时沿X轴和Y轴均匀散布,以90 度角散射并形成圆锥。

喷射的圆锥。 使用了decal子节点的粒子系统。

粒子的线速度#

Velocity(速度)#

速度参数决定了粒子在所设方向上的运动速度。 要想让粒子流表现自然,每个单独粒子的最终速度都可以是不同的,前提是设置了spread值。

  • mean越高,粒子的运动变得也就越快。
  • 负的 mean值用来将相反方向上的粒子运动设置到所设方向上。
  • 如果spread高于平均(mean)速度值,那粒子将会在两个方向上移动:主粒子流在指定方向上移动,还有一些粒子在指定方向的相反方向上移动。 要想避免这种情况的出现,spread值应小于等于平均速度值。

Gravity(重力)#

粒子的速度可由重力的附加外部作用力来改变。 借助该参数就可以干涉粒子的方向,从而能转移分别X轴,Y轴和Z轴的粒子流。

  • Positive(正)值等同于指向上的重力向量。
  • Negative(负)值等同于指向下的重力向量。
粒子系统节点的旋转不会对引力向量产生影响。

Linear damping(线性阻尼)#

线性阻尼指定了粒子的线性速度会随着时间减少,该参数也被用来模拟介质的摩擦力对粒子的影响。 换句话说,该参数反映了粒子要多久才能迟滞它们的线性速度

  • 若其值被设为0,那粒子在其整个生命期都将保持相同的速度。
  • 该参数值越高,粒子的速度随时间下降的也就越快,直到其完全停止。

粒子的旋转#

Rotation(旋转)#

要想将角速度添加给粒子,可使用Rotation(旋转)参数。 从初始的定向角处开始,粒子可以绕着它们自身的轴自旋。 Rotation参数确定了粒子自旋运动的角速度。

  • Positive(正)数表示顺时针方向旋转粒子。
  • Negative(负)数表示逆时针方向旋转粒子。

Angular damping(角阻尼)#

角阻尼负责逐渐减少粒子的旋转。 该参数反映了粒子要多久才能迟滞它们的角速度,方法是通过Rotation参数添加。

  • 若其值被设为0,那粒子在其整个生命期都将会一直旋转。
  • 该参数值越高,粒子失去它们的角速度的速度也就越快,直到它们变为完全不旋转为止。

粒子的生长#

Growth(生长)#

通过使用Growth参数,您就能动态更改粒子的大小,而不必考虑粒子的半径范围。 Growth参数引入了会随着时间更改其初始大小的粒子。 生长可被严格定义(只定义mean值),或被近似为一个范围(也可通过指定spread值来近似)。

  • Positive(正)数会致使粒子在被产生之后,被不断生长。 例如,焰火在空中的生长和开花。
  • Negative(负)数用来定义粒子会逐渐减少。 例如,用来模拟烟雾在空气中消散。

生长阻尼#

要想控制Growth参数,可使用Growth Damping参数。 该参数定义了粒子在大小上的扩大会随着时间逐渐减少。 例如,借助该参数您可模拟爆炸特效:一开始粒子会快速生长,而到后来它们的生长就会慢下来。

  • 若其值为0,则意味着粒子的大小在粒子的整个生命期都会不断增长。
  • 该参数值越高,粒子的生长停止的也就越快,并且粒子会以恒定大小活过它们的生命期。

粒子-对象间的交互#

当粒子接触任意对象时(该对象应启用碰撞或交互检测),这些粒子就能使用下面给出的某一种方式来对其做出反应。

Culling(剔除)#

如果启用了粒子系统的Culling(剔除)选项,那引擎将会在出现了相交或碰撞的情况下不对粒子进行渲染。 这对于您不想在与几何体的交互之后渲染粒子的情况是很有帮助的。

如果禁用了该选项,那粒子的行为就将依赖其它参数。 例如,粒子可出现在作为decal对象的几何体的表面,或是从表面反射出后继续运动。

Restitution(复原)#

在碰撞完障碍物之后(前提是禁用了Culling选项),粒子能从表面反弹,而不是沿着表面滑动。 该选项在模拟一些包括飞溅在内的水特效时是非常方便的。 弹跳效果的强度由粒子的restitution参数以及碰撞对象的restitution表面选项(Properties(属性) -> Parameters(参数)标签页 -> Restitution(复原))共同决定。

  • 最小值0意味着粒子不反弹。
  • 最大值1意味着粒子下落的角度等于它们反弹的角度。

Roughness(粗糙度)#

粒子的另一个特征,体现在它们与障碍物的接触上,那就是粒子表面的粗糙度。 该参数决定了粒子是要在不同方向上散射,还是要作为方向一致的粒子流作出反应。

  • 最小值0意味着所有粒子的轨迹在碰撞之后都是相同的。
  • 最大值1意味着粒子将在不同方向上,以轻微角度散射。 由粒子的粗糙度引起的这个角度同样影响弹跳行为。

同步若干粒子系统#

要想同步若干粒子系统,例如,为了创建炮击特效(使用了三种粒子系统:炮口火焰,烟雾和炮弹),只需按如下步骤操作即可:

  1. 创建父粒子系统,该系统将被用作伪粒子系统,它只作同步使用(您甚至还可以禁用其表面)。 该系统的Duration时间间隔应覆盖子粒子系统的所有的持续时间间隔和延迟间隔(如果存在的话) 。 其它参数(Spawn rate等等)无关紧要。

  2. 添加子粒子系统。 这些粒子系统能拥有任意必要的Duration时间(不过它的这个时间应小于父粒子系统的这个时间)。 例如,要想同时同步所有的子粒子系统,还要只产生一个粒子,您就可以进行如下设置:

附加作用力#

要对粒子的进一步运动实现更复杂的变化可通过应用作用力来完成。 作用力会在所要求的方向上影响粒子流,或是在与该方向相反的方向上偏斜粒子流。 作用力可具有三种普通类型:

对应用给一个粒子系统的作用力的数量不做限制,这些作用力可自由叠加,如此一来就能很容易地快速构成复杂的轨迹。 如果设置了Attached(附加)标记选项,那点作用力将被拖拽,还会随整个粒子系统被旋转(并且它们的位置也会相对于系统被定义,该位置表示的是作用力坐标系统的零点)。 如果关闭了该标记选项,那作用力将不受系统的位置变化的影响。

Point Forces(点作用力)#

Point forces表示的是集中于一点的作用力,其应用受限于球体。 点作用力球体可被放置于场景中的任何地方,如有所需,还可被旋转。 不过,对影响粒子运动的点作用力而言,其应让这些粒子处于该点作用力的半径之内。

除此之外,点作用力还具有两个可定义其影响的主要属性。

Attractor(吸引体)#

Attractor属性允许调整粒子运动的线性方向。

  • 如果使用的是值,那粒子都将被排斥,会远离作用力的中心点。
  • 如果使用的是值,那所有粒子都将被吸引,会致使其在作用力的中心点方向上移动。
  • 若其值为0,该属性将处于非活动状态,不会影响粒子的运动。

Rotator(旋转体)#

借助Rotator属性,粒子就会被绕着作用力的中心点自旋。

  • Positive(正)值表示顺时针方向自旋粒子。
  • Negative(负)值表示逆时针方向自旋粒子。
  • 若其值为0,该属性将处于非激活状态,不会影响粒子的运动。

Point Force Attenuation(点作用力的变弱)#

要想让视觉效果更合乎情理,尤其是通过应用一组不同作用力来实现的时候,这些力对粒子的影响就可以在移动到边界时逐渐减小。

  • 若其值为0,则等同于无变弱,且作用力的影响会在穿过球体边界时突然结束。
  • Attenuation值越高,开始变弱的位置距离作用力的中心点也就越近。

Noises(噪声)#

Physical Noise(物理噪声)是一种可基于体积噪声纹理添加分布流的立方体形区域。 根据所给定的PositionRotation参数的不同,可对其进行放置和旋转,以此来覆盖必要区域。

纹理采样参数#

如下参数可用来对所生成的噪声纹理进行像素采样:

  • Offset(偏移) - 指分别沿各轴的采样偏移。
  • Step(步长) - 指分别沿各轴的采样步长的大小。

Force Multiplier(作用力乘法器)#

Force(作用力) - 指作用力乘法器。 其值越高,对噪声体积内部的对象产生影响的合力值也就越高。

产生的参数#

如下参数被用来生成将在运行时(run-time)中用到的噪声纹理。

  • Scale(缩放比) - 指噪声纹理的缩放比例。 其最小值为0,最大值为1
  • Frequency(频率) - 指用于噪声的倍频程的数量。 该值越高,噪声纹理拥有的细节也就越多。 其最小值为0,最大值为32
  • Size(大小) - 指按像素计算的噪声纹理图像的大小。

Deflectors(偏转器)#

偏转器是一种无视觉表现表现形式,但可与粒子系统进行物理交互的表面场(当然,其它对象都不会受此影响)。 根据所指定的大小的不同,偏转器可以是矩形的,或是正方形的,外加对其进行的任意放置和旋转,便可覆盖必要区域。

偏转器都是one-sided,意思是粒子可以从一侧自由穿透偏转器,并只与相反的另一侧进行交互,例如,从偏转器上方落在了它上面时。

Deflectors可具有两种类型:

Reflector(反射器)#

Reflector表示的是一种旨在为粒子提供附加反弹和散射的不可见表面。

偏转器的Restitution(复原)#

偏转器的restitution与粒子的一般restitution(复原)都是基于相同的原理。 在碰撞完偏转器的表面之后,粒子便会以所设值定义的某个角度从其表面反弹:

  • 最小值0意味着粒子不反弹,而是沿偏转器的表面滑动。
  • 最大值1表明弹跳的角度等于粒子下落的角度。
偏转器的Roughness(粗糙度)#

偏转器的roughness也与粒子的roughness特征相似。 该参数会模拟表面的参差不齐,由此使得粒子在碰撞表面时会在不同方向上发生散射。

  • 最小值0意味着表面是平滑的,粒子会被以一致方向散射。
  • 最大值1意味着表面是粗糙的,粒子会有差异有角度地散射。

Clipper(截尾器)#

Clipper是一种可截尾其接触的所有粒子的表面场。 如果粒子系统被意外分散到了无用区域,那就可以通过添加截尾器来对其进行简单又无损的截尾操作,这步操作不进行渲染,不对重新调整整个粒子系统施加额外影响。

基于Mesh的粒子#

可创建基于mesh(网格)的粒子系统。 为此,需将Mesh Cluster(网格簇)添加为ObjectParticles的子节点。 在此之后,网格会由喷射源自动产生。( 如果您不想产生自带网格的粒子,那就可以为粒子清除Nodes(节点)Surfaces(表面)Material(材质)。)

基于Mesh Cluster的粒子
最新更新: 2022-12-14
Build: ()