This page has been translated automatically.
视频教程
界面
要领
高级
实用建议
专业(SIM)
UnigineEditor
界面概述
资源工作流程
设置和首选项
项目开发
调整节点参数
Setting Up Materials
设置属性
照明
Sandworm
使用编辑器工具执行特定任务
如何擴展編輯器功能
嵌入式节点类型
Nodes
Objects
Effects
Decals
光源
Geodetics
World Nodes
Sound Objects
Pathfinding Objects
Players
编程
基本原理
搭建开发环境
使用范例
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Plugins
File Formats
Materials and Shaders
Rebuilding the Engine Tools
GUI
双精度坐标
应用程序接口
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
创建内容
内容优化
Materials
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials
注意! 这个版本的文档是过时的,因为它描述了一个较老的SDK版本!请切换到最新SDK版本的文档。
注意! 这个版本的文档描述了一个不再受支持的旧SDK版本!请升级到最新的SDK版本。

RagDoll Body

RagDoll body 使能反向运动学和死亡序列的程序动画骨骼动画人物。这种体型其实是一组刚体代表通过关节连接在一起的角色的每个骨骼。这些关节限制骨骼相对于彼此的运动,提供逼真的外观。

注意
RagDoll body 只能分配给 Mesh Skinned 对象。

RagDoll animation

布娃娃动画

也可以看看#

分配布娃娃身体#

通过将 RagDoll body 分配给对象统一编辑器执行以下步骤:

  1. 打开 World Hierarchy 窗口。
  2. 选择一个网格蒙皮要为其分配 RagDoll body 的对象。
  3. 转到 Parameters 窗口中的 Physics 选项卡并分配一个物理身体通过选择 Body -> RagDoll 到选定的对象。

    Adding a body

  4. 设置body名称,参考下一节创建RagDoll

创建物理布娃娃#

有两种方法可以创建 RagDoll

将 body 分配给 Mesh Skinned 后,第一步是创建一个 Rigid body,它将代表物理模拟中的每个骨骼。

目前,所有骨骼都是free ,这意味着没有 Rigid body 与它们关联。要自动生成 RagDoll,即刚体和近似形状以及连接它们的关节,应单击 Create 按钮。

注意
为了正确的自动 RagDoll 生成,网格应该处于参考姿势(T 姿势用于类人角色)。如果动画已应用到网格,请使用静态参考姿势应用动画。

自动生成基于以下参数执行:

近似形状#

如果选中 Capsule shape 框,可以使用 Convex hullCapsule 来近似骨骼:

  • Capsule 提供非常快速的物理模拟和连续碰撞检测。
  • Convex hull 提供更准确的近似值。

如果需要任何其他形状,则应进行近似手动.

Approximation with capsules and convex hulls

胶囊和凸包的近似
注意
请记住,物理形状不需要精确地再现网格。粗略近似提供了足够真实和令人信服的物理交互。

总质量#

全部的大量的RagDoll 将自动分布在所有近似骨骼的形状中。通过分布,形状占据的体积被考虑在内。如果此后更改了质量,则会重新计算所有形状的质量。反之,如果改变形状质量,则总质量也相应改变。

近似误差#

如果使用凸包来近似骨骼,则结果可能包含过多的碰撞几何细节。通常,这是不必要的,因为高度详细的形状不会提供明显的视觉差异,同时会显着影响性能。近似误差可以控制生成的凸包中的顶点数:

  • 该值越低,越准确和靠近啮合近似形状。
  • 1 的最大值提供了可能无法覆盖所有网格体积的非常粗略的近似值。

如果使用胶囊来近似字符,则近似误差的低值提供更精确的形状方向。

音量阈值#

