跳转到内容

Forge Dynamics Shape

Forge Dynamics 是一个 2D 物理引擎,基于 Erin Catto 开发的出色 Box2D

Forge Dynamics 入门

可以通过 Create > Demo Scenes > Dynamics 菜单或 Try Pro 按钮,使用 Starter 许可证测试 Forge Dynamics。虽然可以体验该功能,但保存和渲染将被阻止。有关更多信息,请参见 Licence Types

  • Shape
  • Mask
  • Bodies
  • Initial State
  • Advanced

Common Attributes +

Start Frame - 设置模拟开始的帧。

Gravity - 设置重力强度。

Ground Mode - 确定模拟如何响应合成边界。

  • Off - 忽略合成边缘。
  • Composition Bottom - 与合成底部碰撞。
  • Composition Edges - 与合成的所有边缘碰撞。

Ground Friction - 设置一个值来确定摩擦力对合成边缘碰撞的影响程度。较高的摩擦力值将导致形状更快地失去速度。

Velocity Iterations - 纠正施加于 Shapes 的力的强度。值越高,结果越精确。

Position Iterations - 在碰撞期间纠正 Shapes 位置的强度,以减少重叠。值越高,结果越精确。

Fields - 将 Field 添加到模拟中。

Collision Events - 将 Collision Event 添加到模拟中。Collision Events 也可以通过 Body 选项卡下的设置在”每个 Body”的基础上添加。

添加到 Body 的任何 Collision Events 将覆盖添加到 Forge Dynamics Shape 的 Collision Events。

参见 Common Attributes

Bodies - 连接要包含在模拟中的 Shapes。可以通过 Scene Window 将 Shapes 拖入此属性,使用 right click > Add Body > select Shape,或通过 Connection Anchor 添加。

Bodies 列表包含启用/禁用它们、设置特定设置或从模拟中移除它们的选项。

您可以通过 Bodies 列表中的齿轮图标访问”每个 Body”的设置:

  • Input Shape - 用作 Body 的 Shape。
  • Friction - 设置一个值来确定摩擦力。较高的 Friction 值将导致 Shapes 更快地失去速度。
  • Bounce - 设置一个值来确定 Shapes 的弹性程度。较高的 Bounce 值将导致 Shapes 弹得更高/更远。
  • Density - 设置一个值来确定 Shapes 的密度。较高的 Density 值将赋予 Shapes 更重的外观,并导致它们需要更大的力来移动。
  • Gravity Scale - 增加/减少 Shape 选项卡下 Gravity 属性对 Shapes 的影响。值为 -1 将反转 Shape 的 Gravity 设置,值为 2 将使其加倍。
  • Body Type
    • Dynamic - Bodies 将根据为模拟设置的属性移动。
    • Still - Bodies 将保持在原位,虽然它们将参与碰撞,但位置或旋转不会受到影响。
    • Kinematic - Body 的位置和旋转将由 Input Shape 上的任何关键帧动画决定。
    • Kinematic Hybrid - Body 的位置和旋转将由 Input Shape 上的任何关键帧动画决定,直到最后一个关键帧,此时它将加入模拟。

