程序动画可以用来实现物理动画( physics animation ),物理动画可以让角色根据物理规律对外界作出相应的反应动作。物理动画现在已经开始应用到3D游戏里了。比如Crytek公司的CRYENGINE 2引擎就采用了这项技术,例如角色可以根据地形的坡度来自动调整站立的身姿,如下图所示:
IK就是一种实现程序动画的方法。骨络动画分为FK(正向运动学, Forward Kinematics )和IK(逆向运动学, Inverse Kinematics )两种。FK这里就不细讲了,是最常用的设置动画的方法。这里主要讲一下IK,IK和FK相反,它是给定末端作用器的位置或方向,来反求各节点的位置。如下图所示:
IK主要用于程序动画中,比如跑步时人的腿根据地形进行自适应,用手拿东西,用手握扶手开门等。如下图所示:
IK计算有2种方法:解析法和迭代法。解析法速度快,但只适用于节点较少的情况;迭代法通用性强,但有时容易得到局部极小值。所以一般是这两种方法混用。IK的解的个数有多种情况:
(a) 无解 (b) 唯一解 (c) 两个解 (d) 许多解
若节点数大于2个,就会出现有许多解的情况,那么如何选择最佳解呢,对人的手和腿来说,每个关键都有约束(转动角度的范围),那么就要考虑这些解有没有满足这些约束。但是可能满足这些约束的解不止一个,这时就要选择一个最佳的,比如视觉效果最好的。一种方法是选择消耗能量最少的那个(比如手臂各关节抬得最低)。
FK可以实现比较自然的动画效果;IK可以用在程序中实时生成骨络的关键帧,这样就可以使角色根据外界环境实时的作出动作的反应,更真实。因为FK和IK各有优缺点,所以往往FK和IK混用(FK/IK blend)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)