创建 RagDoll 时,很少模拟小骨骼(例如手指骨骼)。它们太微不足道了,无法改变整个物体的运动,因为它们的质量和体积不足以改变整个物体的运动。体积阈值允许将所有体积太小的相邻小骨骼合并为一个形状:

  • 通过 0 的最小值,所有骨骼无一例外都以刚体和形状表示。
  • 通过 1 的最大值,近似形状很大并且仅跟随主要骨骼。此卷中包含小骨骼,但在物理模拟中不考虑它们的个别变换。
Minimum volume threshold     Maximum volume threshold
体积阈值定义了是否应该单独模拟所有骨骼直到最小的骨骼或合并为更大的形状

 

骨骼的身体层次结构#

创建 RagDoll 后,所有以刚体和形状表示并指定其运动的骨骼在层次结构中都标记为绑定。所有不参与身体运动的小骨头,都标记为空闲。如果自动生成的形状太松散,可以手动调整它们直到近似值足够令人满意。

近似骨骼的身体和形状的层次结构可以保存.node 并从一个加载。集合层次结构也可以从 RagDoll body删除并重新创建。

Hierarchy of rigid bodies that represent bones

手动创建布娃娃#

也可以手动创建 RagDoll。在这种情况下,可以使用任意形状来近似 RagDoll body 的骨骼。要手动创建 RagDoll,请执行以下步骤:

  1. 创建一个 Node Dummy,它将成为未来 RagDoll 层次结构的父节点。
  2. 添加一个 Dummy Object 并使其成为子节点。为它分配一个 Rigid body 并以它所代表的骨骼命名身体。之后,用任何必要的形状近似骨骼。
  3. RagDoll 骨骼创建所有 Rigid 实体和形状。等级并不重要,只有机构的名称才重要。
  4. 将父节点导出到 .node 文件中。
  5. 选择角色并为其 RagDoll body 加载此文件。
  6. 添加和设置连接 RagDoll 内刚体的关节。

启用布娃娃动画#

当角色撞到障碍物或中弹身亡时,需要关闭骨骼动画播放,根据物理规律真实模拟角色坠落。取消选中 Frame-based 框时,RagDoll body 不再由骨骼变换驱动。它根据Rigid body 动力学(群众所有刚体,代表 RagDoll 的一部分,速度阻尼等),联合约束和刚性的运动。

注意
启用 RagDoll 动画只会影响物理上近似的骨骼。例如,由于以下原因被丢弃的小骨头音量阈值,还是会动。为了防止这种情况发生,网格动画应该停止明确地。

运动刚性#

Rigidity 参数允许额外限制 RagDoll 的运动。它决定了 RagDoll 部分的运动有多均匀。为了实现这一点,每个单独刚体的线速度和角速度都根据从所有刚体插入的总速度进行校正。

  • 通过 0 的最小值,刚体中表示的所有 RagDoll 部分独立且不受限制地移动(当然,关节约束除外)。这给人一种松散和松软运动的印象。
  • 通过 1 的最大值,RagDoll 零件以均匀和僵硬的方式移动,这似乎过度约束。

组合动画和反向运动学#

预支持动画的问题在于它不提供适当的环境交互。例如,在上山或下山时,角色的脚不会稳固地着地。或者当它爬上梯子时,手必须紧紧抓住梯级。这种效果是通过组合动画实现的:为基本骨骼播放运动动画,而对较小的骨骼(例如脚或手)进行物理模拟。

可以为每个近似骨骼的刚体禁用基于帧的动画。刚体不遵循特定的骨骼变换,而是在其自身重量下下垂并连接到其下方的碰撞对象。

例如,腿部的物理驱动运动需要禁用整个肢体的骨骼动画:大腿、小腿和脚。给定层次结构中最低骨骼(脚)的位置,反向运动学允许正确定位骨骼链。因此,当角色走路或跑步时,他的脚会与地面发生碰撞,而膝盖则根据关节约束弯曲和伸直。

Inverse Kinematics

借助反向运动学,无论表面如何倾斜,人物的脚都紧紧地粘在地板上
最新更新: 2022-12-14
Build: ()