IK反向动力学

**

在我们的VR和AR的交互应用中,可以借助反向动力学来帮助确定角色动作

**
IK全称是Inverse Kinematics,反向动力学的意思。
相对于反向动力学,FK正向动力学( Forward Kinematics)就是我们常用的骨骼动画, 动画制作者将角色的构成部分通过层级节点规划,摆出一个类似骨架的形状,通过关节点与蒙皮表面的关联系数,动画制作者可以改便骨骼节点的位置、旋转角度,带动蒙皮形成的动画的一种动画制作方式。
在一套FK系统中,一般的规则是:层级里的一个父节点驱动任意子节点的运动。例如,如果你移动前臂(父),手腕(子)就会随之运动。但是,如果你移动腕节点,前臂还将停留在原处。
也就是父节点运动可以带动子节点,子节点运动不会改变父节点的原则。
标准人体骨骼根据以上原则,反向动力学就很好理解了,反向动力学是一种通过先确定子骨骼的位置,然后反求推导出其所在骨骼链上n级父骨骼位置,从而确定整条骨骼链的方法。反向动力学的原则是:通过改便子节点的位置、旋转角度,带动父节点移动和旋转。
从末端位置推导父节点状态
为什么需要反向动力学呢?

正向动力学,我们需要按照角色运动,调整顺序调整每个节点的位置和旋转角度,借助动补等手段,通常用于制作固定的序列帧动画。
正向动力学的优点是:计算简单,运算速度快,缺点是:需指定每个关节的角度和位置,而由于骨架的各个节点之间有内在的关联性,直接指定各关节的值很容易产生不自然协调的动作。
想象一下:要让角色行走在凹凸不平的路面上;或者,需要让角色扶着楼梯栏杆前进;或者,驱动角色去拿取一个物品等场景需求,通过正向动力学制作的预设动画,很可能会出现穿模和动作僵硬等尴尬问题。

而在我们的VR和AR的交互应用中,恰恰有很多场景是这种非固定动画的应用,所以需要使用反向动力学来帮助角色进行适当的动作。

IK动画可以通过安置末端受动器,反向调整整个骨骼的体系姿态。
比如,要让角色行走在凹凸不平的路面上,可以通过确定角色脚与地面的接触位置、旋转,自动计算身体其他部位的姿势,通过改便每一步的步幅与地面接触位置,就可以实现角色在不平路面的行走动画。
通过脚步位置推到角色姿态

比如,在VR里面要驱动角色去拾取物品,可以通过角色手腕位置(VR手柄)反向计算角色手臂和身体的姿态,让角色很自然的拾取物品。
通过手柄位置推导手臂状态

VR游戏中的角色驱动,一般确定头、双手腕、双脚腕5个节点位置就可以很好的确定人物角色的体态姿势了。

VR简易应用中,一般只有头部(头盔)、双手腕(手柄)三个定位点,实际应用中可以将IK结合FK进行混合动画制作:上半身通过IK动画驱动,下半身通过FK动画驱动。
五个VR定位点确定角色姿态

Unity中可以通过Avatar Mask来实现两种动画融合。
IK动画融合

猜你喜欢

转载自blog.csdn.net/qq_31042143/article/details/113778262