Unreal Engine 5のコントロールリグで、コントロールをボーンからずらすためのリグ構成と処理の実装方法です。
リググラフ内で、直接コントロール位置を設定すると、コントロールを動かせなくなってしまうため、リグ構成にNullを使って対処しました。
また、形状プロパティの表示位置オフセットでは、コントロールを回転すると、実際のコントロールの位置中心で表示が回転したため、別の方法にしました。
1.リグ構成の作成
以下の問題を回避するため、Nullとコントロールの親子関係を作る必要があります。
・Set Transformノードでコントロールを動かすと、FKの操作ができなくなる。
・コントロールのグローバル座標でボーンを動かすと、コントロールをずらせない。
- コントロールリグのファイルを開き、「リグ階層」でコントロールをNullにドラッグ&ドロップしてリグ構成を変更
2.リググラフの作成
コントロールリグのリググラフで、処理を実装します。
処理全体の概要
コントロールのローカル位置姿勢の変化分だけボーンを動かす→Nullを初期グローバル位置から指定距離(ここではX方向に200)の位置に動かす、という流れです。
前提条件として、Null、コントロール、ボーンの座標は、初期状態で完全に一致しています。
ボーンの移動回転処理の実装
コントロールのローカル移動回転分だけ、ボーンを移動回転します。
- Get Transformノードで、コントロールの初期と現在のローカル位置姿勢を取得
- Subtractノードでコントロールの移動量を計算
- InverseノードとMultiplyノードで、コントロール回転量を計算
- Offset Transformノードで、ボーンを移動
親にしているNullのグローバル移動回転の影響を受けないために、コントロールの移動回転量の取得はローカル座標を利用します。
Nullの移動処理の実装
コントロールをボーンからずらしたい分だけ、Nullを移動します。
- Get Transformノードで、Nullの初期グローバル位置を取得
- Add、またはSubtractノードで移動する位置を計算
- Set Transformノードで、Nullを移動
以上です。
コメント