约束概述
无约束刚体有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)