Game Animation Sampleで伏せよう#3

※本サイトはアフィリエイト広告を利用しています。

本記事では、UE5.5で伏せ姿勢を実際にアニメーション利用できるようにします。
初回記事

モーションマッチングのポーズサーチデータベースに登録します。UnrealEngineの公式アニメーションサンプルGASPで立ち・しゃがみに加えて伏せ・ほふく状態を追加しましょう。

アニメーションBP

ABP_SandboxCharacter を開きましょう 。  

まずはCBPで用意した伏せのフラグ IsProned を受け取り、アニメーションの切り替えに利用できるようにします 。
常に呼ばれるアップデート処理内で、立ちかしゃがみかの情報を受け取っている処理がここにあるので、伏せのフラグを受け取って伏せ状態にしましょう 。  

このスタンスという列挙型でアニメーションの大分類が切り替えられているので、まずはE_Stanceを探しましょう
Ctrl+Pでアセットピッカーを開き、E_Stance を検索します。開いて列挙子 Prone を追加しましょう。

CBP_SandboxCharacterのIsPronedがTrueの場合、Stance変数を今追加したProneにする処理を追加しましょう。

ABP_SandboxCharacter > UpdateStates

これでABPの準備は一旦完成です
が、伏せや匍匐のアニメーションは取り込んだだけで、まだ使う設定になっていませんね。  

チューザーテーブル

CHT_PoseSearchDatabases_Dense

ABPからここへのつながり・追加の仕方がわからない方は、過去記事で解説していますので、動画でわからない場合はそちらもチェックしてください。

 地面にいて伏せの時(MovementMode=OnGround かつ Stance=Prone)でよいですね

伏せの時どのアニメーションを再生するかのデータ(PSD ポーズ検索データベース)は横並びで近そうなやつを真似しましょう。これは一旦しゃがみのやつを設定して、ファイルの場所に飛び、複製して作ると楽かなと思います。  

PSD_Dense_Crouch Idle(しゃがみ時の休憩状態)には、立ち状態からしゃがみ状態への遷移と、しゃがみ状態のアイドルアニメーションが登録されていますね 。  

リスト右端の目玉を閉じると無効化されます。
使うアニメーションは Enable Root Motion にする必要があります。

あと、アイドルのアニメーションはループ再生させたいので Loop のチェックもつけましょう。  

これで一旦は準備完了です。伏せられましたが、そわそわしてますねw 

バウンド問題

アイドルだけにするとバウンドしなくなりました。ということはStand to Proneに問題ありと。  

まずはクラウチとの差を探しましょう。  
アニメーションシーケンスをみると、モーションマッチング関連の通知がありますね 。  

開始時のやつは設定されているのがステートマシンセットアップ用なので、おそらく違うでしょう。  

その次の PoseSearchBlockTransition (遷移を防ぐ)これが関係ありそうな名前ですね。

 Stand to Proneのアニメーションシーケンスにコピペしたところバウンドしなくなりました。 よさそうですね。

浮かんじゃう問題

ブログでは#1回で半分対応済なので微妙に状況が違っています。

ABP_SandboxCharacter > AnimGraph

このあたりに足の位置を補正する処理があります。UE5.4のときにはなかった新機能ですが、実験的なノードが使われています。

で、これは足が自然な配置になるように、骨盤を動かすみたいな処理をしているようで、立ちやしゃがみ状態ならいいですが、伏せてるときは同じ条件じゃダメそうです。  

LegIKが足を設置させる処理です。  

これらを伏せのときには無効にしてみましょう。  

メッシュの位置修正

ここはブログでは#1で対応済なので理解したい人以外はスキップ可です。

立ちから伏せのアニメーションは、ルートの位置は足元のままで、腰を下ろすアニメーションです。カプセルは中心が原点ですが、メッシュは足元に原点があるので、その位置が適切でない可能性が高いですね。

つまりここがもとの地面で、メッシュは下にオフセットされていて、カプセルが小さくなるときにメッシュは地面に埋もれてこうなりますと。

カプセルに対する相対位置を補正してあげればよさそうです 。  

補正値として何を入力すればいいかですが、UEFNマネキンはカプセルの半分の高さと同じですね。
※メッシュによっては違う場合もありえるので、それをケアするなら変数を追加してください 。

新しい状態のときのカプセルの高さを引きます。0から引くかマイナス1倍するかはお好みで。  

カプセル本体の位置はオフセットでずらす量を指定しているのに対して、メッシュはカプセルに対する相対位置なので、新しい位置関係を設定しているだけです。基準が違う点もよく考えましょう。

できましたね。

ちなみに戻すほうは、さきほどアニムグラフで条件分岐した足の接地処理がいい感じにしてくれるので手動で戻さなくてもよいみたいですが、やるに越したことはないかと。 

残件

起伏があると浮いちゃいます。

LegIKを無効化しているのである意味当然ですが、腹とヒジ・ヒザを設置させてあげる代替手段が必要です。後日検討します。

コメント

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