IK チェーン ソルバを使用する

3 種類の IK チェーン ソルバ(シングル チェーン ソルバ、マルチチェーン ソルバ、スプラインチェーン ソルバを使用してキャラクタの動きをセットアップする方法

シングルチェーン ソルバを使用する

シングルチェーン IK ソルバを使用して、キャラクタの動きをすばやくセットアップし、非常に視覚的な方法で調整を行います。

Animation > IK > Add IK Handle オプション ウィンドウで、single-chain IK solver オプションを設定できます。

固有の/Run IK を使用しないソリューション

シングルチェーン ソルバでは、そのソリューションは固有のものになります。つまり、アニメーションの再生方向が順方向か逆方向か、また、コンストレイン/ハンドルを動かすかなどの操作に関係なく、スケルトンの動作が常に一定になります。したがって、Run IKを使用せずに、インタラクティブにスケルトンのモーションを移動したり再生したり、レンダリングしたりできます。

マルチチェーン IK ソルバを使用すると、スケルトンの動作は固有ではなくなります。つまり、ジョイントのモーションは、アニメーションを再生したり、viewframe を実行したり、コンストレインを移動したり、座標変換を元に戻したりすると、予想外に変化する可能性があるということです。この問題の解決策としては、Run IK ツールを使用し、非インタラクティブな操作を個別に行ってスケルトンの動きを「固定」するというものです。つまり、マルチチェーン ソリューションをレンダリングするには、SDL ファイルに書き出す前に、Run IK を使用しなければなりません。

ハンドル重複の制限

シングルチェーン ソルバでは、スケルトンの各部分に付加できるハンドルは 1 つだけです。たとえば、それぞれの腕(肩から手首まで)に 1 つのハンドルを付加し、それぞれの指(指の付け根にある関節から指先まで)には別のハンドルを付加することができます。これはマルチチェーン IK との大きな相違点です。マルチチェーン IK では、複数のハンドルがジョイントを共有できるため、通常、多くのハンドルが重複していました。

シングルチェーン IK の例

この図は、シングルチェーン IK ハンドルの付いた IK チェーンを表しています。

簡単な背骨のチェーンを作成する

ボーン チェーンを利用するのは、動物に限られるわけではありません。電気スタンドも簡単なボーン チェーンを使います。ボーン チェーンを使用するには、スタンドの基部から笠までのセクションをクリックし形成することで、簡単に作成できます。

ヒト型のキャラクタを作成する

ヒト型スケルトンの作成方法

右脚を作成するには

  1. Animation > IK > New Skeleton を選択します。
  2. 骨盤、右臀部、右膝、右足首、右の爪先の位置を順にクリックして定義しながら、右の脚を描きます。

    このままクリックを続けると、右の爪先の末端にジョイントがさらに追加されます。

左脚を作成するには

左脚を作成するには、次に作成するジョイント DAG ノードが骨盤ノードの子ノードになるようにします。

  1. 骨盤ノードがアクティブになるまで、 キーを押しながら 上矢印キーを使用して階層の上位へ移動します。この操作はモデリング ウィンドウ、SBD ウィンドウのどちらでも実行できます。

    Edit > Duplicate > Mirror を使用して左脚を作成することもできます。

  2. 右脚と同様、左臀部、左膝、左足首、左の爪先の順にクリックして定義します。

脊椎と頭部を作成するには

  1. キーを使用して骨盤ノードまで階層をさかのぼり、そこから脊椎、首、頭部を作成します。

右腕を作成するには

  1. キーを使用して鎖骨ノードまで階層をさかのぼり、右腕を作成します。

左腕を作成するには

  1. キーを使用して鎖骨ノードまで階層をさかのぼり、左腕を作成します。

    スケルトンの詳細については、Animation > Editors > Skeletons を参照してください。

  2. これでスケルトンは完成です。

注とヒント

IK アニメーションでは、位置を揃えた 2 本のボーン間のジョイントが「ロック」しやすくなります。

ある階層で連続する2種類のボーン(太ももやふくらはぎの骨など)が直線上に並んでいると、それらのボーンは最下位ジョイント(くるぶし)のコンストレインが移動しても曲がらない場合があります。なぜなら、くるぶしのコンストレインに達するには臀部とひざの両方を曲げる必要があるのに、どちらのジョイントも他方のジョイントの動きを確認しないかぎり自ら動こうとはしないからです。そうでないと、一時的にくるぶしがコンストレインから遠ざかってしまいます。

このマルチチェーン ハンドルの問題を解決するには、2 本の足が直線上に並ばないように(直線上から 2、3 度ずらせば十分です)ジョイント リミット(上記の場合はひざのジョイントにあります)を設定してください。シングルチェーンの場合は、ジョイントがワールド空間で位置揃えされないようにレスト ポジションを設定してください。

マルチハンドル ソルバを使用する

マルチハンドル ソルバ ツールを使用してスケルトンを操作する方法

Animation > IK > Add IK Handle を選択して、SolverMulti-handle に設定します。

シングルチェーン IK ソルバでほとんどのインバース キネマティクスに対応できますが、マルチチェーン IK ハンドルを使用してスケルトンを操作することもできます。

たとえば、しっぽを前後に振りながら、前にしっぽをふったときは後ろ、後ろにしっぽをふったときはしっぼが前に曲がるようなアニメーションが必要な場合は、マルチチェーン ソルバを使用します。マルチチェーン ソルバを使用するとスケルトンの動作が安定しないので、Run IK ツールを使用してスケルトンの動きを固定する必要があります。

シングルチェーン ソルバとの違いについて詳しくは、「シングルチェーン ソルバを使用する」を参照してください。

場合によっては、マルチチェーン ソルバを使用して、スケルトンにシングルチェーン ソルバでは達成できない、特殊なアニメーションを作成できます。たとえば、しっぽを前後に振りながら、しっぽを前にふったときは後ろ、後ろにふったときはしっぼが前に曲がるようなアニメーションが必要な場合は、マルチチェーン IK ハンドルを使用します。

マルチチェーン IK ハンドルを選択しているときは、Information WindowIK Handle info セクションにある、シングルチェーン IK に関する 3 つの項目は表示されなくなります。

Weight

値はスケルトンチェーンにある他のハンドルに対して相対的で、ハンドルの影響の強さを指定する数値です。

Position

このボックスにチェックマークを付けてオンにすると、ハンドルはスケルトンのエンドエフェクタの位置を指定するために使用できます。

Orientation

このボックスにチェックマークを付けてオンにすると、ハンドルはエンドエフェクタの親ジョイントの方向を指定するのに使用できます。

IK 位置ハンドル(position)と IK 方向ハンドル(orientation)

Position をオンにしてIK ハンドルを指定した場合、シングルチェーン IK の動作と同じように、IK ハンドルを動かすとそれに合わせてスケルトンのエンド エフェクタも移動します。

Orientation をオンにして IK ハンドルを指定した場合、IK ハンドルを回転させるとエンド エフェクタの親ジョイントの回転角度が変化し、エンド エフェクタを指すボーンの方向が IK ハンドルの方向に合わせられます。

左の図は Position がオンの場合と、Orientation がオンの場合の例です。

マルチチェーン IK ハンドルに対して PositionOrientation の両方を指定した場合、両方の動作が組み合わされます。IK ハンドルを移動するとエンドエフェクタも移動し、エンドエフェクタを指すボーンはハンドルの方向に合わせて回転します。

IK ハンドルに関する情報を入手する

IK ハンドルの詳細については、「簡単な背骨のチェーンを作成する」を参照してください。

IK ハンドルを重複させる

マルチチェーン IK ソルバを使用すると、IK ハンドルを重複させることができます。たとえば、肩から手首までのIK ハンドルを 1 つ作成し、さらに肩からひじに 2 目めの IK ハンドルを作成できます。

既定では、重複する IK ハンドルは、IK チェーンに対し、同じ影響力を持ちます。

次の例では、肩からひじまでのハンドルを引き下げると同時に、肩から手首までのハンドルを引き上げると、腕は 2 つのハンドルを同じ Weight で満足させるような位置に移動します。

あるハンドルの影響をもう 1 つのハンドルより強くする場合は、Information Window でこのハンドルの Weight を調整します。この例で、肩からひじまでに付加された IK ハンドルの影響を小さくするには、この IK ハンドルの Weight を小さい値(たとえば、0.1)に設定します。その結果、下図に示すように、腕のスケルトンは肩から手首に付加されたハンドルの影響をより強く受けるようになります。

IK ハンドルの回転動作を設定する

IK ハンドルを固定する方法

マルチチェーン ソルバを使用する場合は、Animation > IK > Run IK を順に選択して、IK ハンドルの動作をスケルトン ジョイントの回転に「固定」する操作を別に実行する必要があります。この操作を実行すると、スケルトン ジョイントの上に直接キーフレーム アニメーションが作成されるので、ジョイントのキーフレームを編集することにより、シーンをレンダリングしたり、スケルトンのアニメーションをさらに微調整したりすることができます。

注:

シングルチェーン スケルトンでは Run IK は任意ですが、マルチチェーン IK ハンドルを使用する場合は必須です。

スプラインハンドル ソルバを使用する

スケルトン チェーンのピースを制御する方法

スプライン ハンドルを使用して、スケルトン チェーンのピースを制御できます。スプライン ハンドルを使用して、対象とするスプライン カーブとスケルトン チェーンを一致させられます。スプライン ハンドルを使用すれば、しっぽ、首、ヘビなどのアニメーションを簡単に作成できます。スプライン ソルバの主な目的は次の 4 つです。

アニメーションを固定しモーション ブラー補正を使用する

アニメーションにモーション ブラーを適用する方法

コンストレインやエクスプレッション アニメーションの代りに、アニメーション カーブの作成を必要とする場合があります。このような場合、Bake プラグインにより、Run IK と同等の機能が提供されます。Bake が作成するアニメーション カーブには指定した一定の間隔でキーフレームが定義され、表示して手作業で編集することが可能です。

注:

Bake オプション ウィンドウで Delete Constraints オプションを選択すれば、アニメーションを固定した後で、すべてのコンストレインを削除できます。

注:

Motion Blur を使用してアニメーションをレンダリングする場合は、Motion Blur compensation を使用できます(詳しくは、Render > Globals を参照してください)。モーション ブラー サンプル ポイントで、レンダラによりこれらの値が補間され、アニメーションが評価されます。

注:

補正はシングルチェーン IK ハンドル、またはスプライン IK ハンドルで移動されたアニメーションにのみ適用されます。

注:

コンストレインされたアニメーションは-180/+180°の範囲に限定されています。このコンストレインが一気に -180 から +180 に変化すると、オブジェクトは動きません。しかし、モーション ブラーのサンプリングでは角度範囲と角度範囲の間の値を読み取るので、反転する必要がないところでも、オブジェクトが反転するように見えます。モーション ブラー補正を使用すれば、このような反転した状態が検出されるたびに、モーション ブラーのサンプリング時にキーフレームが作成されます。

スプライン IK の概要

スプライン ハンドルは、ルート ジョイント、エンド ジョイント、およびターゲット スプライン カーブによってスケルトン チェーン上に定義されます。

シングルチェーン IK ハンドルと同様、スプライン ハンドルはスケルトンに影響を与えるコンストレインです。スプライン ハンドルは重なり合いません。

カーブが変形、またはアニメーション化されると、スケルトン チェーンはカーブのこの変化に合わせようとします。また、ルート ハンドルの位置や回転を変換したりアニメーション化したりして、カーブに沿ってローリングさせながらチェーンの位置を変更できます。マスター ハンドルを回転させると、チェーンにあるジョイントがそれぞれねじ曲げられます。オブジェクトに対してルート ジョイントを Point コンストレインさせると、チェーンのスタート位置がコンストレインされます。

マスター ハンドルとルート ハンドル

スプライン ハンドルには以下の 2 種類があります。

ルート ハンドルが作成されていない、または削除されたなどの理由で、ルート ハンドルを持たないスケルトン チェーンがマスター スプライン ハンドルにより制御される場合があります。このとき、ルート ジョイントは固定されたままになり、チェーンのうち固定されていないカーブと接触する部分だけがスプライン カーブの後に続きます。しっぽはその良い例です。しっぽは胴体にアタッチされていますが、その終端は固定されておらず、カーブに沿って引きずられます。ルート ハンドルには、必ずマスター ハンドルが必要です。

パラメータと円弧長

スプライン ハンドルでカーブ上の位置を定義する方法には、パラメータによる方法と、円弧長による方法があります。どちらの測定方法をとるにしても、相対的なパーセント値を使用します。

次の図はスプライン カーブ上にパラメータの距離と円弧長で設定したポイントを示したものです。図の各ポイントは、それぞれパラメータ絶対値、パーセント パラメータ相対値、円弧長絶対値、パーセント円弧長相対値を表しています。

各スプライン ハンドルに対しては、各ポイントまたは各位置を定義するのにパラメータ相対値および円弧長相対値しか使用できません。

チェーンをローリングする

チェーンのローリングとは、下位のボーンを回転軸としてルート ジョイントを回転させることを意味します。下位のジョイントはすべて上部のジョイントから回転を継承するので、ルート ジョイントが回転すればチェーン全体がローリングします。

チェーンをねじる

チェーンをねじるとは、各ジョイントの下位のボーンを回転軸として使用し、末端のジョイントを除くジョイントをそれぞれ回転させることを意味します。マスター ハンドルの Twist Root アトリビュートが ON の場合、ねじれはルート ジョイントから開始されます。それ以外の場合、ねじれは第 2 ジョイントから開始されます。

スプライン ハンドルの制御に使用できるねじれのタイプには、次の 4 種類があります (詳細については、Information Window の Twist Type を参照してください)。

スプライン ハンドルに関する情報

スプライン ハンドルに関する情報の入手方法

IK ハンドルを選択して Windows > Information > Information Window を選択すると、スプライン ハンドルに関する情報が表示されます。

ルート ハンドルに関する情報

その他のコントロールについては、「簡単な背骨のチェーンを作成する」を参照してください。

ルート ハンドルが選択されている場合の Information Window には、IK handle info セクションに次のようなオプションが追加表示されます。

target curve

スプライン ハンドルが対象とするカーブです。

Position Type

スプライン ハンドルでカーブ上の位置を定義する方法には、パラメータによる方法と、円弧長による方法があります。

Position

キー(Windows)またはキー(Mac)を押したままで を押し、[Position]フィールドをスクロールして位置を変更できます。また、Position フィールドに直接値を入力することもできます。

Roll

キー(Windows)またはキー(Mac)を押したままで を押し、Roll deg フィールドをスクロールしてローリングの角度を変更できます。また、Roll deg フィールドに直接値を入力することもできます。

Anti Flip

スプラインチェーンがスパイラルカーブパスに沿って移動するときに、予期しないところで、180 度反転したり、軸が変更されたりすることがあります。この動作を制御するには、Anti Flip > CURVE_NORMAL または Anti Flip > WORLD_UP を選択します。既定では、これは NONE に設定されています。

Anti_FlipCURVE_NORMAL または WORLD_UP に設定されている場合、UP Axis および Front Axis を設定する必要があります。この 2 つの軸には、それぞれ異なる回転が設定されていなければなりません。

Anti_Flip により、ルート ジョイントの方向がコンストレインされます。定義された Front Axis はカーブの接線をたどります。Up AxisFront Axis に直交します。

  • CURVE_NORMAL: Up Axis はカーブの法線に従います。
  • WORLD_UP: Up Axis はワールド座標空間の Up Axis をたどろうとします。

カーブ パスの方向によっては、Anti_Flip のセットアップを試した方がよい場合があります。

マスター ハンドルに関する情報

マスター ハンドルの Information Window から、ねじれの種類や角度を変更することができます。

target curve

スプライン ハンドルが対象とするカーブです。

Twist Type

マスター スプライン ハンドルには 4 種類のコントロールが用意されていて、このポップアップ メニューから指定できます。

  • Linear: どのジョイントも、ねじれが等しくなります。
  • Fast Out Slow In: ルートの近くにあるジョイントのねじれが、終端に近いジョイントのねじれに比べて大きくなります。
  • Slow Out Fast In : ルートの近くにあるジョイントのねじれが、終端に近いジョイントのねじれに比べて小さくなります。
  • Ease Out Ease In: 中央にあるジョイントのねじれが、両端にあるジョイントのねじれに比べて大きくなります。
Twist Root

ねじれがルートジョイントから始まるようにするには、このオプションにチェックマークを付けてオンに設定します。チェックボックスのチェックマークが外れオフになっている場合、ねじれは第 2 ジョイントから開始されます。

Twist

このフィールドに角度を表す数値を入力して、ねじれの角度を設定できます。 キー(Windows)または キー(Mac)と を使用してスクロールすると、角度の値をインタラクティブに変更することができます。

注:

Alias で SDL ファイルを保存するとき、IK とコンストレインのアニメーションは Render Globals ウィンドウで指定したキーフレームの範囲しか書き込まれません。

注:

これは、SDL ファイルの開始フレームと終了フレームを編集するときに、オリジナルの開始/終了範囲の外側にコンストレイン/IK アニメーションが存在しないということを意味します。

注:

不明になっているコンストレイン/IK アニメーションを得るためには、SDL ファイルを保存し直す必要があります。