m_weight.m_blend_weight[i]=sum_weight,是为了存储下一轮混合时A应该占多少权重。
AnimationComponent::blend的逻辑是先拿B跟A混合,存到A里;再拿C跟A混合,存到A里,最终得到三者的混合结果。
假设pose A B C的权重分别是0.5 0.3 0.2
第一次混合时B的归一化权重是:0.3/(0.3+0.5)(也就是cur_weight),A的归一化权重就是5/8。
另外记录sum_weight为0.8,用于当作下次混合是A的权重(此时的A存储的已经是AB的混合结果)
然后第二次混合时C的归一化权重是0.2/(0.2+0.8),A占0.8。
最终得到的结果跟我们平时计算0.5*A+0.3*B+0.2*C是一样的。
This post has received 1 vote up.