フルボディ IK

キャラクターのフルボディ IK を構築する

Choose your operating system:

Windows

macOS

Linux

コントロールリグのフルボディ インバース キネマティクス (Full Body Inverse Kinematic: FBIK) 機能を使用すると、コントロールリグで高度なコントロールと柔軟性を備えるリグを作成することができます。全体的なソルバ方式は 位置ベースの IK フレームワークに基づいてビルドされているため、リグのパフォーマンスの迅速化、ボーンごとの設定、優先角度、押しつぶし、引き伸ばしなどが可能になります。FBIK は、地面との接地、腕を伸ばす動作など、コントロールリグ内のプロシージャルな調整ツールとして機能するように設計されています。

このドキュメントでは、FBIK ノードと FBIK の各種機能を作成する方法の概要を説明します。

前提条件

  • FBIK は コントロールリグ グラフ 内の 1 つのノードであるため、コントロールリグ エディタについて理解していること。

  • FullBodyIK プラグインを有効にしていること。このプラグインを有効にするには、Unreal Editor メニュー バーで [Edit (編集)] > [Plugins (プラグイン)] の順に選択し、「FullBodyIK」を検索します。プラグインを有効にしたのを確認して、エディタを再起動します。

    full body ik plugin

  • キャラクターの Control Rig アセットを作成しており、コントロールの作成方法を理解していること。この実行方法の詳細については、「コントロール リグ クイックスタート」を参照してください。

作成および設定

FBIK はコントロールリグ内で使用できます。このためには、FBIK ノードを作成して、ボーンおよびエフェクタを適切なピンに割り当てます。

まず、コントロールリグ グラフで右クリックして、表示されるコンテキスト メニューから [Hierarchy (階層)] > [Full Body IK (フルボディ IK)] を選択します。これで Full Body IK ノードが作成されます。このノードを Forwards Solve ノードに接続します。

create full body ik control rig node

リグ グラフの設定

次に、Full Body IK ノードで Root ボーン プロパティを設定します。通常のフルボディ設定では、これは、ほとんどの場合、ヒップまたは骨盤のボーンになります。

full body ik root bone

FBIK システム用に選択したコントロールを作成して、追加します。通常、これらのコントロールは反映させたい手足に対応しており、チェーンの主要な終端ボーンに基づいています。この例では、頭部、手、脚のコントロールを作成します。

full body ik controls

エフェクタの設定

グラフに追加された各コントロールに Effector ピンを追加する必要があります。これには、Effectors プロパティの横にある 追加 (+) ボタンをクリックします。エフェクタは、各コントロールに作成する必要があります。

full body ik effectors

エフェクタのエントリの 1 つを展開すると、そのプロパティが表示されます。各エフェクタ内で、コントロールに対応する Bone 値を設定して、対応する Get Transform ノードから Transform ピンを接続します。

full body ik effectors

すべてのエフェクタおよびコントロールが接続されるまで、同じ方法で対応する Get Transform ノードに各エフェクタを接続します。

full body ik effectors

設定の結果

これでキャラクター用の基本的な FBIK をセットアップできました。コントロールリグ ビューポートでコントロールを操作して、結果がどのようになるか確認してみましょう。

full body ik setup

ボーンの設定

設定によっては、FBIK の基本動作が意図した通りに動作しないことがあります。この場合、特定のボーン設定が有効になっていない可能性があります。Bone Settings は Full Body IK ノード内のプロパティで、FBIK を反映させる各ボーンの動作を制御するために使用されます。

Bone Settings を Full Body IK ノードに追加するには、Bone Settings の横にある 追加 (+) ボタンをクリックして、Bone プロパティで反映させるボーンを指定します。各ボーン設定は単一のボーンにのみ反映されるため、リグで発生している特定の問題に応じて、複数のボーン設定を追加することをお勧めします。

full body ik bone settings

