Unity 动画系统深度解析:补间与帧动画

发表于 2019-04-20 19:30 386 字 2 min read

本文系统探讨了 Unity 中的动画类型,深入分析了补间动画的缓动方程、IK、骨骼动画原理,以及帧动画的优缺点与 Shader 优化方向。

补间动画 (Tween Animation)

补间动画由关键帧和补间函数(Ease Functions)组成,运行时根据时间 tt 计算当前状态。

  • 优势: 资源占用极小,表现平滑,不受帧率波动影响。
  • 缺陷: 运行时计算量与动画复杂度成正比。
  • 优化: 尝试将动画计算迁移至 GPU (GPU Skinning)。

缓动方程 (Tween Formula)

基础公式:state=f(t)state = f(t) 常用物理公式:s=V0t+12at2s = V_0t + \frac{1}{2}at^2

在插值插件(如 DOTween)中,通常使用归一化参数: tween(t, b, c, d) 对应:时间、初始值、变化量、持续时间。

骨骼动画原理

骨骼状态信息通常以矩阵形式存储。计算出当前帧的骨骼矩阵后,根据顶点权重信息,在顶点着色器(或 CPU)中计算顶点跟随骨骼运动后的最终坐标。


帧动画 (Frame Animation)

以固定帧率播放序列贴图。

  • 优势: 表现力上限极高,能够实现复杂的全特效表现。
  • 缺陷: 内存占用巨大(贴图序列),帧率不足时会有明显断层感。
  • 优化方向:
    • 合批: 利用图集减少 DrawCall。
    • 位图混合: 在 Shader 中混合多帧贴图,实现平滑过渡。
    • 噪点图: 利用噪点图在 GPU 中实现动态扰动。

总结

动画的本质是控制点与时间函数的关系: Animation = ControlPoint + f(t) 合理选择补间与帧动画,能在保证表现力的前提下最大限度压低包体和内存开销。

© 2024 - 2026 sdoo @red-panda-dev
Powered by theme astro-koharu · Inspired by Shoka