动画:朝向适配OrientationWarping
前言
用过动画混合空间的同学肯定遇到过上图这种情况, 多数4方向或者8方向位移的混合空间在其中2个朝向上会遇到如此问题, 如何解决这个问题呢? 一种方式是类似大名鼎鼎的ALS项目的使用额外的动画来完成混合
那么如果没有那么多的动画资源, 甚至只有4方向的动画呢? 本文就此进行研究讨论
OrientationWarping
我们的思路是获取应该旋转的角度, 通过TransoformBone
来旋转脊椎线上的骨骼, 因为骨骼有层级关系, 所以我们得先旋转pelvis
骨骼, 再把spine
骨骼反着转回去, 这样就就把下半身单独旋转了
至于怎么计算角度, 用CalculateDirecton
来获取[-180,180]
的角度, 然后转换到[0,360]
再一顿操作换算成0
到3
的4个整形数字(分别对应FRBL,方便blend), 随后计算骨骼旋转所需要的Yaw
最后把这个Yaw
构造成Rotator
就行了
结合起来就是这个样子
然后要对这个方向整型变量做一个边界处理, 打个比方, 目前是正前方朝向, 那么45度的时候应该还是保持正前方, 在60度的时候再切换成向右, 这样才不会造成中间角度来回抽风的情况
看最后效果
其他方案
UE4自带一个朝向适配节点
原理跟自己用TransformBone
怼出来的差不多, 不过毕竟用于生产的话肯定还是一个动画节点来的按安逸更舒服
另外的Strider - Animation Warping这一类的第三方插件也有类似节点