IK ソルバ

IK ソルバは、IK ハンドルの背後にある数学的アルゴリズムです。IK ハンドルによって制御されるジョイント チェーンに属するすべてのジョイントの回転を計算します。ジョイント チェーンに対する IK ハンドルの作用は、IK ハンドルが使用する IK ソルバの種類によって異なります。既定で、Maya は起動時に次の IK ソルバをロードします。

ジョイント数が 2 ~ 4 個のジョイント チェーンのポーズを設定し、アニメートするには、シングル チェーンまたは回転プレーン IK を使用します。

既定では、作成したすべての IK ハンドルは、同じタイプの IK ソルバを使用するとともに、同じ IK ソルバ ノードを共有します。たとえば、シングル チェーン IK を使用するすべての IK ハンドルも、同じ ikSCsolver ノードに接続します。したがって、共有 IK ソルバ ノードのアトリビュートを編集すると、ノードに接続するすべての IK ハンドルがその影響を受けます。他の IK ハンドルに影響を及ぼさずに、特定の IK ハンドル用の IK ソルバだけを微調整する場合は、createNode MEL コマンドを使用して、IK ハンドル用の追加 IK ソルバを作成することができます。

IK ソルバの計算

IK ハンドルを移動する場合、ソルバは適切な計算を行って、それに応じて IK チェーン内の全ジョイントを移動し、回転させます。ソルバは、最初に IK ハンドルの位置(移動 X (Translate X)移動 Y (Translate Y)移動 Z (Translate Z) の各アトリビュート)と方向(回転 X (Rotate X)回転 Y (Rotate Y)回転 Z (Rotate Z) の各アトリビュート)を参照します。次に、ソルバは、エンド エフェクタの位置を可能な限り IK ハンドルの位置と方向の近くに移動する方法を計算します。そのために、ソルバはどのように IK ハンドルのジョイント チェーン内にあるジョイントを回転するのが最適かを計算します。最後に、ソルバは、エンド エフェクタが IK ハンドルの位置と方向に到達するように、ジョイント チェーン内の全ジョイントを回転させます。

シングル チェーン ソルバ

シングル チェーン IK ハンドルは、シングル チェーン ソルバを使用して、IK チェーン内の全ジョイントの回転を計算します。また、ジョイント チェーンの全体の方向は、直接シングル チェーン ソルバによって計算されます。

シングル チェーン IK ハンドルと回転プレーン IK ハンドルの違い

シングル チェーン IK ハンドルと回転プレーン IK ハンドルの違いは、シングル チェーン IK ハンドルのエンド エフェクタが IK ハンドルの位置と方向に到達しようとするのに対して、回転プレーン IK ハンドルのエンド エフェクタは IK ハンドルの位置のみに到達しようとすることです。回転プレーン IK ハンドルのエンド エフェクタは、IK ハンドルの位置のみに到達しようとするため、その結果生じるジョイントの回転を容易に予想することができます。回転プレーン IK ハンドルの場合、ジョイント チェーン全体の方向はツイスト円形 マニピュレータによって制御されます。詳細については、ツイスト円形回転プレーン ソルバを参照してください。

注:

ジョイント チェーンに反転の問題がある場合は、シングル チェーン ソルバの代わりに、回転プレーン ソルバを使用します。回転プレーン ソルバは、シングル チェーン ソルバで発生することがある IK チェーンの反転を制御するために、極ベクトルとともに導入されました。

回転プレーン ソルバ

回転プレーン IK ハンドルは、回転プレーン ソルバを使用して、IK チェーン内の全ジョイントの回転を計算しますが、ジョイント チェーンの全体の方向は計算しません。代わりに、IK 回転プレーン ハンドルは、IK ソルバによって計算された方向を使用せずに、極ベクトルとツイスト円形を使用してジョイント チェーン全体の方向を直接制御します。シングル チェーン ソルバと回転プレーン ソルバの違いはこの点です。詳細については、シングル チェーン IK ハンドルと回転プレーン IK ハンドルの違いを参照してください。

