这篇博客介绍了FABRIK的算法,适应性和与其他IK算法的对比。
FABRIK
在之前的博客角色动画研究 —— IK的三种结算方法和角色动画研究 —— 使用雅可比矩阵(Jacobian)来结算IK中,介绍了在游戏中常用的三角分析、CCD和在控制论中常用的雅可比矩阵的结算IK的方法。在这篇博客中将会介绍另一种IK结算方法,FABRIK。
FABRIK的工作原理
FABRIK的工作原理其实比较简单,相对于以计算效率见长的CCD来说应该还会更快一些,同时,效果也会更好。对于刚体骨骼的IK计算来说,应该是目前游戏开发这一块比较好用的IK结算算法了。
算法如下:
首先,针对一条从首端到尾端的bone chain,以及一个对应的Target point,先计算整条chain的长度,从而判断这个Target point是否可到达。
1.1 如果不可到达,则要求根骨骼进行移动。通常的情境类似于一个人如果伸直了手或者一只长颈鹿伸长了脖子也无法够到目标点时,则此时需要自己本身就向目标点挪(在使用Jacobian矩阵计算的环境下,此时矩阵为irregular,无对应的逆可以算出来)。
1.2 如果可以到达,那么这就意味着可以进行下一步的处理了,这里假设一共有五根骨骼(从根骨骼到末端骨骼分别是 p0 p 0 , p1 p 1 , p2 p 2 , p3 p 3 , p<