zhouqijie

约束概述

无约束刚体有6个自由度,能在3个坐标上平移并能绕3个笛卡尔轴旋转。约束(constraint)限制了物体的运动,削减了物体自由度。

1.点对点约束

最简单的约束模型。刚体中的某个点与其他刚体指定点对齐。

可用于模拟吊灯等。


2.刚性弹簧

刚性弹簧约束(stiff spring constraint)类似点对点约束,但是需要两个点保持一定的距离。


3.铰链约束

铰链限制物体旋转运动只能绕铰链旋转,受限刚体只剩一个旋转自由度。

铰链分为无限制铰链和有限制铰链。
铰链还可以设置阻尼。


4.活塞约束

活塞(piston)限制刚体只能在一个轴上平移,受限刚体只剩一个平移自由度。

可以是有限制或者无限制的。
可以选择限制和不限制刚体绕活塞平移轴旋转。
可以含有或者不含摩擦力。


5.其他约束

受限刚体只能在一个平面移动。

滑轮约束中,一根假想的绳子经过滑轮连接两个物体,物理沿绳子按杠杆比率移动。


6.约束链

Jason:由于约束求解程序的迭代性质,一串刚体长链并不容易稳定模拟。约束链(constraint chain)是一种特殊的约束群组,内含供求解程序使用的物体连接信息。,令求解程序能稳定地处理这些约束链。


7.布娃娃

Jason:布娃娃(ragdoll)实质是一种物理系统驱动的程序式动画(procedual animation)

布娃娃中的刚体使用约束互相连接。布娃娃的约束为了模拟真实人体的关节而特别设计。我们通常使用约束链提高模拟的稳定性。

Cre:Unity中通常使用CharacterJoint约束组件来模拟关节约束。

布娃娃的刚体和骨骼关节未必是一对一关系,因为一般骨骼关节的数量比布娃娃的刚体数要多很多,需要一个映射刚体至关节的系统。映射系统还要能判断那些不受刚体驱动的额外关节的正确姿势。


8.富动力约束

约束可以加入动力。引擎其他系统例如动画系统可以间接地控制布娃娃刚体的运动。

在无其他力的影响下,各刚体完全追踪动画骨骼的运动。但如果有其他力介入,会使关节偏离原来的动画运动。

CRE:高级的人偶系统例如PuppetMaster,可以自定义肌肉力度也可以把刚体钉在动画骨骼上,还可以设置骨骼混合比。

(END)