RagDoll Body
RagDoll物体使能反向运动学和死亡序列的程序动画骨骼动画人物。这种体型其实是一组刚体代表通过关节连接在一起的角色的每个骨骼。这些关节限制骨骼相对于彼此的运动,提供逼真的外观。
也可以看看#
- BodyRagdoll 类
- 说明物理的视频教程的片段RagDoll物体的逆运动学
分配RagDoll物体#
通过将 RagDoll物体分配给对象统一编辑器执行以下步骤:
- 打开 World Hierarchy 窗口。
- 选择一个网格蒙皮要为其分配 RagDoll物体的对象。
-
转到 Parameters 窗口中的 Physics 选项卡并分配一个物理物体通过选择 Body -> RagDoll 到选定的对象。
- 设置body名称,参考下一节创建RagDoll。
创建物理RagDoll#
有两种方法可以创建 RagDoll:
- 自动生成。
- 手动创建.
将 body 分配给 Mesh Skinned 后,第一步是创建一个 Rigid body,它将代表物理模拟中的每个骨骼。
目前,所有骨骼都是free ,这意味着没有 Rigid body 与它们关联。要自动生成 RagDoll,即刚体和近似形状以及连接它们的关节,应单击 Create 按钮。
自动生成基于以下参数执行:
近似形状#
如果选中 Capsule shape 框,可以使用 Convex hull 或 Capsule 来近似骨骼:
- Capsule 提供非常快速的物理模拟和连续碰撞检测。
- Convex hull 提供更准确的近似值。
如果需要任何其他形状,则应进行近似手动.
Total Mass#
全部的大量的RagDoll 将自动分布在所有近似骨骼的形状中。通过分布,形状占据的体积被考虑在内。如果此后更改了质量,则会重新计算所有形状的质量。反之,如果改变形状质量,则总质量也相应改变。
Approximation Error#
如果使用凸包来近似骨骼,则结果可能包含过多的碰撞几何细节。通常,这是不必要的,因为高度详细的形状不会提供明显的视觉差异,同时会显着影响性能。近似误差可以控制生成的凸包中的顶点数:
- 该值越低,越准确和靠近啮合近似形状。
- 1 的最大值提供了可能无法覆盖所有网格体积的非常粗略的近似值。
如果使用胶囊来近似字符,则近似误差的低值提供更精确的形状方向。
Volume Threshold#
创建 RagDoll 时,很少模拟小骨骼(例如手指骨骼)。它们太微不足道了,无法改变整个物体的运动,因为它们的质量和体积不足以改变整个物体的运动。体积阈值允许将所有体积太小的相邻小骨骼合并为一个形状:
- 通过 0 的最小值,所有骨骼无一例外都以刚体和形状表示。
- 通过 1 的最大值,近似形状很大并且仅跟随主要骨骼。此卷中包含小骨骼,但在物理模拟中不考虑它们的个别变换。
体积阈值定义了是否应该单独模拟所有骨骼直到最小的骨骼或合并为更大的形状
|
骨骼的物体层次结构#
创建 RagDoll 后,所有以刚体和形状表示并指定其运动的骨骼在层次结构中都标记为绑定。所有不参与物体运动的小骨头,都标记为空闲。如果自动生成的形状太松散,可以手动调整它们直到近似值足够令人满意。
近似骨骼的物体和形状的层次结构可以保存到 *.node保存到文件中并从中加载。集合层次结构也可以从 RagDoll物体中删除并重新创建。
手动创建RagDoll#
也可以手动创建 RagDoll。在这种情况下,可以使用任意形状来近似 RagDoll物体的骨骼。要手动创建 RagDoll,请执行以下步骤:
- 创建一个 Node Dummy,它将成为未来 RagDoll 层次结构的父节点。
- 添加一个 Dummy Object 并使其成为子节点。为它分配一个 Rigid body 并以它所代表的骨骼命名物体。之后,用任何必要的形状近似骨骼。
- 为 RagDoll 骨骼创建所有 Rigid 实体和形状。等级并不重要,重要的是物体的名字——它们应该和骨骼的名字一样。如果体名与骨名不匹配,将导致错误。
- 将父节点导出到 *.node 文件中。
- 选择角色并为其 RagDoll物体加载此文件。
- 添加和设置连接 RagDoll 内刚体的关节。
启用RagDoll动画#
当角色撞到障碍物或中弹身亡时,需要关闭骨骼动画播放,根据物理规律真实模拟角色坠落。取消选中 Frame-based 框时,RagDoll物体不再由骨骼变换驱动。它根据Rigid body 动力学(质量所有刚体,代表 RagDoll 的一部分,速度阻尼等),联合约束和刚性的运动。
运动刚性#
Rigidity 参数允许额外限制 RagDoll 的运动。它决定了 RagDoll 部分的运动有多均匀。为了实现这一点,每个单独刚体的线速度和角速度都根据从所有刚体插入的总速度进行校正。
- 通过 0 的最小值,刚体中表示的所有 RagDoll 部分独立且不受限制地移动(当然,关节约束除外)。这给人一种松散和松软运动的印象。
- 通过 1 的最大值,RagDoll 零件以均匀和僵硬的方式移动,这似乎过度约束。
组合动画和反向运动学#
预先准备的动画的问题在于它不提供适当的环境交互。例如,在上山或下山时,角色的脚不会稳固地着地。或者当它爬上梯子时,手必须紧紧抓住梯级。这种效果是通过组合动画实现的:为基本骨骼播放运动动画,而对较小的骨骼(例如脚或手)进行物理模拟。
可以为每个近似骨骼的刚体禁用基于帧的动画。刚体不遵循特定的骨骼变换,而是在其自身重量下下垂并连接到其下方的碰撞对象。
例如,腿部的物理驱动运动需要禁用整个肢体的骨骼动画:大腿、小腿和脚。给定层次结构中最低骨骼(脚)的位置,反向运动学允许正确定位骨骼链。因此,当角色走路或跑步时,他的脚会与地面发生碰撞,而膝盖则根据关节约束弯曲和伸直。