Version: 2022.3
Articulations
Articulation Body component reference

Introduction to physics articulations

A physics articulation is a set of Articulation Bodies organized in a logical tree, in which each parent-child relationship reflects mutually constrained relative motion.

The main purpose of physics articulations is to provide a realistic physics behavior for commercial and industrial non-gaming applications that involve joints. For example, they make it a lot easier than the regular Joints to simulate robotic arms and kinematic chains.

接合设置对比常规关节

在用一个关节连接两个物理体的最基本场景中,您可以构建一个接合或使用常规关节,如下表所述。

接合设置 使用常规关节设置
层级视图 • 游戏对象 + 接合体
   • 游戏对象 + 接合体
• 游戏对象 + 刚体
• 游戏对象 + 刚体 + 关节
关系 游戏对象具有层级关系(父子)。
注意:物理引擎使用 Unity 变换层级视图来表达父子关系。
游戏对象不一定具有层级关系。
注意:在更高级的场景中,您可以自由模拟运动环路。
物理体 两个游戏对象都有一个接合体组件,它定义了物理体属性(等等)。 两个游戏对象都有一个刚体组件,它定义了物理体属性(等等)。
Joint 子游戏对象的接合体包含关节属性,您可以在其中选择关节类型。 其中一个游戏对象也有一个关节组件。关节属性取决于您添加的关节组件的类型。

但是,两种情况下的总体结果行为并不相同,尤其是如果您将此原则扩展到多个物理体和关节。

如果您尝试使用常规关节对运动链进行建模,例如在布娃娃、机械臂或具有多个并行铰链的机构中,物理引擎可能会遇到无法求解的情况并遗留一些无法满足的约束。这可能会导致卡顿和不切实际的运动。这些关节不仅看起来很怪异,而且也不可能将它们用于模拟真实设备,从而阻碍对工业设计进行建模或原型构建。

在 Unity 中构建接合

要在 Unity 中构建物理接合,您必须向构成接合的每个游戏对象添加一个接合体组件。每个接合体组件的配置都可以集中在一个位置进行:

  • 对应的游戏对象的物理体属性。基本上,它的质量及其对物理环境的响应方式。

  • 将游戏对象链接到其父游戏对象的关节的类型和属性(接合的根除外)。

下面的例子显示了一个简单的物理接合,涉及 3 个物理体和 2 个关节:

要在 Unity 中构建这样的接合:

  1. 创建 3 个游戏对象的线性层级结构。

  2. 分别为这 3 个游戏对象添加一个接合体组件。

  3. 配置每个接合体组件(根据上图):

GameObject 接合体组件配置
A(根) 您只能为游戏对象 A 定义物理体属性。
B 您可以定义:
• 游戏对象 B 的物理体属性。
• 与游戏对象 A 连接的关节的类型和属性。
C 您可以定义:
• 游戏对象 C 的物理体属性。
• 与游戏对象 B 连接的关节的类型和属性。

注意:根据定义,一个接合只能有一个根,并且不允许有运动环路。如果您需要运动环路,请使用常规关节

局限性:如果您想构建非常长的接合链,仍需注意 Unity 支持的最大层级深度为 64 个游戏对象。

接合关节类型和自由度

通过接合体,您可以选择和配置四种类型的接合关节:

  • 固定关节:在物理体之间设置刚性、牢不可破和不可拉伸的链接。

  • 棱形关节:阻止除了沿特定轴滑动之外的所有运动。

  • 旋转关节:允许绕特定轴旋转(如铰链)。

  • 球形关节:解剖学关节,允许两个摆动和一个扭转。

接合中所有锁定的自由度在设计上都是牢不可破和不可拉伸的。为了实现这一点,物理引擎使用降维坐标空间,物理体只有关于未锁定运动轴的坐标。

相比之下,对于常规迭代关节,物理引擎采用最大坐标空间,只有当求解器能够在一组迭代后收敛,才能保证满足约束。

物理接合演示

查看 Unity 的机器人演示项目试验带有接合关节的串联机械臂。

Articulations
Articulation Body component reference