IK 和 Fk

源之:

http://www.cnblogs.com/skyman/archive/2008/11/25/ik.html

 

角色动画是构建虚拟世界(游戏和虚拟社区)一个比较重要的内容。因为虚拟世界最关键的是人与虚拟角色(即“化身”,Avatar)之间的交互,会动的世界才有生机。角色动画可分两种:预定义动画(predefined animation)和程序动画(procedural animation)。预定义动画是事先由美术师制作好的动画序列,程序运行时只能播放,不能改变;程序动画是在程序运行时实时生成。相比预定义动画,程序动画能实现更好的交互。

    程序动画可以用来实现物理动画(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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
IKFK3D角色动画中经常使用的技术,它们分别代表反向动力学和正向动力学。IK将骨骼序列中的骨骼节点连接在一起,并通过鼠标控制让它们沿着特定的方向旋转,从而使角色的手臂或腿能够在舞台中自由弯曲。FK则是直接将骨骼节点挂载在角色身体的特定部位上,从而让角色的肢体特定部位能够在舞台中保持自然状态。在动画制作中,常常需要使用到两者,所以需要使用到无缝切换代码。 Python语言作为一种易于学习和使用的编程语言,是动物制作工具箱中的热门选择。在使用Python写IKFK无缝切换代码时,可以使用PyMel(Python绑定到Maya)和MayaPython(Maya内置的Python解释器)来完成这项任务。 首先,我们可以使用Python中的函数来控制三个关键步骤:设置原始骨骼序列(即IK),将骨骼序列转换为FK,然后将FK骨骼序列重新转回IK。在这个过程中,我们还需要对角色的循环进行控制,以确保无缝切换。 接下来,我们需要为切换过程中的每个阶段创建关键帧。我们需要使用Python代码在每个关键帧之间进行平滑过渡,以保证无缝切换。 最后,我们还需要创建恰当的动画曲线,以确保在所有角色动画中都能够正确地运作。 总而言之,Python写IKFK无缝切换代码,需要多种技能和工具来完成。熟练掌握Python和Maya的功能,掌握动物制作和动画知识,才能写出高效和高质量的切换代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值