IK ピボットとは 3 次元空間の仮想点で、エフェクタがその周りを回転します。これらの IK ピボットを使用して、空間の外部点の周囲を回転するジョイントに関するアニメーションをよりリアルにすることができます。例:
エフェクタの IK ピボットを設定すると、エフェクタそのもののグローバルトランスレーション、方向、スケール値を提供すると同時に、グローバル スペースでの 3D 変換を提供します。IK ピボットは HumanIK がこのエフェクタのトランスレーションと方向値を加味する方法を、効果的に新しい IK のゴールポイントを作成するよう修正します。
この最終的な IK のゴールポイントは、次のプロセスで計算されます。
別の見方をすると、エフェクタに対し指定したトランスレーション値と、固定長の仮想ラインの両端の 2 つの点を定義したピボットとなります。ピボットがエフェクタに対し指定した方向に回転すると、この仮想ラインも回転し、エフェクタを効果的に 3D 空間の別のピボットにトランスレーションします。
エフェクタに対し設定されている IK コンストレイン(Reach、Pull、Resist)は通常、IK ピボットを使用する際に適用し、最終的なソリューションでキャラクタのスケルトンがこの IK のゴールポイントにどの程度近づくかや、キャラクタのスケルトンの他の部分が、その点に到達するためにどのくらい変形しても良いかをコントロールします。
エフェクタに IK ピボットを設定するには、HIKSetEffectorPivotStatefv() または HIKSetEffectorPivotStateTQSfv() 関数のいずれかを呼び出します。 これらの関数は両方とも、IK ピボットのトランスレーションを 4 つの浮動小数点値の配列で提供する必要があります。
const float pivotPointT[] = {124.3f, 253.8f, 604.4f, 0.0f};
HIKSetEffectorPivotStateTQSfv(myEffectorSet, LeftWristEffectorId, globalT,
globalQ,
globalS,
pivotPointT);IK ピボットの位置は、それぞれ HIKGetEffectorPivotStatefv() と HIKGetEffectorPivotStateTQSfv() 関数を使用して取得できます。