Advanced Animation Technology
Animation Blend
- LERP:插值,在两种动画(clips)之间插值
根据两个动画的速度计算权重
Align Blend Timeline:把两个循环动画的时间归一化再插值
Blend Space
1D Blend Space:Directional Movement
- 多个采样点进行插值
2D Blend Space:两个1D正交
- 因为多个动画clips进行blend会比较费,所以选取离当前点最近的三个动画clips,然后使用重心坐标进行插值
Skeleton Masked Bleding
有些动作只会影响上半身或者下半身
将两种动画拼在一起
Additive Blending
在这个动画中,不仅作用到动画的局部,而且只存动画的变化量,而不存绝对量
作为修饰
但Additive Blending很容易造成不正常的结果
Animation State Machine(ASM)
比如跳跃情况,有三个状态,起跳,空中(jump loop),落地
ASM Definition
Cross Fades:平滑切换、frozen切换
Cross Fades Curve
Layered ASM:多层次状态机:角色身体的不同部分做不同的动画状态机
Animation Blend Tree
使用树来做运算
LERP Blend Node
Additive Blend Node
使用blend tree来计算当前ASM下的一个pose
- Blend Tree Control Parameters:node search、named variable、control structure
Animation Kinematics
Inverse Kinematics(IK)
Forward Kinematics(FK)正向运动学:是在给定所有关节角度的情况下计算链接结构(如一节人体的关节)的末端的空间位置的过程。这个过程比较简单,且是具有唯一解的
Inverse Kinematics反向运动学: 它是在给定末端的空间位置的前提下,求解关节需要成多少角度。 这个过程就较为困难,一般情况下,逆运动学问题没有解析解,而是会有很多或无限多个解(比如确定一个手的位置,然后反向去算其他joint的位置)
End-effector:添加到一个骨骼上,使得这个骨骼可以一直在一个期望的位置(比如贴地的效果)
Two Bones IK:两个骨骼的IK,大腿和小腿作为two bones,问题是会有多个解;解决方式是添加一个reference vector,在这个方向去找解
多joint的IK很复杂,自由度太高,高维非线性方程很难实时运算、可能有很多解、单一解、无解
首先判断能否到达终点
Constraints of Joints:人形骨骼的运动范围是有一个约束的
Heuristics Algorithm启发式算法
CCD(Cyclic Coordinate Decent):依次固定除了end-effector的每个joint,然后使end-effector变换到最接近target的位置
Optimized CCD1:对每个joint添加tolerance regions
Optimized CCD2:越靠近叶节点旋转复度越大,越靠近根节点,旋转复度越小
FABRIK (Forward And Backward Reaching Inverse Kinematics)
先强行把end-effector拉到目标点,然后更改骨骼的方向,然后依次修改对应的joint和骨骼直到根节点,这是一次forward
backward就是再把根节点拉回原来的位置,再做类似上面的操作
迭代多次
都要设置一个tolerance
FABRIK with Constraints:为每个joint设置一个可以旋转的角度范围,然后强行拉点的时候呢,不一定拉到target,而是拉到这个角度范围在target平面上投影的一点
Multiple End-Effectors
IK with Multiple End-Effectors:使用上面那个方法会使得骨骼偏来偏去
Jacobian Matrix:是个逐渐逼近的过程(会在物理那一part详细讲)
Other IK Solutions
Animation Pipeline
Facial Animation
Key Pose Blending
Morph Target Animation:记录下每个部分相对于中性表情的位置,这样就可以自由地组合
facial skeleton
UV Texture Facial Animation
Muscle Model Animation
Retargeting
采集一套动画可以应用到很多模型上
忽略骨骼之间的offset
apply的是相对于原始的binding的joint的位移
Align Movement by Pelvis Height
Retargeting with different skeleton hierarchy:在两个相同骨骼之间的所有骨骼进行一个映射
Unresolved problems
模型自穿插问题
自我接触约束问题(如鼓掌需要双手接触)
target character的平衡
Morph Animation Retargeting