动画:朝向适配OrientationWarping

前言

录制_2021_09_02_14_24_43_123

用过动画混合空间的同学肯定遇到过上图这种情况, 多数4方向或者8方向位移的混合空间在其中2个朝向上会遇到如此问题, 如何解决这个问题呢? 一种方式是类似大名鼎鼎的ALS项目的使用额外的动画来完成混合

那么如果没有那么多的动画资源, 甚至只有4方向的动画呢? 本文就此进行研究讨论

OrientationWarping

我们的思路是获取应该旋转的角度, 通过TransoformBone来旋转脊椎线上的骨骼, 因为骨骼有层级关系, 所以我们得先旋转pelvis骨骼, 再把spine骨骼反着转回去, 这样就就把下半身单独旋转了

image-20210902143147611

至于怎么计算角度, 用CalculateDirecton来获取[-180,180]的角度, 然后转换到[0,360]再一顿操作换算成03的4个整形数字(分别对应FRBL,方便blend), 随后计算骨骼旋转所需要的Yaw

image-20210902152544977

image-20210902153104332

最后把这个Yaw构造成Rotator就行了

image-20210902175126237

结合起来就是这个样子

image-20210902175210709

然后要对这个方向整型变量做一个边界处理, 打个比方, 目前是正前方朝向, 那么45度的时候应该还是保持正前方, 在60度的时候再切换成向右, 这样才不会造成中间角度来回抽风的情况


看最后效果

录制_2021_09_02_17_57_09_488

其他方案

UE4自带一个朝向适配节点

image-20210902180528440

image-20210902180632618

原理跟自己用TransformBone怼出来的差不多, 不过毕竟用于生产的话肯定还是一个动画节点来的按安逸更舒服


另外的Strider - Animation Warping这一类的第三方插件也有类似节点

image-20210902180915202