HumanIK 如何集成到游戏中?
游戏和 HumanIK 之间的典型数据流如下所示:
- 为 HumanIK 提供游戏中一个或多个角色的关节的位置和旋转。这些位置通常源自由动画子系统提供的正向运动学动画,但也可能来自其他子系统,如碎布玩偶物理引擎。
- 反向运动学和重定目标解算器在 HumanIK 内修改角色关节的位置旋转。
- 检索生成的位置和旋转,然后将游戏角色设置为使用检索的数据。
下图概括说明了此数据流:
HumanIK 不是自包含的动画引擎,相反,它与现有动画子系统协同工作,充当一个附加层,来修改和重用现有动画剪辑。HumanIK 解算器将游戏角色的 FK 位置作为输入,并创建这些角色的新 FK 位置作为输出。此方法具有以下重要影响:
- 编程人员可以根据游戏的当前情况选择是使用还是跳过 HumanIK 解算器。
- 可以根据需要多次重新迭代 HumanIK 解算,将多层反向运动调整混合在一起。这样可以创建 IK 调整的模块单元以反映所涉及的移动的语义元素,并在不同情况下重用这些单元。
例如,一个 IK 过程可以使角色伸展以接触目标对象,而另一个 IK 过程可以使角色旋转其头部、颈部和胸部以注视目标对象。您可以一起使用这两个控制器,也可以重用后者控制器以用于其他目的,如使角色跟踪在天空中飞行的飞机,或在向玩家角色射击时,使角色跟踪玩家在整个屏幕内的移动情况。
通过 HumanIK 解算器的每个过程都是完全独立的。您可以使用完全不同的参数进行设置,仅在有限的关节集上运行每个解算等等。