Animation Blending
 两个动画衔接
Math of blending:LERP:线性插值
 在两个动画之间取关键帧插值
 weight1+weight2等于1
 
 两个动画必须都是循环的,归一化之后能一致
 Blend Space
 在采用空间里的所有动画(clips),必须保持一致循环性,要么都循环,要么都不循环
 
 混合空间的采样点分布是不均匀的,如果在某个地方需要更细腻的表达,可以在对应地方增加一个clips
 
 并非采用全部的clips,根据划分的三角形。通过重心坐标,在邻近的三个顶点插值
 
 有些动画只应用到上半身,有些动画只应用到下半身。如此自由的组合各种上下半身的动画pose

 只存动画的变化量,不存绝对量。无论如何改变skeleton,再改变的基础上应用变化量。
三种blending:
 线性Lerp Blending:全身
 Mask Blengding:局部
 Additive Blending:blending做完后,加上的修饰的差分量
状态机:
 
 frozen模式会先将动画1停住,再让动画2进来
 
 多层状态机,不同的状态机控制模型的不同部位
 
 Animation Blend Tree:动画树
 
 线性插值节点:对每个clips单独输入权重
 
 动画树的核心:定义控制变量,暴露给gameplay系统。(例如速度,朝向,是否受到攻击。。。)
 控制变量会改变动画树的混合行为
控制:1.各种环境参数(速度,血量。。。) 2.事件。当event发生时会修改掉一些动画树内部的标记(类的私有变量)(切换武器)
 
 一般动画,是从根节点往前一层层传递驱动
反向动力学:有约束条件的反向解,例如手抓住一个点。
 End-effector:末端效果器。
 
 例如:移动时踩的非平地,有各种凹凸,希望保持脚始终踩在地上。会有两个Bones IK,模型的小腿和大腿,确定三角形的两条边,踩的目标点位置确定,可以算出距离根节点的位置(第三条边)。确定唯一的三角形。算出大腿和小腿迈出的角度
 
 最后需要一个reference vector,确定方向。否则三角形360度旋转都是正确解
 
 不同的IK
 
 长链IK有多种解
 
 判断骨骼能否到达目标点。1:所有骨骼拉长,向外判断target,2:选出最长的骨骼,其余向内,判断向内target
 
 每个骨骼活动的范围也有限制
 
 CCD算法
 
 CCD优化
 
 
 FABRIK
 
 Retarget
 源角色和目标角色,源动画和目标动画
 骨骼一一对应。
 传递骨骼变化的相对量
 平移,缩放根据骨骼长度等比例变化
 

















