前言
开摸!
3D动画的分类
动画在游戏中是Gameplay和玩家审美的重要因素,不可不品尝。
刚性层阶式动画
早期的动画方案,角色使用一堆独立的刚性物体组合而成,动画系统会驱动每一个刚性物体,从而实现动画效果。 刚性物体是指不会发生形变(包括缩放)的物体。使用刚性层阶式动画,技术简单,但是动画生硬、刚性物体链接处有接缝。
顶点动画
顶点动画就是以顶点为最小单位制作的动画。可以制作高精度的动画,常用于捏脸系统、脸部动画。 缺点是数据存储量大,因为顶点一般特别多,每一个关键帧都要存一次,现在一般使用面部识别设备制作。
骨骼蒙皮动画
这是现在游戏行业使用最广的动画,使用骨架(一系列关节以树状父子层级结构组成)来模拟人物,机械的运动。 通过“蒙皮(Skin)”这项操作绑定骨骼与模型。蒙皮要定义一个蒙皮顶点,也就是模型上的一个顶点,的位置、法线、UV、受哪些骨骼影响、以及受骨骼影响的权重。
动画流转
动画融合(Blend)
很多时候,我们不为了每个动作都做一个动画,而是使用程序逻辑对几个动画进行动画融合来实现一系列动画。 当动画之间进行过度时,也要进行动画融合。
动画状态机
利用状态机来控制动画,一个状态下播放一个或一系列动画,通过游戏逻辑层传来的信号判断转换条件来控制各个状态的切换。
万向锁
万向锁是欧拉角的一个缺陷,由于欧拉角有父子层级关系,当Y轴旋转90°时,X轴和Z轴将重合。 由于欧拉角的此项缺陷。引擎内部会使用四元数来表示旋转,四元数和欧拉角可以相互转换。
程序动画
程序动画的用处
动画师的动画,往往在环境拟合上不能完全让人满意。比如角色走一个上坡,前脚要成什么样子,抬多高,这是动画师制作时无法考虑的问题,那么就需要程序动画来解决问题。 程序动画会加大性能开销,因为我们需要在运行时计算数据,计算量往往会变得很大,所以使用程序动画需要做好规划,避免大量使用。
FK(Forward Kinematics)
设置关节的姿势和动画,移动关节时会影响该关节及其层次下方的任何关节。可以理解为通过父关节决定子关节的运动。
IK(Inverse Kinematics)
给定末端作用器的位置和方向,反向求出各节点的位置。可以理解为由子关节决定父关节位置,这个在游戏中大量使用。
|