3 種類の IK チェーン ソルバ(シングル チェーン ソルバ、マルチチェーン ソルバ、スプラインチェーン ソルバを使用してキャラクタの動きをセットアップする方法
シングルチェーン IK ソルバを使用して、キャラクタの動きをすばやくセットアップし、非常に視覚的な方法で調整を行います。
Animation > IK > Add IK Handle オプション ウィンドウで、single-chain IK solver オプションを設定できます。
シングルチェーン ソルバでは、そのソリューションは固有のものになります。つまり、アニメーションの再生方向が順方向か逆方向か、また、コンストレイン/ハンドルを動かすかなどの操作に関係なく、スケルトンの動作が常に一定になります。したがって、Run IKを使用せずに、インタラクティブにスケルトンのモーションを移動したり再生したり、レンダリングしたりできます。
マルチチェーン IK ソルバを使用すると、スケルトンの動作は固有ではなくなります。つまり、ジョイントのモーションは、アニメーションを再生したり、viewframe を実行したり、コンストレインを移動したり、座標変換を元に戻したりすると、予想外に変化する可能性があるということです。この問題の解決策としては、Run IK ツールを使用し、非インタラクティブな操作を個別に行ってスケルトンの動きを「固定」するというものです。つまり、マルチチェーン ソリューションをレンダリングするには、SDL ファイルに書き出す前に、Run IK を使用しなければなりません。
シングルチェーン ソルバでは、スケルトンの各部分に付加できるハンドルは 1 つだけです。たとえば、それぞれの腕(肩から手首まで)に 1 つのハンドルを付加し、それぞれの指(指の付け根にある関節から指先まで)には別のハンドルを付加することができます。これはマルチチェーン IK との大きな相違点です。マルチチェーン IK では、複数のハンドルがジョイントを共有できるため、通常、多くのハンドルが重複していました。
この図は、シングルチェーン IK ハンドルの付いた IK チェーンを表しています。
IK ハンドルのオプションを既定の TRANSLATION ONLY に設定した場合は、ゴールとリム軸だけが表示されます。
IK ハンドルの回転を利用して、この平面をチェーンと共に、リム軸を中心として回転させることができます。上の図を参照してください。
プレーン インジケータは、IK ハンドルのオプションを PLANE ROTATION または PLANE/POLE ROTATION に設定した場合にのみ表示されます。
モデリング ウィンドウ内では、ポール軸は先端に上向きの矢印が付いた直線で表示されます。また、ポール軸の投影線が、プレーン インジケータの回転盤上に点線で表示されます。
ポール軸は IK ハンドルのオプションを上級レベルの「PLANE/POLE ROTATION」に設定した場合にのみ表示されます。
ボーン チェーンを利用するのは、動物に限られるわけではありません。電気スタンドも簡単なボーン チェーンを使います。ボーン チェーンを使用するには、スタンドの基部から笠までのセクションをクリックし形成することで、簡単に作成できます。
ヒト型スケルトンの作成方法
このままクリックを続けると、右の爪先の末端にジョイントがさらに追加されます。
左脚を作成するには、次に作成するジョイント DAG ノードが骨盤ノードの子ノードになるようにします。
Edit > Duplicate > Mirror を使用して左脚を作成することもできます。
スケルトンの詳細については、Animation > Editors > Skeletons を参照してください。
IK アニメーションでは、位置を揃えた 2 本のボーン間のジョイントが「ロック」しやすくなります。
ある階層で連続する2種類のボーン(太ももやふくらはぎの骨など)が直線上に並んでいると、それらのボーンは最下位ジョイント(くるぶし)のコンストレインが移動しても曲がらない場合があります。なぜなら、くるぶしのコンストレインに達するには臀部とひざの両方を曲げる必要があるのに、どちらのジョイントも他方のジョイントの動きを確認しないかぎり自ら動こうとはしないからです。そうでないと、一時的にくるぶしがコンストレインから遠ざかってしまいます。
このマルチチェーン ハンドルの問題を解決するには、2 本の足が直線上に並ばないように(直線上から 2、3 度ずらせば十分です)ジョイント リミット(上記の場合はひざのジョイントにあります)を設定してください。シングルチェーンの場合は、ジョイントがワールド空間で位置揃えされないようにレスト ポジションを設定してください。
マルチハンドル ソルバ ツールを使用してスケルトンを操作する方法
Animation > IK > Add IK Handle を選択して、Solver を Multi-handle に設定します。
シングルチェーン IK ソルバでほとんどのインバース キネマティクスに対応できますが、マルチチェーン IK ハンドルを使用してスケルトンを操作することもできます。
たとえば、しっぽを前後に振りながら、前にしっぽをふったときは後ろ、後ろにしっぽをふったときはしっぼが前に曲がるようなアニメーションが必要な場合は、マルチチェーン ソルバを使用します。マルチチェーン ソルバを使用するとスケルトンの動作が安定しないので、Run IK ツールを使用してスケルトンの動きを固定する必要があります。
シングルチェーン ソルバとの違いについて詳しくは、「シングルチェーン ソルバを使用する」を参照してください。
場合によっては、マルチチェーン ソルバを使用して、スケルトンにシングルチェーン ソルバでは達成できない、特殊なアニメーションを作成できます。たとえば、しっぽを前後に振りながら、しっぽを前にふったときは後ろ、後ろにふったときはしっぼが前に曲がるようなアニメーションが必要な場合は、マルチチェーン IK ハンドルを使用します。
マルチチェーン IK ハンドルを選択しているときは、Information Window の IK Handle info セクションにある、シングルチェーン IK に関する 3 つの項目は表示されなくなります。
値はスケルトンチェーンにある他のハンドルに対して相対的で、ハンドルの影響の強さを指定する数値です。
このボックスにチェックマークを付けてオンにすると、ハンドルはスケルトンのエンドエフェクタの位置を指定するために使用できます。
このボックスにチェックマークを付けてオンにすると、ハンドルはエンドエフェクタの親ジョイントの方向を指定するのに使用できます。
Position をオンにしてIK ハンドルを指定した場合、シングルチェーン IK の動作と同じように、IK ハンドルを動かすとそれに合わせてスケルトンのエンド エフェクタも移動します。
Orientation をオンにして IK ハンドルを指定した場合、IK ハンドルを回転させるとエンド エフェクタの親ジョイントの回転角度が変化し、エンド エフェクタを指すボーンの方向が IK ハンドルの方向に合わせられます。
左の図は Position がオンの場合と、Orientation がオンの場合の例です。
マルチチェーン IK ハンドルに対して Position と Orientation の両方を指定した場合、両方の動作が組み合わされます。IK ハンドルを移動するとエンドエフェクタも移動し、エンドエフェクタを指すボーンはハンドルの方向に合わせて回転します。
IK ハンドルの詳細については、「簡単な背骨のチェーンを作成する」を参照してください。
マルチチェーン IK ソルバを使用すると、IK ハンドルを重複させることができます。たとえば、肩から手首までのIK ハンドルを 1 つ作成し、さらに肩からひじに 2 目めの IK ハンドルを作成できます。
既定では、重複する IK ハンドルは、IK チェーンに対し、同じ影響力を持ちます。
次の例では、肩からひじまでのハンドルを引き下げると同時に、肩から手首までのハンドルを引き上げると、腕は 2 つのハンドルを同じ Weight で満足させるような位置に移動します。
あるハンドルの影響をもう 1 つのハンドルより強くする場合は、Information Window でこのハンドルの Weight を調整します。この例で、肩からひじまでに付加された IK ハンドルの影響を小さくするには、この IK ハンドルの Weight を小さい値(たとえば、0.1)に設定します。その結果、下図に示すように、腕のスケルトンは肩から手首に付加されたハンドルの影響をより強く受けるようになります。
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 ハンドルと同様、スプライン ハンドルはスケルトンに影響を与えるコンストレインです。スプライン ハンドルは重なり合いません。
カーブが変形、またはアニメーション化されると、スケルトン チェーンはカーブのこの変化に合わせようとします。また、ルート ハンドルの位置や回転を変換したりアニメーション化したりして、カーブに沿ってローリングさせながらチェーンの位置を変更できます。マスター ハンドルを回転させると、チェーンにあるジョイントがそれぞれねじ曲げられます。オブジェクトに対してルート ジョイントを Point コンストレインさせると、チェーンのスタート位置がコンストレインされます。
スプライン ハンドルには以下の 2 種類があります。
ルート ハンドルが作成されていない、または削除されたなどの理由で、ルート ハンドルを持たないスケルトン チェーンがマスター スプライン ハンドルにより制御される場合があります。このとき、ルート ジョイントは固定されたままになり、チェーンのうち固定されていないカーブと接触する部分だけがスプライン カーブの後に続きます。しっぽはその良い例です。しっぽは胴体にアタッチされていますが、その終端は固定されておらず、カーブに沿って引きずられます。ルート ハンドルには、必ずマスター ハンドルが必要です。
スプライン ハンドルでカーブ上の位置を定義する方法には、パラメータによる方法と、円弧長による方法があります。どちらの測定方法をとるにしても、相対的なパーセント値を使用します。
次の図はスプライン カーブ上にパラメータの距離と円弧長で設定したポイントを示したものです。図の各ポイントは、それぞれパラメータ絶対値、パーセント パラメータ相対値、円弧長絶対値、パーセント円弧長相対値を表しています。
各スプライン ハンドルに対しては、各ポイントまたは各位置を定義するのにパラメータ相対値および円弧長相対値しか使用できません。
チェーンのローリングとは、下位のボーンを回転軸としてルート ジョイントを回転させることを意味します。下位のジョイントはすべて上部のジョイントから回転を継承するので、ルート ジョイントが回転すればチェーン全体がローリングします。
チェーンをねじるとは、各ジョイントの下位のボーンを回転軸として使用し、末端のジョイントを除くジョイントをそれぞれ回転させることを意味します。マスター ハンドルの Twist Root アトリビュートが ON の場合、ねじれはルート ジョイントから開始されます。それ以外の場合、ねじれは第 2 ジョイントから開始されます。
スプライン ハンドルの制御に使用できるねじれのタイプには、次の 4 種類があります (詳細については、Information Window の Twist Type を参照してください)。
スプライン ハンドルに関する情報の入手方法
IK ハンドルを選択して Windows > Information > Information Window を選択すると、スプライン ハンドルに関する情報が表示されます。
その他のコントロールについては、「簡単な背骨のチェーンを作成する」を参照してください。
ルート ハンドルが選択されている場合の Information Window には、IK handle info セクションに次のようなオプションが追加表示されます。
スプライン ハンドルが対象とするカーブです。
スプライン ハンドルでカーブ上の位置を定義する方法には、パラメータによる方法と、円弧長による方法があります。
キー(Windows)または
キー(Mac)を押したままで
を押し、[Position]フィールドをスクロールして位置を変更できます。また、Position フィールドに直接値を入力することもできます。
キー(Windows)または
キー(Mac)を押したままで
を押し、Roll deg フィールドをスクロールしてローリングの角度を変更できます。また、Roll deg フィールドに直接値を入力することもできます。
スプラインチェーンがスパイラルカーブパスに沿って移動するときに、予期しないところで、180 度反転したり、軸が変更されたりすることがあります。この動作を制御するには、Anti Flip > CURVE_NORMAL または Anti Flip > WORLD_UP を選択します。既定では、これは NONE に設定されています。
Anti_Flip が CURVE_NORMAL または WORLD_UP に設定されている場合、UP Axis および Front Axis を設定する必要があります。この 2 つの軸には、それぞれ異なる回転が設定されていなければなりません。
Anti_Flip により、ルート ジョイントの方向がコンストレインされます。定義された Front Axis はカーブの接線をたどります。Up Axis は Front Axis に直交します。
カーブ パスの方向によっては、Anti_Flip のセットアップを試した方がよい場合があります。
マスター ハンドルの Information Window から、ねじれの種類や角度を変更することができます。
スプライン ハンドルが対象とするカーブです。
マスター スプライン ハンドルには 4 種類のコントロールが用意されていて、このポップアップ メニューから指定できます。
ねじれがルートジョイントから始まるようにするには、このオプションにチェックマークを付けてオンに設定します。チェックボックスのチェックマークが外れオフになっている場合、ねじれは第 2 ジョイントから開始されます。
このフィールドに角度を表す数値を入力して、ねじれの角度を設定できます。 キー(Windows)または
キー(Mac)と
を使用してスクロールすると、角度の値をインタラクティブに変更することができます。
Alias で SDL ファイルを保存するとき、IK とコンストレインのアニメーションは Render Globals ウィンドウで指定したキーフレームの範囲しか書き込まれません。
これは、SDL ファイルの開始フレームと終了フレームを編集するときに、オリジナルの開始/終了範囲の外側にコンストレイン/IK アニメーションが存在しないということを意味します。
不明になっているコンストレイン/IK アニメーションを得るためには、SDL ファイルを保存し直す必要があります。