コントロールリグのフルボディ インバース キネマティクス (Full Body Inverse Kinematic: FBIK) 機能を使用すると、コントロールリグで高度なコントロールと柔軟性を備えるリグを作成することができます。全体的なソルバ方式は 位置ベースの IK フレームワークに基づいてビルドされているため、リグのパフォーマンスの迅速化、ボーンごとの設定、優先角度、押しつぶし、引き伸ばしなどが可能になります。FBIK は、地面との接地、腕を伸ばす動作など、コントロールリグ内のプロシージャルな調整ツールとして機能するように設計されています。
このドキュメントでは、FBIK ノードと FBIK の各種機能を作成する方法の概要を説明します。
前提条件
- FBIK は コントロールリグ グラフ 内の 1 つのノードであるため、コントロールリグ エディタについて理解していること。
-
FullBodyIK プラグインを有効にしていること。このプラグインを有効にするには、Unreal Editor メニュー バーで [Edit (編集)] > [Plugins (プラグイン)] の順に選択し、「FullBodyIK」を検索します。プラグインを有効にしたのを確認して、エディタを再起動します。
- キャラクターの Control Rig アセットを作成しており、コントロールの作成方法を理解していること。この実行方法の詳細については、「コントロール リグ クイックスタート」を参照してください。
作成および設定
FBIK はコントロールリグ内で使用できます。このためには、FBIK ノードを作成して、ボーンおよびエフェクタを適切なピンに割り当てます。
まず、コントロールリグ グラフで右クリックして、表示されるコンテキスト メニューから [Hierarchy (階層)] > [Full Body IK (フルボディ IK)] を選択します。これで Full Body IK ノードが作成されます。このノードを Forwards Solve ノードに接続します。

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

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

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

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

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

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

ボーンの設定
設定によっては、FBIK の基本動作が意図した通りに動作しないことがあります。この場合、特定のボーン設定が有効になっていない可能性があります。Bone Settings は Full Body IK ノード内のプロパティで、FBIK を反映させる各ボーンの動作を制御するために使用されます。
Bone Settings を Full Body IK ノードに追加するには、Bone Settings の横にある 追加 (+) ボタンをクリックして、Bone プロパティで反映させるボーンを指定します。各ボーン設定は単一のボーンにのみ反映されるため、リグで発生している特定の問題に応じて、複数のボーン設定を追加することをお勧めします。

ヒューマノイドの例では、次のような問題があります。
-
ヒップが過度に回転および平行移動する。
-
脚が十分に曲がらず、見た目が固くなる。
-
足首の回転が過度に上向きで、不自然なポーズになる。
Bone Settings でこういった問題を解決することで、希望の IK セットアップに対応することができます。
回転および位置の剛性
Rotation/Position Stiffness プロパティは、IK チェーンのボーンがコントロールやエフェクタにどのくらい反映されるかを制御するために使用されます。これらのプロパティを使用して、pelvis (骨盤) ボーンがコントロールの動きを反映する量を変更します。値を「0」に設定すると完全に自由な動きが可能になり、「1」を設定するとボーンの動きが完全にロックされます。

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

Preferred Angles
Preferred Angles を使用すると、エフェクタに達するためのジョイントの特定の軸に沿った回転を優先付けをすることができます。ヒューマノイドの例では、Preferred Angles は脚と膝の固さの問題を解決するために使用されます。
Bone Setting エントリの下部に、Preferred Angles のプロパティがあります。また、これらの Preferred Angles を使用するには、Use Preferred Angles がオンであることを確認する必要があります。

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

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

各軸には、以下の制限を適用できる設定があります。
- Free。ボーンを自由に動かすことができます。
- Limited: 指定された範囲内でのみ動くことができます。これが選択されている場合、Min/Max プロパティを使用して動きの範囲を定義します。
- Locked。その軸に沿った動きを無効にします。
ヒューマノイドの例では、これらの制限を使用して、足首の不自然な回転の問題を補正できます。Min Z に「-70」、Max Z に「70」を設定し、Z 軸を Limited に設定しています。

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

ボーンを完全に硬くしたりロックしたりするためには、Bone Settings のみを使用するのではなく、ボーンを除外することをお勧めします。
ボーンを除外するには、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 | 選択したボーンの軸上で許容される動きのタイプ。
|
Min/Max XYZ | 制限設定 として Limited が設定されている場合、Min/Max XYZ プロパティを使用して、許可される動きの範囲を指定します。 |
Use Preferred Angles | Preferred Angles の使用を有効にします。 |
Preferred Angles | チェーンが押しつぶされたときに、ボーンが各軸で回転する量を指定します。 |
設定 | |
Iterations | エフェクタが目的の位置に達するまで、この値を増やします。この値を上げると、FBIK チェーンの CPU 負荷が増大します。剛性 の追加、高い Mass Multiplier (質量倍率)、Rotation Limits (回転制限) はすべて収束率に反映されるため、この値に対してより多くの調整が必要になります。 |
Mass Multiplier | これは、回転や平行移動に対するボーンの抵抗の度合いに影響を及ぼすグローバルな値です。通常の値は 0.0~5.0 の間で、「0.0」は抵抗がまったくなく、「5.0」は抵抗がきわめて大きくなります。Mass Multiplier の値が大きいほど、収束に至るまでのイテレーション回数が多くなります。 |
Allow Stretch | これを有効にすると、IK チェーンに沿ったボーンがエフェクタに到達するように平行移動します。Position Stiffness の値はこの結果に影響を及ぼし、値が大きいほど伸縮は少なくなります。 |
Root Behavior | ソルバ ルートの動作を設定します。次のオプションから選択できます。
|
Start Solve from Input Pose | 有効であれば、現在の入力ポーズから開始されるように、ティックごとにソルバがリセットされます。無効であれば、アニメートされたポーズは無視され、ソルバは前回のソルブの結果から開始します。 |
デバッグ | |
Draw Scale | デバッグ行のサイズをコントロールする乗数。 |
Draw Debug | 有効にすると、FBIK ノードの IK チェーンに沿って反映されるすべてのボーンが表示されます。 |