
视觉残留理论 - 影像在我们的视网膜上残留1/24s。
游戏中动画面临的挑战:
2.1 序列帧动画
采取多个图片切换实现2d动画效果

采取不同视角的多个图片实现3d动画效果

2.2 Live2D

将一个图片剪裁成多个图元,通过修改不同图元的位置,缩放,旋转来实现动画效果。
3.1 DoF(自由度)

这是对于自由度的一个表达术语。比如6DOF代表能在xyz空间内进行平移和旋转。3d动画的核心就是对自由度的一个表达。
3.2 顶点动画
把每个帧的顶点的位置记下来

在做人脸的面部动画使用的也是顶点动画,不过这时的修改单个顶点的位置时会按照权重修改附近顶点的位置,这个叫做Morph Target Animation。

3.3 骨骼动画
刚体骨骼在动的时候,皮也在跟着动。是因为每个顶点是多个骨骼在动。


3.4 物理模拟动画

4.1 怎样制作一个蒙皮动画

4.2 不同的空间

统一骨骼结构

骨骼与关节

Root节点

Bind point:绑定动画当两个骨骼动画绑在一起时需要这个Bind point

5.1 2D旋转

5.2 3D旋转

在空间任意一点的旋转都可以分解成依次绕着每个轴旋转。
欧拉角:
在对物体进行编辑,或者摆放的时候会经常用欧拉角,但是做动画的时候无法使用欧拉角。
欧拉角的问题:
(1)严格的顺序依赖:顺序不一样,他算出来的结果不一样。
(2)万向节:万向锁
(3)很难插值
(4)旋转的叠加很难
(5)很难沿着一个固定的轴旋转。
5.3 四元数

四元数的定义如下:

欧拉角转成四元数的公式如下:

由于动画的数据量很大:

但是缩放和位移是不变的,大部分是rotation在变化。
所以我们可以通过以下方法来压缩动画数据存储:
6.1 较少自由度存储

6.2 关键帧

只存储几个关键帧,然后用线性插值的方法来计算中间帧,永远保证你的error小于你的阈值

6.3 浮点数
不要用浮点数来存储动画的旋转角度,因为浮点数占据的内存大,可以用整数来表达。

6.4 压缩带来的问题