MAX Reactor之复合约束、点到点、铰链约束

reactor中的简单约束有3种:Springs(弹簧约束),UnearDashpots(阻尼约束)和Angular DaShp0ts(角阻尼约束)。复合约束有6种: Point-to-Point Constraints(点对点约束),Point-to-Path Constraints(点对路径约束),Hinge(合叶约束),Prismatic Constraints(棱镜约束),Car-Wheel Constraints(车与轮约束)和Rag Doll Constraints(布娃娃约束) 。

1、如何建立一个复合约束?

简单约束只用加到两个刚体上就可以用了。

而复合约束还需要有约束解算器(constraint solver),首先,同简单约束一样,为两个几何物体建立出刚体集合,并将此两物体加入到约束中;

然后,增加一个约束解算器,并将刚体集合(rigid body collection)加入到约束解算器器中,就算是完成了复合约束。

约束解答器的作用是将复合约束放到一个特殊的刚体收集器中,并使所有这些约束一起工作。约束解答器只有与一个有效的刚体收集器对应时才有效,这一刚体收集器中的刚体就是约束解答器中的约束控制的对象。无效的约束解答器在视图中显示为红色。若禁止一个约束解答器的运行,则其中所有的约束都不会被模拟。

解释:上面的RB collection只能指定一个刚体集合,而下面的Constraints就可以指定多个约束。

Deactivation Threshold 失效临界值

需要注意的是,一个解算器只能对应一个刚体集合,但可以添加多个复合约束。

复合约束具有以下一些共有属性:
Strength and Tau (强度和Tau值):这两项支配一个约束保持自身生效的难易程度。

Strength:约束保持自身生效的推动力,这一参数控制给予约束中各对象推动力的百分比,若这个力足够大,约束就能保持下去。

Tau:当约束发生"漂移"(被连接对象的状态令约束不能继续)时加入的校正力,这一参数控制给予约束中各对象校正力的百分比。

Breakable Constraints (可破约束):超过特定阈值时失效的约束,例如一扇门的铰链当用力踢时就会断裂。

Breakable (可破):勾选此复选框,约束变为可破约束。

Linear (线性):约束失效的临界线性推动力的大小。

Angular (角性):约束失效的临界角性推动力大小。

2、什么是点对点(Point To Point)约束?

点-点约束是最简单的复合约束。它允许我们将两个对象连接到一起,或将一个对象与坐标系中的一点连接在一起。它使其约束的对象共享坐标系中的一点,对象可以相对对方自由旋转,但始终共用一个连接点。

reactor提供两种点-点约束的形式Limited Point-To-Point Constraints (受限点-点约束)和Stiff Springs (硬弹簧)。有限点-点约束可具体指定子对象相对父对象旋转的限度。硬弹簧约束与普通的点-点约束只有一点不同:它为其约束对象之间指定具体距离,就好像它们是连接在一根杆子的两端,用渔线相连,虽然他们可以各自转动和运动,但他们之间的距离是一定的。

这需要每个对象上各有一点,这两点间的距离固定且分离,每个对象可绕它上在的一点自由旋转。

Constraint Type (约束类型)选项组

选择要添加到场景中的点-点约束类型,共有3种

Standard (标准):默认选项。

Limited (受限):这一类型可限制子对象相对父对象旋转的角度。

Stiflf Spring (硬弹簧):这一类型保持对象约束连接点间有一定的距离。

Limited (受限)选项组

确定子对象相对父对象绕X,、Y,Z轴旋转的限度,对于每个轴均有
个最小(Min)限度(逆时针)和最大(Max)限度(顺时针),其后的Display 复选框用于打开或关闭视图中的受P艮程度显示。


Stiff Spring (硬弹簧)选项组

Length 长度:两连接点间要保持的距离,若想使用当前连接点间的距离作为弹簧的长度,单击Set (设置)按钮。

Display(显示)选项组 Size (尺寸):改变视图中显示的约束受限程度的标志的大小,默认值为1.0。

2、什么是合叶(Hinge)铰链约束?

铰链约束允许我们模拟两个对象间类似铰链的效果。我们可为每个对象指定其转动轴的位置和方向,在模拟时,两个对象的转动轴将始终保持相配,从而使这两个对象绕同一个轴旋转。我们也可模拟一个对象绕坐标系中一个轴旋转的效果。还可以限制对象绕轴旋转的角度,比如设置一扇门只能推开到某种程度,这一限制是针对垂直于对象旋转轴设置的。

铰链约束的大部分参数与点-点约束相同。

上面是Hinge的属性,其中:

Parent与Child---------指定父与子刚体

Align Space To-----将转轴对齐到,有四个选项:child body(子刚体)、child Space(子空间)、Parent Body(父刚体)、Parent Space(父空间),选了后轴将自动移动到对应位置。

Lock Relative Transform ----------锁定相关变化


Limited (受限)选项组
限制对象间的旋转角度。
Min Angle (最小角度):限制对象间旋转的最小角度。
Max Angle (最大角度):限制对象间旋转的最大角度。
Friction (摩擦):指定对象绕轴旋转时受到的摩擦,仅对受限铰链。

要想让铰链约束象门一样只在一个轴向上活动,就必须让它的铰链轴转动到合适的位置,对铰链约束对象进行修改,在其属性中找到Parent Space(父空间)或Child Space(子空间),这时,约束轴就会以绿色显示出来,你可以将其旋转到门轴的角度。

相关文章

react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom...
react 本身提供了克隆组件的方法,但是平时开发中可能很少使...
mobx 是一个简单可扩展的状态管理库,中文官网链接。小编在接...
我们在平常的开发中不可避免的会有很多列表渲染逻辑,在 pc ...