如果您正在做一种更实用的游戏,通常您不会使用动态引擎编写角色平衡中心之类的代码。这将是极其困难的,特别是如果您要结合柔软的身体和肌肉动力学,并且可能会将机器的大部分资源用于平衡两足动物,例如
相反,游戏通常主要采用硬编码类型的角色动画,当角色行走、奔跑、跳跃等时,艺术家为骨架提供图形和动画帧。角色的平衡感和运动感是由一个精心制作的艺术家的触觉,而不是大量物理计算的结果。
骨架基本上是一个简单的变形器。它像磁铁一样工作,通过软变形影响周围的顶点/像素。确定骨骼对其周围角色的影响区域的过程称为蒙皮。没有什么非常现实的:它看起来很现实,而不是表现得现实。它类似于 3D 网格:一个空心表面。它不是在原子和分子水平上建模事物:它看起来很逼真,而不是现实。
前向运动学然后旋转这些骨骼,使部分角色跟随。反向运动学是一种以 IK 链上具有 IK 目标/效应器的方式操纵这些骨骼的方法。通常你把角色摆成一个僵硬的人体模型——如果你想让一个人体模型伸手去拿东西,你必须分别旋转他的肩膀、肘部和手腕。IK 让您可以将整个手臂变成一条链,只需指定手腕的位置,让解算器自动旋转肘部和肩部。这使您可以摆出更像人类的姿势,我可以抓住某人的手腕并拉扯它,然后他们的手臂的其余部分也随之而来。
以艺术家驱动的传统方法作为坚实的基础,当一个角色抓住一根动态绳索时,它的运动不是固定的,例如,需要紧紧抓住。那是艺术家动画停止并开始计算角色动作的时候。
在这种情况下,您将使用角色抓住绳索的手作为 IK 目标,以使他的整个身体跟随,并在每个关节/骨骼上相应地设置旋转约束,以防止他向后弯曲手臂并折断它或像驱魔人一样旋转他的头 180 度。一个不受约束的 IK 解算器可能会做这些事情,因此旋转约束会阻止解算器做人体无法做的事情,而您的高级游戏逻辑只是专注于使用 IK 移动角色的手(以绳子为父级)求解器使身体跟随。
例如,当角色被霰弹枪击中时会应用类似的情况,并且您需要他使用布娃娃物理学在空中飞行——同样的想法。
尝试让角色完全由反向运动学目标和物理控制的游戏是非常不寻常的。我见过一些愚蠢的尝试,比如一个有趣的游戏,你的角色是个酒鬼,你的全部目标只是试图让他走回家,而不是摔倒而死。
因此,除非您的全部目标和抱负是尝试模拟像人体这样复杂的事物的动态,否则我建议从传统的艺术家驱动方法开始,并谨慎地在角色上使用这些动态。这也是 3D 包的做法,其中大部分角色由艺术家设定关键帧,但有时某些部分可能部分由动态计算,如头发的移动。
也许您可以逐步提高计算的自动化程度,而让艺术家的手动操作越来越少。但是,我不会从尝试将其全部自动化的方法开始,尤其是除非您精通动力学和逆运动学概念。