只有关键帧动画支持 Kinematic Shapes。通过 Behaviours 的程序化动画不受支持。

  • Constrain Hybrids - 此设置将向 Hybrid Body 附加一个弹簧,以便当其动画结束时,它将弹跳至停止。
  • Hybrid Frequency - 以 Hz 为单位设置弹簧的频率。
  • Hybrid Damping - 设置弹簧恢复静止的速度。较高的值将导致较少的次级运动。
  • Sensor - Sensor 是一种可以触发碰撞事件但不会触发碰撞的形状。
  • Collision Shape Type - 设置用于碰撞的形状。这些形状使用”最佳猜测”自动设置,但也可以手动设置。对于更复杂的场景,更简单的形状可以帮助提高性能,但会降低模拟的准确性。可以通过在 Viewport Settings 中选择启用了 Draw Debug InformationForge Dynamics Shape 来在 Viewport 中显示碰撞形状(确保图层已解锁)。
    • Box - 使用 Shape 的边界框。
    • Circle - 使用一个”最佳拟合” Shape 的圆。
    • Simple Polygon - 使用一个”最佳拟合” Shape 的多边形。最多可使用 12 条边的多边形。如果无法使用 12 边形来近似 Body,则将使用方框代替。
    • Complex Polygon - 通过将 Shape 分割为更小的夹具(子 Bodies)来创建碰撞形状,以支持凹形 Shapes。
    • Chain - 对开放轮廓/路径使用此设置。这是单面碰撞,找到正确的设置取决于轮廓的绘制方式。作为指南 — 当使用 Edit Shape 工具选择轮廓时,指示方向的小箭头出现的那一侧,就是会发生碰撞的那一侧。
    • Chain (Reversed) - 对开放轮廓/路径使用此设置。当 Chain 对轮廓不工作时,很可能它是”颠倒”的,因此被排除在碰撞之外。在这种情况下请尝试此设置。
    • Soft Body - 使用此设置模拟可变形对象。

Chain Collision Shape Type 旨在用于开放路径。由于开放路径没有体积,它们无法受力,因此无论其 Body Type 如何,都将始终保持静态。虽然闭合路径可以设置为 Chain,但同样的原理适用。

  • Max Fixtures Per Body - 当 Collision Shape Type 设置为 Complex Polygon 时,设置要创建的最大”夹具/子 Bodies”数量。
  • Stiffness - 当 Collision Shape Type 设置为 Soft Body 时,以 Hz(每秒振动次数)设置弹簧频率。较高的值使软体更坚硬。
  • Damping - 当 Collision Shape Type 设置为 Soft Body 时,设置阻尼比以控制振荡消退的速度。
  • Pressure - 当 Collision Shape Type 设置为 Soft Body 时,设置用于体积保持的内部压力。较高的值将粒子向外推以保持身体的形状。
  • Shape Matching - 当 Collision Shape Type 设置为 Soft Body 时,设置一个影响,将 Soft Body 粒子移回其原始位置,帮助在碰撞使 Shape 变形后保持形状一致性。
  • Particle Radius - 当 Collision Shape Type 设置为 Soft Body 时,设置用于模拟软体的粒子大小。较小的值提供更精细的细节但粒子更多,但也可能更难控制。
  • Max Stretch - 当 Collision Shape Type 设置为 Soft Body 时,设置弹簧连接的最大允许拉伸量,以静止长度的倍数表示。较低的值在冲击下能更好地保持形状,但可能不够灵活。值为 2 意味着弹簧可以拉伸到其静止长度的两倍。
  • Live Forever - 勾选后,Body 将始终包含在模拟中。
  • Lifespan - 设置一段持续时间(以秒为单位),之后 Body 将从模拟中移除。
  • Starts Asleep - 勾选后,Body 将保持休眠状态,直到另一个形状与其碰撞。
  • Allows Sleep - 勾选后,Body 在变为休眠状态时将被允许休眠。这可以帮助提高性能。
  • Starting Velocity - 设置在 Body 首次出现的时刻施加于 Body 的速度。
  • Starting Rotational Velocity - 设置在 Body 首次出现的时刻施加于 Body 的旋转速度。
  • Position Damping - 设置 Body 位置上的阻尼。较高的值将导致更快的减速。
  • Rotation Damping - 设置 Body 旋转上的阻尼。较高的值将导致更快的旋转减速。
  • Use Maximum Velocity - 勾选后,所有 Bodies 的速度将被限制为 Maximum Velocity
  • Maximum Velocity - 设置 Bodies 可以达到的最大速度。
  • Use Maximum Rotational Velocity - 勾选后,所有 Bodies 的旋转速度将被限制为 Maximum Rotational Velocity
  • Maximum Rotational Velocity - 设置 Bodies 可以达到的最大旋转速度。
  • Collision Groups - 通过输入逗号分隔的字符串(例如 text, rocks)分配碰撞组。这些可以用于过滤 Fields 对单个 Bodies 的影响,或 Bodies 与其他 Bodies 的交互方式。
  • Collides With - 输入逗号分隔的字符串(例如 text, rocks)以指定 Body 与之碰撞的特定 Collision Groups。特殊标记 none 可用于将 Body 排除在任何碰撞之外。
  • Level Mode - 选择要影响的子网格的哪个/哪些层级。参见 Sub-Mesh 了解更多信息。
    • Custom… - 手动设置 Custom Level
    • Text (Lines) - 与 Text Shape 一起使用,将影响每个
    • Text (Words) - 与 Text Shape 一起使用,将影响每个
    • Text (Characters) - 与 Text Shape 一起使用,将影响每个字符
    • All - 影响所有子网格,无论层级如何。
  • Custom Level - 手动设置自定义层级。
  • Constraints - 添加 Constraints
  • Collision Events - 添加 Collision Events

