动画控制着整个游戏角色战斗的节奏,以及声音、特效、镜头等表演元素。应该和排量很好的匹配,才能有好的表现效果;游戏中存在大量的A类和B类故事动画,动画数据占据了游戏中很大一部分运行时内存和计算消耗...动画贯穿于游戏开发的各个环节,所以学好动画知识对于游戏开发非常重要。
01骨骼皮肤动画
3D动画有几种动画技术:第一种是刚体级动画,特点是关节破碎、不自然,适合机器人动画;二是顶点动画,即改变每个关键帧中顶点的位置,其特点是效果大,数据爆炸,工作量大。第三种是骨骼皮肤动画,可以解决前两种动画技术的缺点。首先介绍骨骼皮肤动画的一些概念。
骨骼:在生物学中,骨骼是由一系列以树状结构组织起来的关节组成的。关节就是下图中的蓝色小球,关节之间的连接,也就是图中红色的部分,叫做骨骼。在游戏动画领域,骨骼就是指关节,指关节之间的连接是没有意义的。
姿势:姿势是骨骼的形状,描述了骨骼当前的位置。
皮肤:游戏里看不到骨头。骨骼只是一个逻辑数据。玩家看到的是渲染后的皮肤,也就是皮肤之后的图像。皮肤是皮肤与骨骼结合的过程。绑定后,皮肤可以随着骨骼的移动而移动。
动画数据:在制作动画内容的时候,动画师只会做关键帧的数据,其余的都是插值完成,可以得到任意一点的姿态。电影中的动画是以固定的帧率播放的,没有插值,而在游戏中,它的帧率会随时变化,随着当前帧中要计算的内容的增加而降低,所以中间状态需要插值算法来完成。
那么,为什么骨骼蒙皮动画可以解决刚体层次动画和顶点动画的缺点呢?首先,游戏启动时,需要读取层次数据、动画数据和带皮肤的网格数据。运行时会根据时间从动画数据中计算骨骼的位置,然后根据骨骼的当前位置和皮肤信息计算网格顶点信息,最后根据网格信息和材质渲染角色。
骨骼动画的顶点受到多块骨骼的影响,关节处的皮肤会因为多块骨骼的拉伸而变形。这种变形和拉伸是符合规律的,所以不会断裂。另外,骨骼动画数据的生成方式是改变骨骼的位置,而不是顶点的位置。我们一般都是几十上百根骨头。如果我们改变这些骨骼的位置,数据量比直接改变几千甚至上万个顶点要小得多。对于动画师来说,要做的工作也小很多。正是这些特点,使得骨骼皮肤动画成为当前游戏开发中应用最广泛的动画技术。
02动画是如何流动的
动画融合
因为游戏的互动性,动画都是小块的,把这些小块连接起来需要动画的融合。融合通常有两种:一种是多个动画的融合;另一个是从一个动画到另一个动画的过渡。过渡有两种方式,一种是平滑过渡,另一种是冻结过渡。
平滑过渡在动画A结束前开始与动画B融合,冻结过渡在动画A结束后开始与动画B融合,游戏会根据性能的需要选择哪种过渡方式。
动画状态机
游戏中的状态机结构有很多种,也正是这种复杂的结构才能支撑游戏中流畅自然的动画效果和良好的交互响应。以外状态机为例,其结构分为空闲、移动和战斗。闲置,即待机,包括战斗待机、休闲待机等。运动,包括转向运动等。;战斗,也就是攻击动画。外层的这些大状态可以通过驱动信号在彼此之间进行跃迁,达到动画片段循环的目的。
动画管道
在游戏代码中,AI和动画之间有一个接口层。AI会通过游戏的接口层向动画状态机发送各种信号,比如奔跑、跳跃、攻击、奔跑速度、转弯角度等。这些参数告诉动画状态机,状态机可以根据自己的结构进行跳转,或者融合成特定的动画片段,计算当前帧的骨骼偏移量,然后通过这些骨骼信息计算皮肤网格,最后进行渲染。
关键词: