アルゴンUE4/UE5開発日記

UE4/UE5の機能やプラグインを紹介します。初心者や中級者向けになってます!!

【UE5】MotionMatchingを簡易的に試す

MotionMatchingを試します!(^o^)

今回はUE5.4でMotionMatchingをだいぶ簡易的に試してみました。

FootIKも移植して設定してみました。

だいぶ動きが不自然な部分が多いので

◎参考資料

Your First 60 Minutes With Motion Matching | Tutorial

https://youtu.be/S4aBd64t-hY?si=NEPUYfeQXHtgJ5QR

https://www.youtube.com/watch?v=RpSDdKcdNEI

※UE5.4.3で検証しています。
※間違っている部分等ありましたらコメントいただけると幸いです。
※画像をクリックまたはタップすると大きくできるので活用ください。

モーションの準備

今回はLyraからアニメーションを取り出します。

まずはLyraStarterGameをインストールします。

Lyraプロジェクト作成

Lyraプロジェクトの下記フォルダまで移動します。

Game/Characters/Heroes/Mannequin/Animations/Locomotion/Unarmed

フィルターでアニメーションシーケンサーを選択して、

シーケンサーのみを出力するようにします。

アニメーションシーケンスのみを選択

シーケンサーのみを選択して移行を選択します。

アセットを右クリックして移行を選択

選択したら今度はシーケンサー以外のファイルのチェックを外して、

シーケンサーのみを選択するようにします。

移行するフォルダの選択

これで移行すれば完了になります。

・目次に戻る

MotionMatchingの設定

モーションを移行したらMotionMatching用に、

Motion Trajectoryプラグインにチェックを入れます。

MotionTrajectoryプラグインのON

そしたら移行したモデルがアニメーションシーケンスなので、

ボーンを変更してあげます。

ケルトンを交換でSK_Mannequinを選択して交換します。

スケルトンの交換を選択

これでアニメーションシーケンスのボーンの設定は完了したので、

プロパティマトリックスを開きます。

アニメーションのプロパティマトリクス選択

開いたらリスト上にアニメーションシーケンスが並んでいるので、

Ctrl+aで全選択して「EnableRootMotion」と、

「ForceRootLock」にチェックを入れてこれで設定完了になります。

EnableRootMotionとForceRootLockにチェックを入れる

今度はMotionMatchingの動作設定を作成していきます。

ポーズ検索スキーマを作成しておきます。

ポーズ検索スキーマの方で行っていることは主に下記の部分を設定しています。

※今回は特に設定変更がないので設定している内容だけ説明します。

・どのスケルタルメッシュを活用してアニメーションを行うかの設定
・どのボーンの動きを察知してアニメーションを選定するかと重要度合いの設定

ポーズ検索スキーマの設定

続いてポーズ検索データベースも作成します。

ポーズ検索データベースの作成

データベースの方でアニメーションシーケンスを追加していきます。

追加する際はコンテンツブラウザからドラッグして追加を行います。

アニメーションシーケンスをドラッグアンドドロップで追加

今回追加しているアニメーションシーケンスは下記になります。

・MF_Unarmed_Idle_Break
・MF_Unarmed_Idle_Ready
・MF_Unarmed_Jog_Bwd
・MF_Unarmed_Jog_Bwd_Pivot
・MF_Unarmed_Jog_Bwd_Start
・MF_Unarmed_Jog_Bwd_Stop
・MF_Unarmed_Jog_Fwd
・MF_Unarmed_Jog_Fwd_Pivot
・MF_Unarmed_Jog_Fwd_Start
・MF_Unarmed_Jog_Fwd_Stop
・MF_Unarmed_Jog_Left
・MF_Unarmed_Jog_Left_Pivot
・MF_Unarmed_Jog_Left_Start
・MF_Unarmed_Jog_Left_Stop
・MF_Unarmed_Jog_Right
・MF_Unarmed_Jog_Right_Pivot
・MF_Unarmed_Jog_Right_Start
・MF_Unarmed_Jog_Right_Stop

追加したらアニメーションBPを作成して設定していきます。

まずはアニメグラフ内の動きを作っていきます。

motionmatchingで検索して「ポーズ検索」の「MotionMatching」を選択します。

MotionMatchingを選択

MotionMatchingを作成したらDatabaseに先ほど作成した、

ポーズ制作データベースのファイルを指定します。

指定することが完了したら、

ポーズをドラッグして「Pose History」を作成します。

DataBaseの指定とPoseHistoryの作成

ここまで完了したら今回のキャラクターに適応していきます。

作業としてはキャラクターキャラクター軌道コンポーネントを追加します。

キャラクターで検索するとでてくるかと思います。

キャラクター軌道コンポーネントの追加

こちらを設定したらアニメーションBPのイベントグラフ側の処理を作成します。

TryGetPawnOwnerからCastして操作するキャラクターBPを変数で保持して、

先ほどキャラクターBPに追加した軌道コンポーネント情報を更新しています。

※BP Third Person Character変数はキャストしたところから作成しました。

アニメーションBP側のイベントグラフ処理

そして再度アニメグラフ側を開いて、

「Pose History」というものを追加したかと思いますが、

Trajectoryの指定が行われていないので設定します。

Tranjectoryのリストを選択してバインディングリストから、

プロパティの「Character Trajectory」の「Trajsectory」を選択します。

Tranjectoryの設定

ここまで設定したらAnimationBPも完了になります。

最後まで設定すると下記の画像になります。

AnimationBPのアニメグラフの完了結果

最後にキャラクターBPの方のAnimクラスを作成したBPを適応して、

CharacterMovementのキャラクタ移動(回転設定)で、

UseControllerDesiredRotationをON、Orient Rotation to MovementをOFFにします。

AnimBPの変更

各種キャラクターの回転の動き

これで設定は完了になります。

実際に動かした動画はこちらになります。

・目次に戻る

FootIKの追加

動画のほうで見てみると若干足が浮いている状態に、

なってしまっているのでFootIKを設定していきます。

元々設定してあるThirdPersonCharacterのFootIK用ノードを活用します。

FootIKのアニメーションノードの追加

アニメーションノードの方はこれでOKで今度はイベントグラフ側を更新します。

CharacterMovementをCharacterBP変数から取得して、

Is Fallingの状態かどうかをチェックする処理を追加して完了になります。

アニメーションBP側のイベントグラフ処理

実際に動かしてみましょう。

これで足の不自然な隙間はある程度緩和されたと思います。

デバッグコマンドがあり「a.CharacterTrajectory.Debug 1」を活用してます。

・目次に戻る

最後に

こちらで設定の説明は以上になりますが、

このままだと複数の動作で不自然な箇所が多いので、

各種設定をまとめた内容も作成したいと思います。

・目次に戻る