IK (Inverse kinematics) 运动动力学逆运算是机器人,游戏,动画中必须面对的运算问题。 本文介绍一种快速,简单的迭代方法FABRIK。 这种方法的英文全称是 Forward And Backward
Reaching Inverse Kinematics,也就是 前进和后退实现动力学逆运算。
python代码实现无约束单链请见:fabrik 算法的python 实现
因为是用图来表达,先说一下图中的意思:
每个图表示一个链条,p1,p2,p3,p4 表示节点位置, p1' 等表示第一次运算的节点位置,p1'' 等表示第二次运算的节点位置。
d1,d2,d3表示节点间的距离长度,认为是刚性的。
a图表示开始状态,其中t 点表示终端节点需要到达的目标位置。
b,c,d 图表示后退运算过程
e, f 图表示前进运算过程。
单个链条的计算
首先,针对一条从首端到尾端的bone chain,以及一个对应的Target point,先计算整条chain的长度,从而判断这个Target point是否可到达。
1.1 如果不可到达,则要求根链条进行移动。通