2d游戏中的动画,最简单直接的实现方式就是一帧一帧的静态图片依序播放,也被称作精灵动画(sprite)。
考虑到大量图片导致的内存消耗问题,发展出了一些2d动画精灵压缩方式。例如一个人物走动的动画,可以将身体、胳膊、腿单独切成一个个碎片图,然后在每一帧里,用同样的身体碎片图,配上不同的胳膊、腿,形成完整的一帧。动画只需要导出身体、胳膊、腿的碎片图即可。这样既节省了动画里大量的不变部分,同时每一帧里哪些透明背景区域也不需要存储到图里了。
最早的3d游戏,例如doom,采用的仍然是精灵动画的方式。游戏里的人物只是一张张朝向摄像机的2d图片(人物模型只是一个矩形),人物的走动动画就是一系列2d图片的顺序播放。对于低精度和远距离物体,例如成百上千的士兵,体育场观众等,这种方式仍然适用。
接下来有了刚体分层动画(rigid hierarchical animation),仍举一个人物走动的例子,将人物模型分成身体、胳膊、腿几个刚体(不会产生形变),这些刚体各自由一堆顶点组成。动画里每一帧记录这些刚体的位置、角度等。刚体分层动画的缺陷是,因为刚体不会因为相互位置关系的影响产生形变,在刚体和刚体的连接处,因为一个刚体位置角度的变化,就有可能使原本严丝合缝的连接,