[toc]
什么是帧
在传统的动画中,帧代表的是一秒内播放的图片的数量,其中每个图片代表一帧 在游戏开发中,帧同样也是同样的东西,即每隔渲染 (计算) 的结果是一帧
# 前置概念
# 骨骼动画 / 普通动画
骨骼动画是用来模拟 3D 动画的一种技术,
通过对虚拟骨骼进行插值来计算出每帧下模型的顶点数据 普通动画,比如 2D 动画,实际上是有很直观的帧数据的。
但通常,基于插值的动画数据是会和时间绑定起来的,这个时候,就需要抽象出时间轴上的帧这一概念
# 时间轴上的帧
通过插值计算出来的动画,通常是基于数学公式作为黑盒,时间作为输入,动画数据作为输出而存在的。 所以可以得出这样一个结论,实际的基于插值的动画中,若抽象出帧的概念, 就需要知道每帧在整个动画时间段内的时间点 这样其实就可以用下述代码简单的描述基于时间轴的帧概念
1 | private void UpdateAnimation() |
(编辑器来自 https://github.com/PxGame/XMLib.AM)
-
可以从编辑器里看出,Animation 被抽象成了数个帧,其中每个帧到上一个帧的时间间隔是 0.033s
-
可以从代码中看出,通过帧的下标 (第几帧) 可以计算出当前帧在时间轴上的时间点是多少
-
将时间点传给 Animation, 可以得到对应的动画数据
这样一来,就可以完成 时间 -> 帧 的转换