引言
Havok™ 物理约束是一种特殊的专用图形类型,可以链接到静态或动态的世界锚点图形,用于创建铰链、球窝接头和其他约束类型系统。 这些约束图形限制了被物理图形链接的所有对象的移动,为物理模拟增添真实感。 锚点图形可以无需父项地绑定到世界中(静态锚点),或以成为某实体子项的方式绑定到对象(动态锚点)。
约束和锚点图形
约束图形位于 Havok™ 图形组,锚点可在对象组中找到,从图形创建面板将这些图形拖拽到场景中即可完成添加。
连接物理对象
使用约束和锚点图形,可将附有刚体组件的实体物理链接到另一个此类实体。 必须首先将锚点放置在场景中,然后还要以从图形列表中拖拽实体的方式添加实体。
在场景中添加约束后,该约束可以通过链接实用工具链接到实体锚点:
注:一个 Havok™ 约束同时只能链接到两个锚点。
下图显示了实体、约束和锚点间的关系。
术语
Tau: 较大的推动或推力可拉伸所有约束。 约束的 tau 值决定了以物理时间步进为单位的恢复速度。 值越高,约束恢复越快。 因此,tau 值影响两个点之间的恢复力强度。 取值范围为 0.0f 到 1.0f。 1/sqrt(系统中约束的数量)是不错的选值。
Strength(强度): 对象速度的强度因数。 通常,1.0 是完美的取值,仅当很多对象被约束在一起时,该参数才可能要设得略低,以实现更高的稳定性。
约束属性
约束属性会根据您所选择的物理约束类型而改变。 除了位置和图形设置等常见属性外,以下为其主要属性。
Constraint Type(约束类型): 使用下拉列表选择所需约束类型,您可以选择:
共有属性
大部分约束共有很多属性,所有约束体的 Breakable(可破)和 Malleable(可延展)设置都一样。 以下为共有属性:
Breakable Settings(可破设置):
Is Breakable(可破): 如果您希望物理关节能被一定的力打破,就将该属性设为 TRUE,然后更改阈值。
Threshold(阈值): 约束被打破的阈值。 这是关节能承受而不破裂的最大力度。 该属性的取值范围为 0 到 无限大。 该属性仅在可破属性为 TRUE 时生效。
Revert Velocity On Break(破裂时倒转运动): 该属性为布尔值。 该属性用于设定是否倒转受影响刚体的运动方向。 该属性仅在可破属性为 TRUE 时生效。
Malleable Settings(可延展设置):
Is Malleable(可延展): 如果您希望关节更具延展性,就将该属性设为 TRUE。
Strength(强度): 关节强度。 0.0 为自由延展,1.0 为不可延展。 使用该属性可让您的关节移动和延展得更多。
以下是对应约束类型的专有属性。
球窝接头
球窝接头约束关节可以模拟球窝结合,即一个刚体在第二个刚体的基座中绕中心点旋转,该中心点位于需要放置关节的位置。
除了位于约束共有属性中的共有属性之外,这一约束不包含任何属性,
铰链
铰链约束可在 2 个刚体之间模拟类似铰链的动作。 铰链约束的作用是限制,尤其是限制被连接刚体可旋转的最大角度,这有利于避免贯通。
以下是与铰链物理约束有关的属性。 铰链约束属性列表中也呈现图形的朝向组。
Limits Settings(限制设置):
Use Limits(使用限制): 该属性设为 TRUE 即激活约束的限制。
Limit Max(最大限制): 该属性设置约束的最大限制角度,以度为单位。 0 ⇐ 最大限制 ⇐(360 + 最小限制)。
Limit Min(最小限制): 该属性设置约束的最小限制角度,以度为单位。 (-360 + 最大限制)⇐ 最小限制 ⇐0。
要查看所有约束共有的其他属性,请检查约束共有属性。
人偶
人偶约束关节限制了依附对象与另一参照对象之间的运动角度;有助于创建人和动物的肢体关节。
以下是与人偶物理约束有关的属性。
Type Properties(类型属性):
Cone Angle(锥体角度): 该属性设置了锥体绕扭转轴运动的角度,以度为单位。
Plane Cone Min Angle(平面锥体最小角度): 该属性设置了围绕负平面轴的限制锥体的开放角度,以度为单位。
Plane Cone Max Angle(平面锥体最大角度): 该属性设置了围绕正平面轴的限制锥体的开放角度,以度为单位。
Twist Min Angle(扭转最小角度): 该属性设置了绕扭转轴旋转的最小角度,以度为单位。
Twist Max Angle(扭转最大角度): 该属性设置了绕扭转轴旋转的最大角度,以度为单位。
Max Friction Torque(最大摩擦扭矩): 该属性设置了约束所具有的摩擦量。
Angular Limits Tau Factor(角度限制 Tau 因数): 该属性设置了限制角度的 Tau 因数。 默认值为 0.8。 见术语部分对 TAU 的描述。
要查看所有约束共有的其他属性,请检查约束共有属性。
硬弹簧
硬弹簧约束将刚体分开一定距离。 硬弹簧作用于每个刚体中的一个点。 刚体可绕该点自由移动和旋转,但两点相对距离固定不变。
除了位于约束共有属性中的共有属性之外,这一约束不包含任何属性,
约束示例
以下示例简单地演示了如何使用约束系统。
铰链约束类型
使用铰链约束类型的示例
铰链示例
创建 2 个实体,为每个实体添加一个 Havok™ 刚体组件。 底部的实体要设成固定类型,使其不会移动或掉落;顶部实体需为动态。 将顶部实体放在如下图所示的位置,然后创建 2 个锚点图形并将它们分别放置在两个实体中,在世界和图形列表中都要放置在实体中。
然后创建一个约束,将其放置到您希望建立约束的位置。
将约束类型属性设为铰链。 然后使用链接工具,将约束链接到两个实体中的 2 个锚点。 按下运行按钮查看模拟运行状况。
使用铰链的绳索
创建一条使用铰链的链绳的示例。
要创建这一链绳,先创建 6 个水平排列的实体,然后在每个实体中放置一个 Havok™ 刚体组件。 设置 2 端,使其固定在 Havok™ 刚体组件中。 创建 6 个锚点图形,在场景和图形列表中将其分别放置到每个实体的中心。
创建 5 个 Havok™ 约束图形,分别放置在 6 个实体间的空隙中。 将约束类型属性设为铰链。
使用链接工具;选择第一个约束图形,然后链接约束两侧的两个锚点。 重复这一步骤,直到将所有约束与锚点链接,如下图所示:
球窝接头约束类型
球窝接头约束关节示例。
要创建球窝接头关节,先创建 2 个实体,然后在每个实体中放置一个 Havok™ 刚体组件。 在刚体组件中,将底部的实体设为固定类型。 放置一个锚点图形,在场景和图形列表中都要把它放在实体内。
创建一个 Havok™ 约束;将约束类型设为球窝接头。 将其放置到 2 个实体当中,然后使用链接工具链接 2 个锚点图形。
硬弹簧约束类型
硬弹簧约束关节示例。
创建 5 个实体,在每个实体中分别放置一个 Havok™ 刚体组件。 将它们垂直摆放,如下图所示。 将顶部的实体刚体设为固定。
创建 5 个锚点,并在场景和图形列表中都放到图形内部。
创建 4 个约束,将每个约束都设为硬弹簧类型,并将约束放置到实体之间。 使用链接工具,将约束与毗邻的锚点链接起来。 按下运行按钮查看模拟结果。
摆球示例
要创建摆球效果,
先创建一个实体,将实体设为球体,并添加刚体组件。
创建 2 个锚点,一个没有父项,另一个应成为子项并放置在实体中心。 具体设置见图。
创建一个约束并放置到没有父项的锚点下方。
使用链接工具,将约束链接到 2 个锚点。
然后运行示例,观看球体前后摆动。