PR

【UE5】Full Body IKノードの使い方

Unreal Engine 5

Unreal Engine 5のコントロールリグで、Full Body IKノードを使ってIKを実装する方法です。
このノードを使うと、手の位置に合わせて胴、肩、腕のボーンを自動で追従させる、といったことができます。
コントロールリグでFull Body IKを使う場合、Full Body IKプラグインが必要です。
プラグインは次の手順で導入できます。

  • レベルエディタのメニューで、「編集」をクリック
  • 「プラグイン」を選択
  • 「Full Body IK」にチェックを入れて導入

コントロールリグのアセットを開き、リググラフで作業します。

スポンサーリンク

1.Full Body IKノードの追加

Full Body IKノードを追加します。

  • コントロールリグエディタのリググラフ内で右クリック
  • 「Hierarchy」の「Full Body IK」を選択
スポンサーリンク

2.Full Body IKノードの実行設定

Full Body IKノードが実行されるようにノードを繋ぎます。

  • Forwards SolveノードのExcute出力を、Full Body IKノードのExcute入力に繋ぐ
スポンサーリンク

3.ルートボーンの設定

IKの起点となるルートボーンを設定します。
ルートボーンの子がIKの対象になります。

ドロップダウンリストから選択する場合

  • Full Body IKノードの「Root」右の欄をクリック
  • ドロップダウンリストから、ボーンを選択

リグ階層から選択する場合

  • 「リグ階層」で、ボーンを選択
  • Full Body IKノードの「Root」の欄の右にある「選択アイテムを使用」で設定
スポンサーリンク

4.コントロールの作成

コントロールはIKの計算目標となるもので、アニメーション作成の際は、コントロールを動かすことでボーンの姿勢を決めます。

コントロールの追加

リグ階層にコントロールを追加します。

  • 「リグ階層」で、IKの終端にするボーンを右クリック
  • 「新規」の「新しいコントロール」を選択して、コントロールを追加

コントロールは、ボーンと同じ位置姿勢で作成されます。

リグ階層の変更

コントロールはボーンの子として作成され、ボーンが動くとコントロールも動いてしまうため、階層を変更します。

  • 「リグ階層」でコントロールを選択
  • Shift+P、または右クリックして「親から解除」で階層から分離

公式でも、最終的にコントロールをボーンの階層から切り離すことを推奨しています。

覚え書き

コントロールの形状変更

  • 「リグ階層」でコントロールを選択
  • 「詳細」の「形状のプロパティ」で、コントロールの形状と色を、「形状トランスフォーム」で、大きさを変更
スポンサーリンク

5.Get Transformノードの追加

コントロールの位置を取得、出力する、Get Transformノードを追加します。

  • コントロールを、「リグ階層」からリググラフにドラッグ&ドロップ
  • 「コントロールを取得」を選択して、コントロールを対象としたGet Transformノードを追加
スポンサーリンク

6.コントロールと終端ボーンの関連付け

Full Body IKノードに、各コントロール用のEffectorsピンを追加し、コントロールに対応するボーンを設定します。

  • 「Effectors」右の「+」をクリックして、「Effectors」のピンを追加
  • 追加した「Effectors」のピンを開き、コントロールで操作するボーンを「Bone」に設定
  • Get TransformノードのTransform出力を、「Effectors」のTransform入力に繋ぐ

ここまでで、コントロールに従ってボーンが動くようになります。
以降は、スケルトンに合わせて、以下のような流れで詳細設定します。

スポンサーリンク

7.Bone Settingsの設定

Full Body IKノードのBone Settingsで、ルート~終端までのボーンの、移動と回転の制限を設定します。

  • 「Bone Settings」右の「+」をクリック
  • 「Bone」を設定
  • 各項目を設定
スポンサーリンク

8.Excluded Bonesの設定

Full Body IKノードのExcluded Bonesで、IKから除外するボーンを設定します。

  • 「Excluded Bones」右の「+」をクリック
  • 追加したピンにボーンを設定
スポンサーリンク

9.Settingsの設定

Full Body IKノードのSettningsで、ノード全体とルートボーンについて設定します。

例えば、ルートボーンを動かさないようにする場合は

  • 「Settings」の「ルートの動作」を「Pin to Input」に変更
スポンサーリンク

10.Effectorsの設定

コントロールの影響の設定は、Effectorsの項目を調整します。

例えば、ロボットアームのような、複雑な拘束がある場合は

  • 「Pull Chain Alpha」を0に変更

各設定項目については、下の記事にまとめています。

スポンサーリンク

Tips

関節の角度制限がうまく働かない場合の対応方法

問題点と変更結果

下半身を60°捩じって片足を持ち上げると、脚が意図しない方向に曲がってしまったため、コントロールリグを変更して対策しました。

変更前の設定

リグ構成は、足のIKコントロールを下半身とは別のコントロールの子にして、両足セットで動かすようにしています。
グラフは、FKで上半身、下半身を捩じる処理を先にして、フルボディIKのコントロール位置をGlobal Spaceで取得しています。

変更後の設定

リグ構成は、足のIKコントロールを下半身のコントロールの子にしました。
グラフは、フルボディIKを先にして、コントロール位置をLocal Spaceで取得しました。

補足

この問題の原因は、フルボディIK実行時に、初期姿勢のボーンの座標軸を参照してボーンを回転しているためだと思います。
下半身を捩じる→フルボディIKの順だと、フルボディIKの処理では、姿勢が変わったボーンを、初期姿勢の座標軸で回転するので、意図したように曲がりません。
フルボディIK→下半身を捩じるの順だと、初期姿勢のボーンの座標軸でボーンを回転するので、意図通りに曲がります。

以上です。

コメント

タイトルとURLをコピーしました