IK & FK
FK (Forward Kinematics)
FK
即正向运动学,只要我们定义好了各个关节之间的连接方式,当我们给定每个关节转动的角度之后,物体的各个点在空间中的位置就可以确定了。
上图所示是一个比较简单的情况(只有两个关节相连,且只考虑了两个维度)。以尖端p
为例,当我们转动l1
和l2
给定了相应的角度之后,根据公式我们就可以计算出尖端p
此时在空间中的位置。使用过Maya
k过动画的人可能比较熟悉了,当你选中角色的某个关节主要用旋转来k动画那么一般就是使用的FK
。
IK (Inverse Kinematics)
IK
即逆向运动学,以上面的关节为例,我们改变尖端p
的位置,然后反过来求得关节的旋转角度。
如上图还是这个比较简单的情况,此时我们通过改变尖端p
的位置,来反过来求得各个关节旋转的角度,这个反向求解显然复杂了许多,如果关节再多亿些,那么显然得到的式子是爆炸的。因此我们不会去使用数学几何的方法去求解答案,我们会用一些优化方法来得到解,比如梯度下降。同样的使用过Maya
k过动画的人应该也很熟悉,比如当你通过改变手的位置去k手臂动画你就是在用IK
。
除了计算复杂之外,IK还有一个使用困难的地方——解不唯一!
从这张图可以看出,尽管关节的角度不同但是最终尖端可以在同一个位置。也许这就是在使用IK
做动画的时候,得到电脑生成的中间张的时候效果不好的原因吧。