IK & FK

FK (Forward Kinematics)

FK正向运动学,只要我们定义好了各个关节之间的连接方式,当我们给定每个关节转动的角度之后,物体的各个点在空间中的位置就可以确定了。


上图所示是一个比较简单的情况(只有两个关节相连,且只考虑了两个维度)。以尖端p为例,当我们转动l1l2给定了相应的角度之后,根据公式我们就可以计算出尖端p此时在空间中的位置。使用过Mayak过动画的人可能比较熟悉了,当你选中角色的某个关节主要用旋转来k动画那么一般就是使用的FK


IK (Inverse Kinematics)

IK逆向运动学,以上面的关节为例,我们改变尖端p的位置,然后反过来求得关节的旋转角度。

如上图还是这个比较简单的情况,此时我们通过改变尖端p的位置,来反过来求得各个关节旋转的角度,这个反向求解显然复杂了许多,如果关节再多亿些,那么显然得到的式子是爆炸的。因此我们不会去使用数学几何的方法去求解答案,我们会用一些优化方法来得到解,比如梯度下降。同样的使用过Mayak过动画的人应该也很熟悉,比如当你通过改变手的位置去k手臂动画你就是在用IK
除了计算复杂之外,IK还有一个使用困难的地方——解不唯一!


从这张图可以看出,尽管关节的角度不同但是最终尖端可以在同一个位置。也许这就是在使用IK做动画的时候,得到电脑生成的中间张的时候效果不好的原因吧。

评论