物理关节是一组以逻辑树组织的关节体,其中每个父子关系都反映了相互约束的相对运动。
物理关节的主要目的是为涉及关节一个物理组件,允许刚体组件之间建立动态连接,通常允许一定程度的运动,例如铰链。 更多信息
见术语表的商业和工业非游戏应用提供真实的物理行为。 例如,与常规关节相比,它们使模拟机械臂和运动链更容易。
在将两个物理体连接到一个关节的最基本场景中,您可以构建一个关节或使用常规关节,如下表所述。
关节设置 | 使用常规关节进行设置 | |
---|---|---|
层次结构 | • 游戏对象 + 关节体 • 游戏对象 + 关节体 |
• 游戏对象 + 刚体 • 游戏对象 + 刚体 + 关节 |
关系 | 游戏对象具有层次结构关系(父子关系)。 注意:物理引擎使用 Unity 变换层次结构来表示父子关系。 |
游戏对象不一定具有层次结构关系。 注意:在更高级的场景中,您可以自由地模拟运动链。 |
物理体 | 两个游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、航点等。 游戏对象的功用由附加在其上的组件定义。 更多信息 见术语表都具有关节体组件,该组件定义了物理体属性(除其他外)。 |
两个游戏对象都具有刚体一个允许游戏对象受到模拟重力和其他力的影响的组件。 更多信息 见术语表组件,该组件定义了物理体属性(除其他外)。 |
关节 | 子游戏对象的关节体包含关节属性,您可以在其中选择关节类型。 | 其中一个游戏对象还具有关节组件。 关节属性取决于您添加的关节组件类型。 |
但是,两种情况下产生的整体行为并不相同,尤其是当您将此原则扩展到多个物理体和关节时。
如果您尝试使用常规关节来模拟运动链(例如,在布娃娃、机械臂或具有多个并发铰链的机制中),物理引擎一个模拟物理系统方面的系统,以便对象可以正确加速并受到碰撞、重力和其他力的影响。 更多信息
见术语表可能会遇到无法解决的场景,并使某些约束无法满足。 这可能会导致运动出现卡顿和不真实。 关节不仅看起来很奇怪,而且也无法用它们来模拟真实设备,阻碍了对工业设计进行建模或原型设计的工作。
要在 Unity 中构建物理关节,您必须在关节组成的每个游戏对象中添加一个关节体组件。 每个关节体组件允许您在一个地方配置
相应游戏对象的物理体属性。 基本上,它的质量以及它对物理环境的反应方式。
将游戏对象与其父游戏对象链接的关节类型和属性(关节根部除外)。
以下示例显示了一个简单的物理关节,它包含 3 个物理体和 2 个关节
要在 Unity 中构建这样的关节
创建 3 个游戏对象的线性层次结构。
将关节体组件添加到这 3 个游戏对象中的每一个。
配置每个关节体组件(根据上图)
游戏对象 | 关节体组件配置 |
---|---|
A(根部) | 您只能为游戏对象 A 定义物理体属性。 |
B | 您可以定义 • 游戏对象 B 的物理体属性。 • 与游戏对象 A 的关节类型和属性。 |
C | 您可以定义 • 游戏对象 C 的物理体属性。 • 与游戏对象 B 的关节类型和属性。 |
注意:根据定义,关节只能有一个根部,不允许具有运动链。 如果您需要运动链,请使用常规关节。
限制:如果您要构建非常长的关节链,您仍然必须注意,Unity 支持的最大层次结构深度为 64 个游戏对象。
您可以通过关节体选择和配置四种关节类型
固定关节一种完全受约束的关节类型,允许两个物体保持在一起。 实现为弹簧,因此可能仍会发生一些运动。 更多信息
见术语表:在物体之间设置刚性、不可破坏且不可拉伸的链接。
棱柱关节:防止除沿特定轴线滑动以外的所有运动。
旋转关节:允许绕特定轴线旋转(如铰链)。
球形关节:解剖学上的关节,允许两个摆动和一个扭转。
根据设计,关节中所有锁定的自由度都是不可破坏且不可拉伸的。 为实现此目的,物理引擎使用简化的坐标空间,其中物体仅具有关于解锁运动轴的坐标。
相反,对于常规的迭代关节,物理引擎强制执行最大坐标空间,该空间仅在求解器能够在一组迭代后收敛的情况下才能保证约束的满足。
查看 Unity 的机器人演示项目,以使用关节关节实验串联连杆机器人臂。