移动施法的动画分层
移动施法的动画分层
- 该动画分层的目的就像让你《使命召唤》里的士兵一边奔跑一边换弹夹,而且动作流畅,毫不拖沓。出现在我脑海中的第一个想法是:把奔跑动画放在骨盆及以下部位播放,而把持枪相关的动画放在躯干及以上部位播放。听起来很简单,但如果你想结合奔跑和挥剑动作会怎么样?如果你希望角色在奔跑和站立不动时都能使用相同的动画,又该怎么办呢?
- 接下来我将介绍一种方法:使用角色装备、实时反向动力学(IK)和嵌套混合树来解决上述问题
- 为了说明我们的问题,首先创建一个包含两个层的动画控制器:一个用于腿部,一个用于上半身动画。腿部图层通常有一个处理多方向侧向移动的混合树。然后为上半身图层添加一个 Avatar 遮罩,用来遮掉腿部,然后在该图层上播放一个近战动画。许多教程都是这么做的,然后就到此为止了,但这正是我们开始发现问题的地方。
- 仅仅使用 Avatar 遮罩会导致胸部旋转不正确。
挺直脊柱
- 首先,躯干动画会有不正确的旋转,是因为骨盆的旋转(由于其位于层级结构的上层而影响躯干)不再与技能动画匹配,因为它被遮罩掉了,只受奔跑动画的影响。
- 我们通过使用一个参考 / 代理关节来解决这个问题。这个关节的父级被设置为角色根节点,并通过坐标系调整定位在这个关节的父级下方,但在 Maya(或 Blender,随你喜欢)中,它被约束到了胸部骨骼节点上。这样,当我们从 Maya / Blender 导出动画时,这个关节将获得与胸部完全相同的位置和旋转数据,而不受骨盆的影响。
- 现在,在 Unity 中我们的上半身 Avatar 遮罩里,我们确保包含这个关节,这将为我们留下一个完美的参考,精确显示胸部应有的样子。
- 然后我们使用 IK 来强制胸部匹配这个参考关节。这可以使用 Unity 中的 Chain IK 约束来完成,或者使用像 FinalIK 中的 CCD IK 和 Aim IK 组件来实现。具体怎么做取决于你,只要你能让胸部在每个轴向上都匹配旋转即可。
旋转臀部
- 下一个问题是,当你播放近战攻击时,可能会”折断”你角色的脊椎。挥剑需要传达力量和气势,但如果你在保持臀部笔直的情况下将必要的旋转应用到躯干,你会得到一个不自然的(对你的角色来说可能很痛苦的)脊柱扭转。
- 我们想做的是让身体下半部分随着躯干一起扭转,同时又不干扰脚的位置。我们该怎么做呢?
- 想象一下:你的角色正在向前跑,他们的挥击动作使胸部转向了右侧,同时骨盆也随之转动以支撑动作,但脚仍然需要向前跑。现在,这看起来可能像是他们在向左侧移动,但这个左侧是向前的(见 GIF)。那么我们如何实现这一点呢?
骨盆扭转导致侧向移动
- 想象一个用于侧向移动的普通二维混合树。最简单的形式下,它包含 4 个动画:向前跑、向后跑、左侧移和右侧移。
评论




