动作融合:一个动作转换到另外一个动作,第一个动作的结束时的模型姿势和第二个动作开始时的模型姿势特别不一样,如果直接进入第二个动作就会产生不真实的感觉.这个时候,就需要将两个姿势做中间插值,让两个动作有一个平缓的过度.类似于flash中制作动画的时候只做出关键帧,然后在关键帧之间自动生成插入帧
顶点动画就是把动画的每一帧都保存起来,播放动作的时候就一帧帧播放.这样做是因为以前的硬件不行.现在的做法是骨骼动画,模型做动作的时候时候,我们只需要把骨架摆成特定姿势,就可以计算出蒙皮上所有相关点的空间坐标,并通过显卡硬件渲染出来。在现代显卡中,GPU 甚至可以帮你做最后一步矩阵变换的乘法。
纸娃娃系统:换上不同的装备,游戏里显示不同的样子,比如说武器,饰品变化.2D游戏中的纸娃娃系统只是将角色的头,身,手,脚等部位的动作都分开绘制,这样就避免了美工重新绘图.在3D游戏中,可以借助骨骼系统来控制角色动作,因此3D纸娃娃没有拆分角色的身体部分,只是分离了服装,武器等外部物件。项目中即将做的饰品系统应该也是相同的原理
美术给的资源一般都在12帧至15帧,而游戏的帧数至少为30帧,所以插值一般来说都是必须的
一个带方向的点(一个向量)在空间中,无论以什么次序,做多少旋转和位移,最终都可以表达为一次旋转加一次位移。即,我们分离缩放变换后,计算得到的子节点在父节点空间中的相对变换(M1 * M2')中一定可以把这个矩阵表示为某个旋转变换 R * 另个位移变换 T 。他们分别是4*4
的变换矩阵中的
3*3
项(旋转部分)以及一行位移部分。
对于旋转变换的插值,是不能直接对 3*3 的矩阵线性插值的。正确的方法是把矩阵表达为四元数。话说,搞明白四元数这个东西又颇费了我一些时间,这里就不展开讲了。简单的说,对矩阵旋转插值不可行是因为它的 9 个数值并不正交。而四元数则是的四个部分则是相对独立的。正如在 2D 空间中,2 个数字(复数)可以表达一种旋转,旋转的表达在 3D 空间则扩展到了四个数字。四元数的插值和计算方法,网上能搜出许多。读到这里,我们只需要知道,这是一种方便做插值的描述旋转变换的表达形式即可。