ヒューマノイドの例では、次のような問題があります。

  • ヒップが過度に回転および平行移動する。

    fbik hips pelvis

  • 脚が十分に曲がらず、見た目が固くなる。

    fbik legs bend

  • 足首の回転が過度に上向きで、不自然なポーズになる。

    fbik ankle bend

Bone Settings でこういった問題を解決することで、希望の IK セットアップに対応することができます。

回転および位置の剛性

Rotation/Position Stiffness プロパティは、IK チェーンのボーンがコントロールやエフェクタにどのくらい反映されるかを制御するために使用されます。これらのプロパティを使用して、pelvis (骨盤) ボーンがコントロールの動きを反映する量を変更します。値を「0」に設定すると完全に自由な動きが可能になり、「1」を設定するとボーンの動きが完全にロックされます。

fbik stiffness

ヒューマノイドの例では、ボーン設定として骨盤ボーンが指定されており、Rotation StiffnessPosition Stiffness の両方の値に「0.8」が設定されています。この場合は、若干動くことが求められます。

fbik stiffness

Preferred Angles

Preferred Angles を使用すると、エフェクタに達するためのジョイントの特定の軸に沿った回転を優先付けをすることができます。ヒューマノイドの例では、Preferred Angles は脚と膝の固さの問題を解決するために使用されます。

Bone Setting エントリの下部に、Preferred Angles のプロパティがあります。また、これらの Preferred Angles を使用するには、Use Preferred Angles がオンであることを確認する必要があります。

fbik preferred angles

指定する Preferred Angle プロパティは、キャラクターのタイプとそのジョイント構造に応じて異なります。この例では、マネキンの膝を Z 軸 に沿って正の方向に曲げる必要があるため、Z プロパティに「45」という値を設定します。

fbik preferred angles

制限

Limits は、IK チェーンに沿ったボーン軸の回転の範囲を制限するため、または完全にロックするために使用できます。制限設定は、Stiffness プロパティと Preferred Angles プロパティの間にあります。

fbik limits

各軸には、以下の制限を適用できる設定があります。

  • Free。ボーンを自由に動かすことができます。

  • Limited: 指定された範囲内でのみ動くことができます。これが選択されている場合、Min/Max プロパティを使用して動きの範囲を定義します。

  • Locked。その軸に沿った動きを無効にします。

ヒューマノイドの例では、これらの制限を使用して、足首の不自然な回転の問題を補正できます。Min Z に「-70」、Max Z に「70」を設定し、Z 軸を Limited に設定しています。

fbik limits

ボーンを除外する

リグの必要に応じて、FBIK ソルブからボーンを除外する必要がある場合があります。これは、不自然に見えるポーズを修正したり、FBIK 動作を簡略化する場合に役立ちます。

fbik excluded bones

ボーンを完全に硬くしたりロックしたりするためには、Bone Settings のみを使用するのではなく、ボーンを除外することをお勧めします。

ボーンを除外するには、Excluded Bones の横にある 追加 (+) ボタンをクリックして、ドロップダウン メニューから除外するボーンを選択します。

fbik excluded bones

ノードのリファレンス

Full Body IK ノードのすべてのピンと設定のリストを以下に示します。

名称

説明

Root

FBIK チェーンのルート ボーン。

エフェクタ

Bone

IK チェーンの末端ボーン。1 つのコントロールに対応しています。

Transform

末端ボーンをコントロールするために使用するトランスフォーム。通常、これは末端ボーンと同じトランスフォーム情報を共有するコントロールにリンクされた Get Transform ノードで指定されます。

Position Alpha

このプロパティは、エフェクタまたはボーンが目標とする 位置 に到達できる能力に重みを設定します。「1」の場合、エフェクタは目標のトランスフォームを実現できるように最大限の処理を行います。「0」の場合、エフェクタは入力ポーズを維持します。

Rotation Alpha

