动画
补间动画
补间动画是以关键帧以及补间函数组成,在运行时生成当前的动画信息。
优点:能利用少量的资源展现丰富的表现, 不会受游戏帧率波动影响。
缺点:运行时计算,计算量与动画数量,动画复杂度正相关。
优化方向:anim instance 使用 gpu 计算,目前只有骨骼动画适用
补间函数
根据当前时间计算出动画状态。
公式:state = f(t)
常用补间
模拟自然中的物理规则。
匀速运动,加速运动,减速运动
p = (P2 - P1) / T * t
物理公式:
s = V0 t + a / 2 t ^ 2
缓动方程
tween(t, b , c , d)
t(time)、b(beforeMove)、c(changeDistance)及d(duration)
X轴 时间
Y轴 量
对 x 轴归一化处理
X = dx = t / d (0 -> 1)
Y = dy (0 -> 1)
构建函数 y = x ^ 2 , y = x ^ 3 …..
y = 1 - cos(0.5pi X)
y = sin(0.5pi X)
s = b + c * dy
IK
反向动力学
M = Mij * Mpos
骨骼动画
骨骼,蒙皮,关键帧,补间
关键帧存储骨骼的状态信息,骨骼状态信息是矩阵,可参与补间运算。计算出当前时间的骨骼状态后,再更具顶点中记录的权重信息来计算出顶点跟随骨骼运动后的坐标。
帧动画
以固定帧率播放贴图内容的动画。
优点:表现力强,不受限于动画信息的存储。
缺点:贴图内容与动画长度正相关。占用大量内存空间, 播放帧率不稳定时,会失真。
优化方向:贴图合批,前期规划。
位图混合
多张位图混合,控制其中某几张图的滚动形成动画
shader 运行时,混合多帧位图。
运行时不需要计算帧内容
贴图资源大
利用混合让图片内容动起来
运行时可以通过shader 加入额外的控制参数,动画内容受运行时控制。
噪点的利用
噪点图的参数,在随机性上更自然。 贴图可进入 GPU 运算,效率更佳。
状态机
补充
播放,帧率
总结
anim = controlPoint + f(t)