朝向扭曲
在制作人物的八方向运动时,一般可以使用混合空间来制作,但是混合出来的动画和人物的移动方向角度可能会不匹配或者出现左脚绊右脚的情况,所以可以考虑使用朝向扭曲来解决上述问题。

主要关心的参数为节点的LocomotionAngle和LocomotionDirection这两个输入参数以及SpineBones和IKFootBone这两个节点设置。
朝向扭曲的过程
主要更新节点为FAnimNode_OrientationWarping这个节点中的EvaluateSkeletalControl_AnyThread这个方法,现在来对这个方法进行解析。
简单分析,内容可能又误差,其中对调试部分没有特殊注明
1 | void FAnimNode_OrientationWarping::EvaluateSkeletalControl_AnyThread(FComponentSpacePoseContext& Output, TArray<FBoneTransform>& OutBoneTransforms) |
总结朝向扭曲的过程为:
- 通过计算获取需要朝向的角度(代码开始那一大坨,包括预测和插值)
- 对根节点进行旋转同时对脊椎骨进行反向旋转
- 对FootRoot进行旋转同时对脚步IK骨进行反向旋转
- 对设置好的骨骼进行排序