回転プレーンは、同じプレーンで静止させたいジョイント チェーン(腕や脚など)のポーズ設定に適しています。たとえば、回転プレーン IK ハンドルが駆動する腕の肩、肘、手首の関節は、肘が回転する同じプレーン内にとどまります。プレーン自体は、極ベクトルによって肩の関節で回転します。

極ベクトル」も参照してください。

回転プレーン IK ハンドルのコンポーネント

ツイスト円形

ツイスト円形は、ジョイント チェーンをツイストまたは回転するために使用するマニピュレータです。ツイスト円形は、IK チェーンの終了ジョイントにあります。

極ベクトルの移動によって、IK チェーンが間違った方向を示したままになる場合があります。極ベクトルの移動後、反転しないようにするために、ツイスト円形を使用して、プレーンの方向を変更することができます。ツイスト円形のイメージを表示する場合は、回転プレーン ソルバを参照してください。

ジョイント チェーン プレーン

ジョイント チェーンの全ジョイントを含み、軸を使用してポーズを設定するプレーンがジョイント プレーンです。ジョイント チェーン プレーンは、ハンドル ベクトルの周りで回転します。極ベクトルを操作する場合は、ハンドル ベクトルの周りでジョイント チェーン プレーンを回転させます。ジョイント チェーン プレーンのイメージを表示する場合は、回転プレーン ソルバを参照してください。

リファレンス プレーン

ジョイント チェーン プレーンを使用してジョイント チェーンの回転とツイストを行う場合は、ツイストの度合いを測定できるように、プレーンを別の特定なプレーンを基準にして回転させる必要があります。ジョイント チェーン プレーンを回転するときの相対的な基準となるプレーンをリファレンス プレーンと呼びます。リファレンス プレーンのイメージを表示する場合は、回転プレーン ソルバを参照してください。

極ベクトル

極ベクトルは、IK チェーンの方向を変更することができるマニピュレータです。また、極ベクトルを使用して、反転を制御することができます。

極ベクトルを移動するとリファレンス プレーンの方向が変更されるので、極ベクトルを移 動してジョイント チェーンの方向を直接変更することもできます。ツイスト円形を操作するだけで、ジョイント チェーンの方向を変更することができます。これは、ジョイント チェーンの向き具合、つまりツイストがリファレンス プレーンとジョイント チェーン プレーンの方位差として定義されているからです。極ベクトルのイメージを表示する場合は、回転プレーン ソルバを参照してください。

危険:

IK ハンドルの配置時に、ハンドル ベクトルと極ベクトルが交差するか、全く正反対の方向を示すと、ジョイント チェーンが突然反転することがあります。ハンドル ベクトルと交差しないように、または反対方向を向かないように極ベクトルを移動すると、この反転を防止することができます。

回転円形

回転円形は、ツイスト円形によって IK チェーンが回転した度合いを示すインジケータです。回転円形は、IK チェーンの開始ジョイントにあります。回転円形のイメージを表示する場合は、回転プレーン ソルバを参照してください。

リファレンス プレーン インジケータ

リファレンス プレーン インジケータは、極ベクトルの移動を反映して移動する回転円形上に緑色のドットとして表示されます。

ツイスト インジケータ

ツイスト インジケータは、回転円形上のリファレンス プレーン インジケータとジョイント チェーン プレーン インジケータ間に緑色の円弧として表されます。ツイスト インジケータは、ジョイント チェーンの方向をリファレンス プレーンを基準にした相対位置で表示します。

ジョイント チェーン プレーン インジケータ

ジョイント チェーン プレーン インジケータは、ジョイント チェーン プレーンの方向をリファレンス プレーンに対する相対位置で表示します。ジョイント チェーン プレーン インジケータは、回転円形上に表示されます。