Unreal Engine 5のコントロールリグで、FK(ボーンの位置姿勢を直接操作する手法)を使ってモデルを動かす方法です。
ノードベースのリググラフを使って、処理を実装します。
FKでは操作するボーンと親ボーンは動かないので、ボーンを移動すると親子の位置関係がずれます。そのため、基本的にはボーンを回転させるために使います。
1.コントロールの作成
ボーンを操作するためのコントロールを作成します。
コントロールの追加
リグ階層にコントロールを追加します。
- コントロールリグのファイルを開き、「リグ階層」で、動かすボーンを右クリック
- 「新規」の「新しいコントロール」を選択して、コントロールを追加
コントロールは、ボーンと同じ位置姿勢で作成されます。
リグ階層の変更
コントロールはボーンの子として作成され、ボーンが動くとコントロールも動いてしまうため、階層を変更します。
- 「リグ階層」でコントロールを選択
- Shift+P、または右クリックして「親から解除」で階層から分離
公式でも、最終的にコントロールをボーンの階層から切り離すことを推奨しています。
覚え書き
コントロールの形状変更
- 「リグ階層」でコントロールを選択
- 「詳細」の「形状のプロパティ」で、コントロールの形状と色を、「形状トランスフォーム」で、大きさを変更
2.リググラフの作成
コントロールのTransform取得処理の実装
ボーンのTransformをコントロールの位置姿勢にあわせるための値として、コントロールのTransformを取得する処理を実装します。
- コントロールを、「リグ階層」からリググラフにドラッグ&ドロップ
- 「コントロールを取得」を選択して、コントロールを対象としたGet Transformノードを追加
ボーンのTransform変更処理の実装
コントロールのTransformに合わせて移動するように、ボーンのTransformを変更する処理を実装します。
- コントロールで動かすボーンを、「リグ階層」からリググラフにドラッグ&ドロップ
- 「ボーンを設定」を選択して、ボーンを対象としたSet Transformノードを追加
- Get TransformノードのTransform出力を、Set TransformノードのValue入力に繋ぐ
- Forwards SolveノードのExcute出力を、Set TransformノードのExcuteContext入力に繋ぐ
これで、コントロールのTransform情報を使って、ボーンをTransformを設定する処理が実行されます。
以上で、ボーンをコントロールを操作して動かす、FK操作ができるようになりました。
コメント