PR

【UE5】コントロール位置をずらす方法

Unreal Engine 5

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を移動

以上です。

コメント

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