PR

【UE5】ブレンドスペースの作り方

Unreal Engine 5

Unreal Engine 5で、アニメーションシーケンス同士を条件に基づいて合成する、ブレンドスペースの作り方です。
前後左右の歩行アニメーションから、斜め方向の歩行アニメーションを合成してみます。

スポンサーリンク

ブレンドスペースの概要

ブレンドスペースは、グラフの縦軸と横軸にパラメータ(速度、方向など)を設定し、そのグラフ上にアニメーションシーケンスを配置したものです。

パラメータの値を決めると、アニメーションが合成されます。
ブレンドスペースはアニメーションブループリント内で参照され、値を入力するとアニメーションが出力され、キャラクターに反映されます。

スポンサーリンク

アセットの作成

ブレンドスペースのアセットを作成します。

コンテンツブラウザでフォルダを選択→フォルダ内で右クリック→「アニメーション」→「ブレンドスペース」→スケルトンを選択、で作成します。

スポンサーリンク

軸パラメータの設定

ブレンドスペースを開き、グラフの水平軸、垂直軸のパラメータを設定します。
今回は、縦軸を前方向の移動速度、横軸を横方向の移動速度とします。

「アセット詳細」→「水平軸」/「垂直軸」にパラメータを設定するとグラフに反映されます。

覚え書き

「Snap to Grid」は、配置するアニメーションシーケンスをグリッドにスナップします。

「Wrap Input」は、キャラクターから取得する値が軸の最大、最小値外になることを許容し、循環型のパラメータとして扱われます。パラメータが角度の場合に使えそうです。
「Smoothing Time」についてはまだわかりませんが、説明を見た感じ、キャラクターから取得する値の変化にアニメーションが追従する速さだと思います。

スポンサーリンク

アニメーションの配置

アニメーションシーケンスをグラフに配置します。

「アセットブラウザ」からグラフに、アニメーションシーケンスをドラッグ&ドロップで配置します。
この時、Shiftキーを押しながらドラッグすると、グリッドにスナップして配置できます。

原点に待機、上下に前後移動、左右に横移動のアニメーションを配置しました。
グラフ内の緑色の×印は、プレビューに表示するアニメーションのパラメータ設定です。

スポンサーリンク

アニメーションの調整

ブレンドするアニメーションによっては、思い通りの合成結果が得られません。

この組み合わせでは、アニメーション同士の足の動きが相殺して、足がほとんど動きません。

対策として、後方移動のアニメーションの足の動きを反転すると、ある程度足が動くようになりますが
左後方(画像右奥)に移動するようには見えません。

前に進むように脚が動く左移動と、後ろに下がるように脚が動く後方移動の合成は諦め、左移動でも後ろに下がるような脚の動きにして合成すると、うまくいきました。

結果的に、前向き移動用と、後ろ向き移動用にブレンドスペースを分ける必要がありました。

スポンサーリンク

アニメーションブループリントの変更

アニメーションブループリントのイベントグラフで変数を取得し、AnimGraphで変数を使ってステートの遷移とブレンドスペースの再生を行います。

イベントグラフ内の処理

全体

全体としては、移動ベクトルをローカル座標への変換と、前進しているかどうかの判定を行い、変数として取得します。

詳細1

キャラクターのTransformとグローバル座標での移動速度から、「Inverse Transform Direction」で座標変換し、ローカル座標での移動速度を取得します。
「Character」、「Movement Component」は作成した変数で、「Get Owing Actor」と「Cast To Character」を使って取得したものです。

詳細2

ローカル座標での、X軸方向(前方向)への移動速度が-5以上かどうか判定し、結果を取得します。
真横に移動する場合は、前方向に移動するアニメーションにしたいので、閾値を0ではなく-5にしています。

AnimGraph内の処理

ステートの遷移

前に移動するステートと後ろに移動するステートを、ローカルX軸方向(前方向)への移動判定で遷移させます。

ステート内の処理

イベントグラフで取得したローカル座標での移動速度を、ブレンドスペースのパラメータとして設定し、ブレンドスペースで合成したアニメーションを出力します。
ブレンドスペースのノードは、Blendspace Player ‘ファイル名’で検索して追加します。
上図は前に移動するステートの内容ですが、後ろに移動するステートの処理も同じです。

以上です。

コメント

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