IK在骨骼动画里常常能看到,作用就是根据子骨骼的方位推算出它的那些父骨骼方位。可是一直都是知道有那么回事,但是又不太知道具体是怎么实现的。
在multi-crash.com上看到一篇骨骼动画反向动力学(IK)的实现 ,内容写的很易懂。
这是基于CCD(Cyclic Coordinate Descent
)算法的。还有种雅可比矩阵的算法,不过这种算法我还不太清楚,希望高手指教啊。
下面讲讲CCD,先看这张图。
注意图中的红线和绿线,红线是当前骨骼与目标骨骼的连线,绿线是目标骨骼与最终位置的连线。
从子骨骼到父骨骼的顺序迭代计算,旋转红线到绿线。这样多迭代几次就会得到较好的结果。
要注意的是需要对骨骼的旋转范围加以限制,因为人体的关节不是以可以任意方式旋转的。
[例如图中蓝色部分为可以旋转的范围]