zhouqijie

概述:动画系统架构

多数动画系统由三个分明的软件层组成。

(有些游戏引擎会用不同的方式分割软件层,可能会把两层或以上融合成一个系统)

对于每个含动画的角色,动画管道为它们取得一个或者多个动画片段以及对应的混合因子作输入,把这些片段混合后产生一个局部骨骼姿势作为输出。

动画管道也会为骨骼计算一个全局姿势,以及生成蒙皮矩阵调色板。

动画管道通常会提供后期处理钩子,以便在生成全局姿势及蒙皮矩阵前可以修改局部姿势,此处可以将逆运动学、布娃娃物理、或其他形式的程序动画施于骨骼上。

游戏角色的动作通常建模为有限状态机,此状态机常称动作状态机。ASM子系统位于动画管道之上,并提供以状态驱动的动画接口供所有高层游戏代码之用。

ASM确保角色能从一个状态圆滑地过渡到另一个状态。

此外,多数动画引擎容许角色身体不同部分同时做不同、独立的事情。要实现此功能可通过状态层(state layer)使用多个独立的状态机控制单个角色。

在很多引擎中,角色的行为最终是由动画控制器所组成的高级系统控制的。每个控制器是特别为管理某个角色行为模式而设的。例如一个控制器用于角色在开放空间移动以及战斗中处理其行为,其他控制器可能用于驾车、爬梯等。这些高级动画控制器能封装绝大部分动画相关代码,来实现和玩家/AI等高层代码的解耦。

CRE:Unity的Animator组件可以指定AnimationController。AnimationController包含状态机。

(END)