惯性混合。

跟传统混合不同,它只需缓存输入的最后几帧pose,根据速度预测未来的pose,拿这个pose和新的pose进行混合。
优点是不必对来源进行Evaluate,性能会更好(动画蓝图状态机一般调用都比较深)。

使用方式:

需要Dead BlendingNode节点,用来缓存和处理混合的请求。
普通的混合节点(Blend,BlendMulti,BlendBy,LayeredBlend等等)都可以设置为惯性插值。
上面混合节点请求惯性混合时,会把请求发送给它后面的(OutPose方向)最近的Dead Blending节点(Dead Blending节点的InPose一直在缓存用于混合的Pose)。

状态机Transition也可以设置惯性混合。
状态机的切换是立刻的,如果有Transition,则会记录Transition信息到FAnimNode_StateMachine的ActiveTransitionArray中。
FAnimNode_StateMachine的Update和Evaluate时都会判断是否处于过度状态,根据混合模式决定是否要将之前的状态链接进来(FAnimNode_StateMachine::UpdateTransitionStates).
如果是惯性插值则会忽略之前状态。
所以Transition的惯性混合由新状态里找到的DeadBlending处理。

使用时可以在每个状态机最靠近OutPose的地方增加DeadBlending节点,确保能捕捉到所有的请求。
状态机外层可以在后处理(IK等)之前增加DeadBlending节点。不过在根节点加应该也没问题。

工作方式

平时一直处于缓存Pose的过程。
当收到请求后,开始惯性混合,并将混合的Pose作为OutPose

数学原理

考虑一个运动到停止的过程,应当只受阻尼力影响。如果将弹簧回复力考虑进去,则会出现速度降到0后再反弹。

Pasted image 20260130102336.png