Use Maximum Velocity - 勾选后,所有 Bodies 的速度将被限制为 Maximum Velocity

Maximum Velocity - 设置 Bodies 可以达到的最大速度。

Use Maximum Rotational Velocity - 勾选后,所有 Bodies 的旋转速度将被限制为 Maximum Rotational Velocity

Maximum Rotational Velocity - 设置 Bodies 可以达到的最大旋转速度。

Initial Position Strength - 设置一个力,将 Body 吸引回其起始位置。对该属性设置关键帧可以在模拟过程中将 Bodies 返回其起始位置。

Initial Rotation Strength - 设置一个力,将 Body 吸引回其起始旋转。对该属性设置关键帧可以在模拟过程中将 Bodies 返回其起始旋转。

Starting Velocity - 设置在所有 Bodies 首次出现的时刻施加于所有 Bodies 的速度。

Starting Rotational Velocity - 设置在所有 Bodies 首次出现的时刻施加于所有 Bodies 的旋转速度。

World Scale - 当模拟中存在非常大或非常小的 Shapes 时,使用此选项调整世界比例以改善模拟质量。

Time Step - 设置模拟每秒步进(计算)的次数。较高的值将产生更高质量的模拟,但可能会影响性能。

Cache Solver(按钮)- 缓存 Forge Dynamics 模拟。Cavalry 将播放 Playback Range 以将缓存文件保存到磁盘。保存缓存后,此按钮将变为 Update Cache 按钮。这将覆盖正在使用的任何现有缓存。

Remove Cache(按钮)- 移除保存的缓存文件。这不会从文件系统中删除 .sdcache 文件。

Use File Cache - 勾选后,模拟可以保存到 .sdcache 文件中。这对于较重的模拟实现更快的播放或通过 Cache Offset 实现重定时非常有用。Motion Blur 也需要它。

Cache File Path - 设置缓存文件的保存位置。这在首次缓存求解器时确定,或者使用文件夹图标打开 Finder/Explorer 窗口并导航到现有的 .sdcache 文件。

Cache Offset - 设置缓存的时间偏移。

您可以使用缓存来”倒回”模拟,并在需要时创建循环。为此:

  1. 缓存模拟。
  2. 在模拟刚结束后,为 Cache Offset 设置一个关键帧。
  3. 例如,如果该关键帧设置在第 100 帧,则将播放头移动到第 200 帧(例如再前进 100 帧),然后添加一个值为 -200 的关键帧。

通过在第 200 帧设置值为 -200 的关键帧,您实际上是在要求缓存显示第 200 + -200 帧,即 = 0。即缓存回到了第 0 帧(开始)。

下表说明了 Cache Offset 如何创建回到第 0 帧的循环。

FrameCache Offset ValueEquivalent Value
000
1000100
200-2000

模拟过程中无法更新 Shape 的几何形状。例如:

  • 动画化 Scale
  • 动画化原始 Shapes 的属性(例如 Rectangle 的 Width 或 Ellipse 的 Radius)。
  • 动画化顶点(又名 Path Animation)。
  • 使用 Deformers
  • 动画化像 Convex HullConnect Shape 这样的 Shapes。