このプロパティは、エフェクタまたはボーンが目標とする 回転 に到達できる能力に重みを設定します。「1」の場合、エフェクタは目標のトランスフォームを実現できるように最大限の処理を行います。「0」の場合、エフェクタは入力ポーズを維持します。

Strength Alpha

このプロパティは、IK チェーンに対するこのエフェクタの影響の強さに反映されます。「0」の場合、エフェクタはエフェクタ自身の方にチェーンを引き寄せないため、他のエフェクタが優先されます。

Pull Chain Alpha

0.0 より大きい値を設定して有効にすると、FBIK ソルバはスケルトンをエフェクタから最も近いスケルトン階層の分岐まで伸びる「チェーン」に分割します。これを使用すると、まばらなボーン チェーンの結果を改善できますが、より複雑な拘束されたボーン チェーンの結果は望ましくありません。

Pin Rotation

エフェクタ トランスフォームの回転 (1.0) と入力ボーンの回転 (0.0) の間にエフェクタ ボーンの回転をブレンドします。

ボーン設定

Bone

これらの設定が適用される指定のボーン。エフェクタルート の間の階層にある任意のボーンを指定できます。

Rotation/Position Stiffness

ボーンの回転または平行移動プロパティに適用する剛性の量。値を「0」に設定すると自由な動きが可能になり、「1」を設定するとボーンが完全にロックされます。

XYZ Limit Setting

選択したボーンの軸上で許容される動きのタイプ。

  • Free: ボーンを自由に動かせるようにすることができます。

  • Limited: 指定された範囲内で動かすことができます。これが選択されている場合、Min/Max プロパティを使用して動きの範囲を定義します。

  • Locked: その軸に沿った動きを無効にします。

Min/Max XYZ

制限設定 として Limited が設定されている場合、Min/Max XYZ プロパティを使用して、許可される動きの範囲を指定します。

Use Preferred Angles

Preferred Angles の使用を有効にします。

Preferred Angles

チェーンが押しつぶされたときに、ボーンが各軸で回転する量を指定します。

設定

Iterations

エフェクタが目的の位置に達するまで、この値を増やします。この値を上げると、FBIK チェーンの CPU 負荷が増大します。剛性 の追加、高い Mass Multiplier (質量倍率)Rotation Limits (回転制限) はすべて収束率に反映されるため、この値に対してより多くの調整が必要になります。

Mass Multiplier

これは、回転や平行移動に対するボーンの抵抗の度合いに影響を及ぼすグローバルな値です。通常の値は 0.05.0 の間で、「0.0」は抵抗がまったくなく、「5.0」は抵抗がきわめて大きくなります。Mass Multiplier の値が大きいほど、収束に至るまでのイテレーション回数が多くなります。

Allow Stretch

これを有効にすると、IK チェーンに沿ったボーンがエフェクタに到達するように平行移動します。Position Stiffness の値はこの結果に影響を及ぼし、値が大きいほど伸縮は少なくなります。

Root Behavior

ソルバ ルートの動作を設定します。次のオプションから選択できます。

  • Pre Pull は、伸ばされたエフェクタの平均的な動きによって、ルートとすべての子を変換し、遠くに到達したときの収束を改善します。

  • Pin to Input により、ルートボーンの平行移動と回転が入力ポーズにロックされ、ルートに適用されているボーン設定が上書きされます。低距離の部分的なボディのセットアップに役立ちます。

  • Free により、ルートボーンはチェーン内の他のボーンと同じように動作し、自由に移動したり、適用されたボーン設定に従って移動したりできます。

Start Solve from Input Pose

有効であれば、現在の入力ポーズから開始されるように、ティックごとにソルバがリセットされます。無効であれば、アニメートされたポーズは無視され、ソルバは前回のソルブの結果から開始します。

デバッグ

Draw Scale

デバッグ行のサイズをコントロールする乗数。

Draw Debug

有効にすると、FBIK ノードの IK チェーンに沿って反映されるすべてのボーンが表示されます。