游戏动画的原理是什么

现代的游戏都是以一些角色为中惢通常是人物或是动物,角色想要看上去栩栩如生就必须拥有流畅的,有机的移动效果为解决此问题,产生了多种解决方案如最早的序列帧动画,到最新的蒙皮动画接下来我们了解一下他们各自的原理以及优缺点。

精灵动画(Sprite Animation)是一种电子版的序列帧动画它的誕生起源于最早期的卡通动画,既快速的连续的播放不同的画面来产生角色的动态效果,就像电影胶片一般通过快速切换来产生动画效果。

所谓精灵就是一张张大小相同的位图。通常我们使用带有透明通道的图片格式保存每一个区域都代表这个精灵在某一静止时刻嘚动作体现。下图展示了一个精灵动画的图像:

通常这组序列帧被设计为可重复循环播放用来模拟一个运动周期,比如人物的行走奔跑等循环性的动作

获取精灵动画的位图资源之后,在程序中只需将资源按单个动作图像大小进行切割并存于数组中,在程序循环中根据時间的改变顺序的循环显示不同的精灵动作,就可以实现出角色的动画效果

这种动画技术的优点是通俗易懂,使用简单缺点是一套動作通常需要很多动作片段组成,占用磁盘空间大完全没有可扩展性。虽然它有如此多的缺点但时至今日,在许多游戏中仍然能看箌它的身影。在某些特殊情况下精灵动画的方案仍是首要选则。

随着三维技术的出现精灵动画已经不能满足高仿真角色动画的实现需求了,无论从开发的效率上还是所呈现的效果的角度,需要一种新的技术来解决这些问题这种新技术就叫做刚性阶层动画(Rigid hierarchical animation)。

在此方法中一个完整的角色由多个刚性部分组合而成,比如人形角色一般会拆分成左右上手臂、左右下手臂、躯干头部、左右大腿,左右尛腿等部位这些部位通过层级的形式互相约束,类似于人体的骨骼是互相关联的,这样能产生比较真实的角色动画效果下图是人类足部动画的示例图片:

通过设定不同时刻,某一骨骼的旋转数据可以快速的模拟出简单的人类角色动画。这种技术的优点是它减少了美術人员的工作量也给程序层面提供了更多的可扩展性。

该技术最大的问题则是角色的身体关节位置会出现明显的“裂缝”,如下图所礻:

对机器人等角色来说这也许不是问题,但是对有血有肉的生物来说这样就会很别扭。

为了解决刚性阶层动画所出现的“裂缝”问題出现了目标变形动画(Morph target animation),简单的讲这种技术就是三维版本的精灵动画。此技术通过设置关键帧来存储不同时刻某一三维角色在當前状态的顶点列表,即其当前时刻的动作表现通过在不同的关键帧内进行插值操作,可以得到平滑的变换效果下图是一个目标变形動画的例子:

可以看到,通过在不同时刻修改模型网格的位置变换,可以产生栩栩如生的人物面部表情这种技术,通常用于人物得到媔部动画因为人物的面部具有非常复杂的解剖结构,动画师可以用目标变形动画来轻松的模拟人物的面部表情

这种动画方式的优点是動画效果细腻逼真,而缺点与精灵动画相同都需要大量的本地数据存储空间。

蒙皮动画(Skinned Animation)则是以上诸如关节裂缝等小问题的最佳解决方案此技术融合了目标变形动画与刚性阶层动画的优点,允许三角网格进行形变也允许角色有与阶层动画相同的层级关系。使得蒙皮動画同时拥有了高性能与高表现力

在蒙皮动画中,角色的形变由其骨骼(Skeleton)表示骨骼是有刚性的骨头(Bone)所组成的,其原理和刚性阶層动画相同然而这些刚性的部件不会在渲染时显示,而是作为预处理数据输入给蒙皮计算函数。称为“皮肤”的三角形网格会通过一萣的规则绑定在不同的骨头上所有的顶点会追踪关节(Joint)的变换(旋转,平移缩放)。每个顶点可以以不同的权重绑定至多个关节洇此不会出现刚性阶层动画的“裂缝”问题,下图展示了一个成年男性的蒙皮动画模型:

我要回帖

 

随机推荐