Table of Contents

缎带与轨迹

中级 美术 程序员

要创建缎带(Ribbon) 和轨迹(Trail),Stride 会将网格数据构建为连接粒子的条带,而不是单个四边形。缎带和轨迹通常用于创建剑挥砍等视觉效果。

media/particles-tutorials-ribbons-0.jpg

在下图中,几个粒子(表示为红点)被渲染为单独的四边形(蓝色方块):

示意图:单个四边形

在下图中,通过连接粒子并在相邻粒子之间渲染四边形来创建条带:

示意图:粒子缎带

缎带与轨迹的区别

缎带和轨迹都会生成一个平面,该平面沿一条连接排成一行的相邻粒子的轴延伸。这条线定义了该平面的其中一个轴。区别在于缎带始终面向摄像机,而轨迹不会。

下面的 gif 展示了从不同摄像机角度观看时缎带(红色)和轨迹(黄色)的不同行为。注意缎带如何不随摄像机移动而变化;它固定在空间中。

缎带与轨迹

对粒子排序

要创建缎带和轨迹,你通常需要将粒子排序成一定的顺序。如果你不对粒子进行排序,它们会杂乱地连接,如这张示意图所示:

示意图:未排序的粒子/particles-tutorials-ribbons-2.png

以下是未排序的粒子在运行时的外观示例:

粒子没有按顺序连接,而是在粒子之间杂乱地跳转。(这与透明度混合(alpha-blended)的四边形在没有正确排序时出现的问题相同。)

要对粒子进行排序,请在 Particle System > Source > Emitters 下更改 Sorting 属性。

对粒子排序

如果你的粒子具有相同的寿命属性,并且每帧生成不超过一次(在每秒 30 个粒子或更少的情况下通常如此),你可以按年龄对它们进行排序。

然而,如果你每秒生成多个粒子,或者你的粒子寿命各不相同,按年龄排序就无法提供一致的顺序,因为排序参数在各帧之间会发生变化。在这种情况下,你应该按顺序对粒子进行排序。为此,你需要添加一个生成顺序初始化器。为此,在实体属性中,在 Particle System > Source > Emitters 下,在 Initializers 旁边点击 绿色加号按钮(添加)并选择 Spawn Order。

添加生成顺序初始化器

这会为发射器添加一个生成顺序初始化器。它没有任何属性,但它为粒子提供了一个我们可以据此排序的 SpawnID。

Note

按深度排序可能在少数情况下有效,但这无法保持不同帧之间的顺序。我们不建议在大多数情况下使用它。

纹理坐标

与作为单个四边形的公告板不同,缎带和轨迹在所有粒子上共享一个表面。要定义纹理如何映射到表面上,请在 Particle System > Source > Emitters > Shape 下更改 UV Coords 属性。

UV coords 属性

  • AsIs:纹理按段映射,在每两个粒子之间复制并拉伸同一个四边形。这有时对材质设置中的翻页动画(flipbook)有用。

    As-is 纹理映射

  • Stretched:纹理在轨迹或缎带的第一个和最后一个粒子之间拉伸。UV Factor 定义纹理在整个轨迹或缎带上出现的次数(1 = 一次)。

    Stretched 纹理映射

  • DistanceBased:纹理基于缎带或轨迹的实际世界长度(而不是粒子数量)重复。UV Factor 定义以世界单位计的距离,超过该距离后纹理会重复

    基于距离的纹理映射

平滑缎带与轨迹

你可以在相邻粒子之间添加额外的段,以平滑粒子之间的线条。为此,请在 Particle System > Source > Emitters > Shape 下更改 Smoothing 属性。

  • None — 不进行平滑,只创建连接两个粒子的一个段。这会创建带有尖锐角度的轨迹和缎带。

    示意图:粒子平滑

  • Fast — 使用 Catmull-Rom 插值(维基百科)在粒子之间添加额外的段,创建更平滑的效果。你可以用 Segments 属性设置段数。

    示意图:粒子平滑

  • Best — 通常创建最平滑的效果,但需要更多 CPU。它沿控制轴在每三个连续粒子周围计算一个外接圆,然后在圆上添加额外的控制点,使段保持弧形。对于第一个和最后一个段,只有一条弧可以遵循,但对于中间段,来自两个不同圆的两条弧会重叠;当点接近第二个粒子时,Stride 会从第一条弧和第二条弧插值控制点。你可以用 Segments 属性设置每两个粒子之间的段数。

    示意图:粒子平滑

这段视频展示了三种平滑方法之间的区别。注意最右边的轨迹(使用 Best 方法)稍微更圆一些,更接近剑挥动的实际路径。

media/particles-tutorials-ribbons-6.gif

示例项目

要查看使用缎带和轨迹的项目示例,请尝试 Stride 附带的 Ribbon Particles Sample。

另请参阅