关节 (Joints)
关节提供了限制,从而消除了物体(body)的自由度,并用于连接成对的body。每个关节都有一个锚点,默认情况下,该锚点位于连接实体的质心之间。每个连接的属性取决于所选的关节类型及其参数。联合参数可以分为两组:
- 通用参数 -所有关节共享的基本参数集。
- 类型特定的参数-每种关节类型的一组特定参数。
也可以看看#
编程实现:
- Joint类
- JointFixed类
- JointHinge类
- JointBall类
- JointPrismatic类
- JointCylindrical类
- JointWheel类
- JointSuspension类 (Deprecated)
- JointPath类
- JointParticles类
用法示例:
添加关节#
假设您有两个分配了物理物体的对象。请记住,物体必须具有指定的形状。要通过 UnigineEditor 使用关节来连接它们,请执行以下步骤:
- 打開 World Hierarchy 窗口。
- 选择第一个要连接的物体
- 转到 Parameters窗口中的Physics選項卡。
-
Joints 部分中,选择适当的关节类型,然后单击Add。
- 在对话框窗口中选择第二个物体的名称,然后单击Ok。
- 在Joints部分中设置关节参数。
您可以通过选中Helpers面板→Physics项目→Joints选项(应启用Visualizer)来启用关节的可视化。
Fixed Joint#
固定关节以严格保持彼此位置的方式连接两个物体。
Fixed Joint
|
Fixed Joint参数
|
此关节的基本约束参数包括:
Rotation 0 | 指定第一个实体相对于锚点的方向。 |
Rotation 1 | 指定第二个实体相对于锚点的方向 |
此关节还具有一组由所有关节类型共享的通用参数。
有关更多信息,请参见JointFixed类描述。 此处。
在我们的物理视频教程中观看固定关节的插图。
Hinge Joint#
铰链关节允许连接的实体在锚点处沿关节的轴旋转。该关节连接了一个有角度的 motor 。
Hinge Joint
|
Hinge Joint参数
|
此关节的基本约束参数包括:
Joint axis | 物体绕其旋转的关节轴的坐标。 |
Angular damping | 铰链接头的角阻尼系数。 |
Angular limit from | 铰链停止运动范围内的最小角度。角度在[ -180 中以度为单位指定; 180 ]范围。 |
Angular limit to | 铰链停止运动范围内的最大角度。角度在[ -180 中以度为单位指定; 180 ]范围。 |
Angular spring | 弹簧刚度系数确定关节抵抗旋转的强度。如果将刚度设置为 0 ,则会禁用弹簧。 |
Angular angle | 附加角弹簧的目标角度。弹簧(如果已启用)将尝试使连接的物体之间保持指定的角度。 |
電機參數 | |
---|---|
Angular Torque | 角度电机的最大扭矩。 0 拆下电动机。 |
Angular Velocity | 附加角电机的目标速度。 |
此关节还具有一组由所有关节类型共享的通用参数。
有关更多信息,请参见JointHinge类描述。可以在此处找到使用铰链接头连接两个物体的示例。
在我们的物理视频教程中观看铰链关节设置的图示。
Ball Joint#
球形接头提供了一个连接对象可以围绕其旋转的点。
Ball Joint
|
Ball Joint参数
|
此关节的基本约束参数包括:
Joint axis | 关节轴的坐标。 |
Angular limit angle | 摆动角度限制,指定连接的物体可以从关节轴弯曲多少。 |
Angular limit from | 围绕关节轴扭转范围内的最小角度。角度在[ -180 中以度为单位指定; 180 ]范围。 |
Angular limit to | 在围绕关节轴的扭曲范围内的最大角度。角度在[ -180 中以度为单位指定; 180 ]范围。 |
此关节还具有一组由所有关节类型共享的通用参数。
有关更多信息,请参考 JointBall类描述。可以在此处找到使用球形接头连接两个物体的示例。
在我们的物理视频教程中观看球形关节设置的图示。
Prismatic Joint#
棱形关节允许沿关节轴移动。该关节具有连接的线性 motor 。
Prismatic Joint
|
Prismatic Joint参数
|
此关节的基本约束参数包括:
Joint axis | 关节轴的坐标。 |
Linear damping | 棱柱形接头的线性阻尼系数。 |
Linear limit from | 物体之间沿关节轴的最小距离。 |
Linear limit to | 物体之间沿关节轴的最大距离。 |
Linear spring | 弹簧刚度系数,确定接头抵抗线性运动的强度。如果将刚度设置为 0 ,则会禁用弹簧。 |
Linear distance | 所连接弹簧的目标线性距离。弹簧(如果启用)会尝试保持连接的实体之间的指定距离。 |
電機參數 | |
---|---|
Linear Force | 连接的直线电动机的最大力。 0 拆下电动机。 |
Linear Velocity | 附加直线电机的目标速度。 |
此关节还具有一组由所有关节类型共享的通用参数。
有关更多信息,请参见JointPrismatic类描述。可以在此处找到使用棱镜连接两个物体的示例。
在我们的物理学视频教程中观看棱柱关节的图示。
Cylindrical Joint#
圆柱关节就像棱柱形关节一样,具有额外的自由度:绕关节轴旋转。该关节具有线性和成角度的电动机。
Cylindrical Joint
|
Cylindrical Joint参数
|
此关节的基本约束参数包括:
Joint axis | 关节轴的坐标。 |
Linear damping | 圆柱接头的线性阻尼系数。 |
Linear limit from | 物体之间沿关节轴的最小距离。 |
Linear limit to | 物体之间沿关节轴的最大距离。 |
Linear spring | 弹簧刚度系数,确定接头抵抗线性运动的强度。如果将刚度设置为 0 ,则会禁用弹簧。 |
Linear distance | 所连接弹簧的目标线性距离。弹簧(如果启用)会尝试保持连接的实体之间的指定距离。 |
Angular damping | 圆柱接头的角阻尼系数。 |
Angular limit from | 围绕关节轴扭转范围内的最小角度。角度在[ -180 中以度为单位指定; 180 ]范围。 |
Angular limit to | 在围绕关节轴的扭曲范围内的最大角度。角度在[ -180 中以度为单位指定; 180 ]范围。 |
Angular spring | 弹簧刚度系数确定关节抵抗旋转的强度。如果将刚度设置为 0 ,则会禁用弹簧。 |
Angular angle | 所连接的角弹簧的目标角度。弹簧(如果已启用)将尝试使连接的物体之间保持指定的角度。 |
電機參數 | |
---|---|
Angular Torque | 角度电机的最大扭矩。 0 拆下电动机。 |
Angular Velocity | 附加角电机的目标速度。 |
Linear Force | 连接的直线电动机的最大力。 0 拆下电动机。 |
Linear Velocity | 附加直线电机的目标速度。 |
此关节还具有一组由所有关节类型共享的通用参数。
有关更多信息,请参见JointCylindrical类描述。 此处。
在我们的物理视频教程中观看圆柱关节的插图。
Wheel Joint#
车轮节用于制造射线铸型的车轮。它连接两个刚性实体:第一个实体是框架,第二个实体是轮子。无需为车轮指定形状:射线投射用于检测车轮与表面的碰撞。该关节连接了一个有角度的 motor 。
物体的顺序,通过车轮接头事项连接!
-
如果物体使用 UnigineEditor 连接:
- 选择车架。
- 添加车轮接头。
- 指定要安装的轮子。
-
如果物体以编程方式连接:
- b0是一个框架。
- b1 是一個輪子.
Wheel Joint |
Wheel Joint参数 |
此关节的基本约束参数包括:
悬架轴(Axis 0) | 垂直轴的坐标,其作用类似于提供转向和阻尼的圆柱关节。 |
车轮主轴轴(Axis 1) |
车轮绕其旋转的水平轴的坐标。它们在以下字段中设置:
|
Linear damping | 悬架的线性阻尼系数。 |
Linear limit from | 悬架行驶下限。 |
Linear limit to | 悬架行驶上限。 |
Linear spring | 悬架弹簧刚度系数确定关节抵抗垂直线性运动的强度。如果将刚度设置为 0 ,则会禁用弹簧。 |
Linear distance | 目标悬架高度。悬架弹簧(如果启用)会尝试保持指定的高度。 |
Angular damping | 车轮旋转的角阻尼系数。 |
電機參數 | |
---|---|
Angular Torque | 角度电机的最大扭矩。 0 拆下电动机。 |
Angular Velocity | 附加角电机的目标速度。 |
此关节还具有一组由所有关节类型共享的通用参数。
有关更多信息,请参见JointWheel类描述。有关说明使用车轮节的示例,请参见使用车轮节创建汽车文章。
在我们的物理视频教程中,观看如何使用Wheel关节模拟车轮。
Suspension Joint#
悬架用于制造车辆的车轮悬架。它连接两个刚性实体:第一个实体是框架,第二个实体是轮子。该关节连接了一个有角度的 motor 。
-
如果物体使用 UnigineEditor 连接:
- 选择车架。
- 添加悬架接头。
- 指定要安装的轮子。
-
如果物体以编程方式连接:
- b0是一个框架。
- b1 是一個輪子.
Suspension Joint
|
Suspension Joint参数
|
此关节的基本约束参数包括:
悬架轴(Axis 0) | 垂直轴的坐标,其作用类似于提供转向和阻尼的圆柱关节。 |
车轮主轴轴(Axis 1) |
车轮绕其旋转的水平轴的坐标。它们在以下字段中设置:
|
Linear damping | 悬架的线性阻尼系数。 |
Linear limit from | 悬架行驶下限。 |
Linear limit to | 悬架行驶上限。 |
Linear spring | 悬架弹簧刚度系数确定关节抵抗垂直线性运动的强度。如果将刚度设置为 0 ,则会禁用弹簧。 |
Linear distance | 目标悬架高度。悬架弹簧(如果启用)会尝试保持指定的高度。 |
Angular damping | 车轮旋转的角阻尼系数。 |
電機參數 | |
---|---|
Angular Torque | 角度电机的最大扭矩。 0 拆下电动机。 |
Angular Velocity | 附加角电机的目标速度。 |
此关节还具有一组由所有关节类型共享的通用参数。
有关更多信息,请参见JointSuspension类描述。可以在此处找到使用悬架关节连接两个物体的示例。
有关悬架和车轮关节之间的区别,请参见我们的有关物理的视频教程。
Path Joint#
路径关节用于将刚体附加到路径体,并使其沿该路径移动。该接头可用于使火车沿着轨道移动。该关节具有连接的线性 motor 。
将形状分配给刚体,然后再将其连接到路径体!
使用此關節連接的物理物體的順序很重要!
- 如果物体使用 UnigineEditor 连接:
- 选择刚体。
- 添加路径关节。
- 指定路径物体。
- 如果物体以编程方式连接:
- b0 是一個 BodyRigid。
- b1 是一個 BodyPath。
Path Joint
|
Path Joint参数
|
此关节的基本约束参数包括:
Rotation | 指定物体相对于路径的方向。 |
Linear damping | 路径关节的线性阻尼系数。 |
電機參數 | |
---|---|
Linear Force | 连接的直线电动机的最大力。 0 拆下电动机。 |
Linear Velocity | 附加直线电机的目标速度。 |
此关节还具有一组由所有关节类型共享的通用参数。
有关更多信息,请参见JointPath类描述。可以在此处找到使用路径关节连接两个物体的示例。
我们的物理视频教程显示了如何使用“路径”关节将刚体连接到路径体。
Particles Joint#
粒子关节用于将衣服物体或绳索物体固定到刚性物体,布娃娃物体或虚拟物体。
物体的顺序,通过粒子连接要点连接!
-
如果物体使用 UnigineEditor 连接:
- 选择刚体,布娃娃体或虚拟体。
- 添加粒子关节。
- 指定布料物体或绳索物体。
-
如果物体以编程方式连接:
- b0 是一個 BodyRigid / BodyRagdoll / BodyDummy。
- b1 是一個 BodyCloth / BodyRope。
Particles Joint
|
Particles Joint参数
|
此关节的基本约束参数包括:
Threshold | 确定将布料或绳索物体的顶点固定到另一个物体的距离。 |
Size | 指定将布料或绳索物体的顶点固定到另一个物体的区域。 |
此关节还具有一组由所有关节类型共享的通用参数。
有关更多信息,请参见JointParticles类描述。可以在此处找到一个示例,该示例说明了使用粒子关节连接衣服物体。
我们的物理视频教程展示了如何使用“粒子”关节将绳索或布料连接到其他物体。
共同关节参数#
通用关节参数
|
所有关节,无论其类型如何,都有一些共同的参数:
Enabled | 指示是否启用关节的标志。 |
Collision | 一个标志,指示是否在连接的物体之间启用碰撞检测。 |
Anchor | 约束关节运动的锚点位置。默认情况下,锚点位于连接的实体的重心之间。 |
Linear restitution |
关节的线性刚度。定义补偿两个物体之间线性坐标变化的速度。将物体拉开时,恢复力控制施加在两个物体上的力的大小,以使它们的锚点再次对齐。
1 的最大值可能导致物理不稳定(因为施加的力过大)。 |
Angular restitution |
关节的角刚度。定义补偿两个物体之间角度变化的速度。当物体彼此相对旋转时,恢复力控制施加到两个物体的力的大小,以使它们的锚点再次对齐。
1 的最大值可能导致物理不稳定(因为施加的力过大)。 |
Linear softness |
关节的线弹性。定义在拉伸关节时是否将实体的线速度平均化。
|
Angular softness |
关节的角度弹性。定义在扭曲关节时是否将实体的线速度平均化。
|
Max force | 可以在关节上施加的最大力。如果超过此限制,则关节会断裂。默认值为 inf ,即关节是不可破坏的。 |
Max torque | 可以施加在关节上的最大扭矩。如果超过此限制,则关节会断裂。默认值为 inf ,即关节是不可破坏的。 |
Number of iterations | 关节像碰撞一样被迭代计算。此参数指定用于求解关节的迭代次数。请注意,如果此值太低,则会影响计算的精度。 |
马达和弹簧#
关节可以具有与之关联的电动机和弹簧。
弹簧尝试使物体与关节保持一定的距离(线性)或角度(角度)。特定弹簧的性能取决于其刚度和阻尼系数。
电动机通过向关节的自由度施加扭矩(或力),使与关节连接的物体彼此相对运动或旋转。有 linear 和 angular 个电动机会向关节施加有限的力,推动或旋转连接的物体。
电动机具有两个参数:
- Target velocity
- 达到该速度的最大力(或扭矩)。
这是现实生活中的电机非常简单的模型。但是,在建模电动机时非常有用,该电动机在连接到关节之前先用齿轮箱减速。此类设备通常是通过设置目标速度来控制的,并且只能产生最大功率以达到该速度(这对应于关节处可用的一定量的力)。
要启动角度电动机,请执行以下步骤:
-
设置angular velocity-电动机的目标角速度,该值确定电动机可以旋转的速度。
- 正值-电动机逆时针旋转。
- 负值-电动机顺时针旋转。
-
设置angular torque-电机达到目标速度所施加的最大转矩。该值确定电动机达到最大速度的速度。
- 0 禁用电动机。
- 如果提供负值,则将使用 0 。
要启动线性电动机,请执行以下步骤:
-
设置linear velocity-电动机的目标线速度,该值确定电动机可以推动多快。
- 正值-电动机向前推动。
- 负值-电动机向后拉动。
-
设置linear force-电机达到目标速度所施加的最大力。该值确定电动机达到最大速度的速度。
- 0 禁用电动机。
- 如果提供负值,则将使用 0 。
汽车#
车辆在实时游戏中很重要,因此,将分别对其进行描述。有两种模拟移动车辆的方法。每种方法都有对应的关节类型,用于将车轮连接至车身。
- 第一种方法使用suspension joint并假定将车轮表示为具有形状的物理物体。由于每个车轮都具有对撞机形状,因此可以正确处理与地面上的物体的碰撞。例如,这种汽车在路缘上平稳行驶。这种方法需要进行更多的计算,并且在需要更精确的仿真时尤其是对于阶状地面和形状复杂的车轮时应使用。
- 第二种方法使用wheel joint并假定车轮是虚拟的。车轮不会与路面碰撞。取而代之的是,将射线从车身投射下来以检测表面不平整。在这种情况下,不能正确处理地形的陡峭变化。这种方法比第一种更快,并且可以为平滑地形提供可接受的结果,例如用于赛车模拟。但是,在越野地形上,它可能无法正常工作。
两个关节都有一个与它们关联的 motor ,它使车轮旋转并向前推动车辆。