跳转到内容

Shortest Path

通过点的 Distribution 找到起点和终点之间的最短路径来生成路径。

算法通过以下方式计算最短路径:

  1. Input Path 的给定位置开始。
  2. Distribution 中搜索邻近点。默认情况下是最接近的 10 个点,但也可以基于 Search Distance
  3. 选择最接近终点位置的邻近点并移动到它。
  4. 循环步骤 2 和 3,直到路径到达终点位置。

使用 Text Shape 生成多条最短路径。

Common Attributes +

Input Shape - 连接一个 Shape 以从中生成起点和终点位置。

Count - 设置要生成的路径数量。

Start Travel - 设置 Shortest Path 起点沿 Input Shape 的位置。如果 Count 大于 1,连接一个 Behaviour 以变化每条路径的位置。

End Travel - Shortest Path 终点沿 Input Shape 的位置。如果 Count 大于 1,连接一个 Behaviour 以变化每条路径的位置。

Use Search Radius - 默认情况下,使用最接近的 10 个点来计算最短路径——勾选 Use Search Radius 后,可以使用 Search Radius 进行更精细的控制。

Search Radius - 设置搜索「最短路径下一步应行进到的点」的最大半径。

Use Levels - 勾选时,确定使用 Input Shape 的哪个层级来创建起点/终点位置。

Level Mode - 选择影响网格层级的哪个/哪些层次。

  • Custom… - 手动设置 Custom Level
  • Text (Lines) - 与 Text Shape 一起使用,将影响每个
  • Text (Words) - 与 Text Shape 一起使用,将影响每个单词
  • Text (Characters) - 与 Text Shape 一起使用,将影响每个字符

如果使用包含字符串 TEXTText Shape 作为 Input ShapeLevel Mode 可用于确定起点/终点位置从何处创建/创建到何处。例如,如果设为 Text (Characters),起点和终点必须都位于每个单独字母(TEXT)上,而如果设为 Text (Words),起点和终点可以沿整个单词的任何位置生成。例如,起点可以位于第一个 T 上,而终点位于 X 上的某个位置。

Custom Level - 设置自定义层级。

Points Distribution - 选择一个 Distribution 来为最短路径算法创建搜索点。

Shortest Path 支持 Viewport 设置 中的 Draw Debug Information 选项,可用于预览 Points Distribution 中的点。

  1. 创建一个 Ellipse
  2. 将其 Radius 设为 200,200
  3. 创建一个 Shortest Path
  4. 连接 ellipse.id→shortestPath.inputShape。
  5. 将 Shortest Path 的 Count 设为 20
  6. 右键单击 Start Travel 属性,选择 Add Behaviour > Random
  7. 将 Random 的 Maximum 设为 1
  8. 更改 Shortest Path 上 Random Distribution 的 Seed 值。

可以使用 Mask Distribution 确保只有 Shape 内部的点才会被考虑用于最短路径。