使用 IK 枢轴

IK 枢轴是三维空间中的一个假想点,效应器围绕其旋转。可以使用这些 IK 枢轴增加动画(涉及围绕空间中的外部点旋转关节)的逼真度。例如:

IK 枢轴的效果

为效应器设置 IK 枢轴时,请在为效应器自身提供全局平移、方向和缩放值的同时提供效应器在全局空间中的 3D 平移。IK 枢轴修改了 HumanIK 考虑效应器的平移和方向值的方式,实际上会创建一个新的 IK 目标点。

这个最终 IK 目标点可通过以下过程计算出来:

另一方面,为效应器和枢轴点指定的平移值在具有固定长度的虚线末端定义了两个点。在枢轴点旋转到为效应器指定的方向时,此虚线也会旋转,实际上将效应器移动到 3D 空间中的其他位置。

在使用 IK 枢轴时,为效应器设置的任何 IK 约束(Reach、Pull 和 Resist)都会正常应用,从而控制最终解中角色骨架有多接近 IK 目标点,以及角色骨架的其余部分可能会发生多大变形以到达该点。

设置和检索 IK 枢轴位置

要为效应器设置 IK 枢轴,可以调用 HIKSetEffectorPivotStatefv()HIKSetEffectorPivotStateTQSfv() 函数。这两个函数均要求您在四个浮点值组成的数组中提供 IK 枢轴的平移。

例如:

const float pivotPointT[] = {124.3f, 253.8f, 604.4f, 0.0f};
HIKSetEffectorPivotStateTQSfv(myEffectorSet, LeftWristEffectorId, globalT,
                                                                  globalQ,
                                                                  globalS,
                                                                  pivotPointT);

可以使用相应的 HIKGetEffectorPivotStatefv()HIKGetEffectorPivotStateTQSfv() 函数检索 IK 枢轴的位置。

有关详细信息,请参见 API 参考中的函数描述。