DoF(Degrees of Freedom)Rigid Hierarchical Animation 刚性层阶式动画Per-vertex Animation 顶点动画参考Morph Target Animation 变形目标动画3D Skinned Animation 蒙皮动画2D Skinned AnimationPhysics-based Animation角色衣料IKAnimation Content Creation
DoF(Degrees of Freedom)
Degrees of Freedom 自由度
指的就是说一个物体有多少个自由度,也就是物体可以在多少个维度去变化。
6 DoF:对一个刚体来讲,它能动的就六个自由度:
- 平移的三个自由度:沿着 x、y、z 轴平移
- 旋转的三个自由度:刚体还能旋转。可以沿着 X 轴去,以 X 轴为中心绕着转。Y、Z 轴同理。
其实整个游戏动画,核心就是基于对自由度的表达,也就是这刚体的运动的一个表达。
Rigid Hierarchical Animation 刚性层阶式动画
做 3D 动画的时候,其实最基础的就是一个基于一个层次结构的刚体的动画。
它其实非常像我们小时候看的皮影戏。我们把角色的每个关节做成一个可动的东西,当我去动它的时候,角色整个就动起来了。实际上这个关节它本身会有一个树状结构(上图左下),所以我们也将其叫做 hierarchy。
Resident Evil 游戏就能看到这种基础的 3D 动画系统。
Rigid Hierarchical Animation 的问题就是,骨骼动的时候,关节之间会互相穿插。
Per-vertex Animation 顶点动画
这个技术可能会注意不到。但实际上我们玩的所有的 3A 游戏里面,基本上应该都用了这个技术。
比如上图右上的旗帜,在游戏中,如果一个旗帜表现得特别好的话,要么用的是物理的动画,要么用的是顶点动画。因为如果想表达一个风吹过布料的这个效果的话,如果想放骨骼来实现,都不知道要放多少层骨骼。
我们可以把它每一个顶点的位置随着时间的变化存下来,一般会存两个 texture:
- 第一个 texture 它的横向轴就是每一个顶点。假设你有一万个顶点,那就有一万个。假设你这个动画有 100 帧,那 texture 的竖轴就是 100 帧,把每个顶点的 offset(平移)存下来。
- 第二个 texture 的竖轴存的是法向。上一节课里面讲过,如果直接用顶点的位置算法向,有时候会算出问题。因此为了效率,我们就直接把每一帧每个顶点的法向也存下来。
一般我们用物理引擎模拟出来。先离线地把这东西模拟好,然后存储成 vertex animation 的这个 texture,这样在引擎中就能够展现出非常真实的旗帜的效果。水流的效果,也可以用顶点动画做。
参考
- Vertex Offset Texture: 8 bytes per vertex per frame (each pixel)
- Normal Texture: 4 bytes per vertex per frame (each pixel)
Morph Target Animation 变形目标动画
Morph Target Animation 实际上也是一种顶点动画。但是跟传统的顶点动画不太一样,它顶点有权重,会在几个顶点的 key frame 之间去插值。
如果用埋骨骼的方式实现捏脸,会发现当我们捏的变形过大,五官看上去就不自然了。在下一节课讲 face animation 的时候会详细讲。
捏脸的时候,实际上我们是在各个不同的 Morph Target 之间进行插值,
3D Skinned Animation 蒙皮动画
重点!
我们在游戏中最多出现的对象是是人、动物。人和动物最大的特点是我们表面有一层皮肤。
身体动的时候,皮肤之间不会穿插,身体里面其实是一个刚体的骨骼。
为什么刚体骨骼在驱动的时候,皮跟着动,看上去也很自然?
核心的思想就是每个顶点受不止一个骨骼影响,由多根骨骼在一起同时作用。这样的话就能保证当这个对象运动的时候,它是水密性的(watertide ,不会互相穿插)。
它比早期的那种刚体的 skeleton 动画要做得更好,这是我们现代游戏引擎最常见的动画模型。
2D Skinned Animation
蒙皮动画 2D 也在用,人动的时候,身体会相对自然地变形,技术原理是一致的。
在 2D 动画里面,现在也有很多人在用。
因为如果只是用骨骼驱动一个个的小图片运动的话,那这些图片之间彼此肯定会有穿插。所有的角色看起来就像机器人一样。
如果用同样的原理,把 2D 的角色也用蒙皮动画的方法来做的话,你能看到这个人动的时候,它整个身体会相对自然地去变形。因此他们的技术的原理是一致的,在 3D 的里面的数学运算,在 2D 里面也是完全起作用的。
Physics-based Animation
动画非常重要的一个分支方向。
角色
角色一旦受击了或者它死亡的时候,它就会进入 ragdoll(布娃娃系统)。
早期的时候布娃娃系统把人做得跟沙袋一样。但现在的布娃娃系统,既有一部分设计师设计的这种 animation 的感觉,又有整个人摔在地上的感觉。
衣料
物理模拟的动画用的最多的地方在衣料。玩游戏的时候,我们会在意这个衣料表达得好不好。
衣料模拟其实是游戏动画或者游戏物理里面最难的一个东西,包括像流体的模拟也是。
IK
Animation Content Creation
animation creator 如何去创造 animation ?
传统的方法有两种:
- 在编辑器里面由动画师手 K 动画。K 就是 K frame,就是通过一个个的 Key frame 来 K 这个动画。后面会详细地讲。
- motion capture 动捕。现在基本上无论在电影还是游戏中用的已经是非常非常的广泛了。