キャラクタのスケルトンの特定のジョイントをコントロールするために HumanIK が必要でない場合、それらのジョイントの新しい位置をソルビングしないで、インバース キネマティクス ソルバのパフォーマンスを向上させることができます。
たとえば、HumanIK を使用して、キャラクタのヒップおよび上半身を回転させてプレイヤーの武器を狙うことをコントローラに書き込む場合、キャラクタの脚および足に対する IK ソルビングをスキップすることができます。
ボディ パーツをソルビングするインバース キネマティクス ソルバに対して、可能な識別のメソッドは 2 つあり、以下で説明されています。
インバース キネマティクス ソルバを使用する前に、リターゲット ソルバで直接的または間接的に、IK ソルバを実行する必要があるソルバ ステップをHIKEffectorSetStateで指定する必要があります。ソルバ ステップを指定するには、HIKSetIKSolvingStep()関数を呼び出し、HIKSolvingStep列挙値に表示されている要素を 1 つ以上設定します。
インバース キネマティックス ソルバおよびリターゲットのソルビングで示されている例では、HIKSetIKSolvingStep()関数が値HIKSolvingStepAllを使用して呼び出され、これによりすべてのソルバ ステップが有効にされます。ただし、HIKSetIKSolvingStep()関数の呼び出しで、HIKSolvingStep列挙値で使用できるソルバ ステップのサブセットだけを代わりに指定することができます。これにより、インバース キネマティクス ソルバを構成し、対応する計算だけを実行することができます。
たとえば、次の呼び出しでは、ヒップ、脚、足、ロール抽出、フロア コンタクト、および Squash ’n’ Stretch を除き、ヒップより上のすべてのボディ パーツをソルビングするように、インバース キネマティクス ソルバが構成されます。
HIKSetIKSolvingStep (MyEffectorState, HIKSolvingStepBodyPull | HIKSolvingStepLeftShoulder | HIKSolvingStepRightShoulder | HIKSolvingStepLeftArm | HIKSolvingStepRightArm | HIKSolvingStepLeftHand | HIKSolvingStepRightHand | HIKSolvingStepHead | HIKSolvingStepSpine);
「インバース キネマティックス ソルバ」と「リターゲットのソルビング」も参照してください。
HumanIK インバース キネマティクス ソルバは複数の小さい関数に分解され、それぞれがキャラクタのジョイントの限られたセットのコントロール、または IK プロセス全体に関係している計算の特定のサブセットの実行を担当します。HIKSolveForEffectorSet 関数を呼び出すことによってインバース キネマティクス ソルバを起動する場合、次の特定の関数が順番に呼び出されます。
HIKSolveForEffectorSet()関数の呼び出しに対する代わりの方法として、これらの個々のファンクションを別々に呼び出すことができます。この方法は主として、メモリの制限事項のために全ての IK ソルバを起動することができない場合にセカンダリ プロセッサ ユニットを利用することを目的としています。また代わりの方法として、次の制限事項に従って、特定のボディ パーツに対してソルビングを制限することもできます。
インバース キネマティクス ソルバでは、ソルビング プロセスの最初に HIKSolvingStepBodyPull ステップを実行します。このステップは、スケルトンのすべてのジョイントに影響を及ぼします。ソルバは、すべてのエフェクタの Pull 設定をその能力の限界まで満たした後、他の有効なソルバ ステップまで移動し、エフェクタの位置、回転、Reach Translation、および Reach Rotation の要件を満たします。この要件は、有効なソルバ ステップで対象とされる各ジョイントに適用されます。
したがって、上のメソッドのいずれかを使用するインバース キネマティクス ソルバによる考慮事項からジョイント チェーンを除くことは、必ずしもジョイント チェーンが元の FK アニメーションでの状態と同じままになることを意味しません。むしろ、これらのジョイントの最終的な状態への制御を放棄し、スケルトンの他のジョイントに割り当てられた Pull 値を緩和して、ジョイントを完全に配置していることを意味します。たとえば、キャラクタの手の Pull 値により、ソルビングが脚および足に対して明確に実行されない場合でも、キャラクタのヒップ、脚、および足を別の場所にドラッグすることができます。
ジョイントに対して計算される最終的な位置を制御する場合、元の FK アニメーションに設定する場合でも、シーンの特定の位置に設定する場合でも、そのジョイントに対して IK ソルビングを有効にし、意図したトランスレーションおよび回転で配置されるような、Reach、Pull、および Resist 値を設定する必要があります。概要で、Reach、Pull、および Resist の詳細説明も参照してください。