こんにちは!ジェイです。
UnrealEngine5で開発中のTPSオンラインゲームでのVRMモデルを使った新しいキャラクターの追加方法のメモです。
まずは、VRM4Uが必要になるので以下からダウンロードします。
次にuprojectのある階層に解凍するとPluginフォルダができる
UEエディタを起動して、ツールバーの編集→プラグインからVRM4Uを追加してUEエディタを再起動したら準備完了です。
VRMモデルを読み込む
まず、Contentフォルダ下にVRM/モデル名/Animationとなるようにフォルダを作成する。
モデル名の下にVRMモデルをドラッグ&ドロップするとモデルが生成される
ルートモーションに関する設定
Character/Heros/Mannequin/Animationsを開き検索窓からTurnと入力する
MF_Pistol_TurnLeft_90
MF_Pistol_TurnRight_90
MF_Pistol_TurnRight_180
MM_Pistol_Crouch_TurnLeft_90
MM_Pistol_Crouch_TurnRight_90
MM_Pistol_Crouch_TurnRight_180
の6つのアニメーションファイル(モンタージュではない)を選んでから、AssetAction→Bulk Edit Via Propaty Matrixを選択する
RootMotionのタブを開いて、EnableRootMotionとFoceRootLockのチェックを外す
リターゲットがすべて終わった後で、以上と同じ手順をして、EnableRootMotionとFoceRootLockのチェックを元に戻しておくこと。
AnimationBluePrintの作成
1.VRM/モデル名/Animationに右クリック→アニメーション→IKリグ→IKリターゲッタを選び、コピー元のIK_Mannequinを指定してIKリターゲッタを作成する
2.作成したリターゲッタを開き、右側のターゲットに追加したVRMモデルを選ぶ
3.左側から編集モードを選んでから、両方のモデルが同じポーズになるように調整する
4.Characters/ABP_Hero_Quinnで右クリック→アニメーションアセットのリターゲッティングを選んで、IKリターゲッタに1.で作成した物を選び、サフィックスにモデル名を入力して、フォルダにVRM/モデル名/Animationを指定してから、リターゲットをクリックするとAnimationBluePrintが作成される
アニメーションデータを作成しデータテーブルに代入する
CharacterInfo_TableとCharCustomisation_Tableに新しい行を追加して、新しいモデルの情報を入力する。ここでは、1つずつアニメーションを選んでリターゲッティングしながら代入していく。
次に同じ要領で、DT_WeaponAnims_QuinnをコピーしてQuinnの部分を新しいモデル名に変えて編集する。
MM_Rifle_Idle_ADSを最初にリターゲットしておくと複数被らないで済む。
CharacterInfo_Table
CharCustomisation_Table
DT_WeaponAnims_VRMモデル
新モデル用BluePrint作成
BP_Hero_Quinn_Blueをコピーして、新しいモデル名に変更して開いて編集する
1.Skeletal Mesh Assetを変更する予定のモデルを選ぶ
2.Anim Classを先程リターゲッティングで生成したアニメーションブループリントを選ぶ
3.Construction SctiptのSocket Nameなどを以下の様に編集する(Socket Nameはモデルデータ編集した時の名前と同じにすること)
新モデルデータ編集
Skeletal Mesh Assetのモデルデータを開いて、GrenadeSocketとSocketHolster_0(左腰)、SocketHolster_1(背中)、SocketHolster_2(背中)にソケットを追加する。
(Socket Nameはキャラクター用BluePrintを編集した時の名前と同じにすること)
新モデル用AnimationBluePrintの編集
先程リターゲットした時に生成されたAnimationBluePintを開いて、以下の部分を編集する。
キャラクター選択画面の編集
新しく追加したモデル用のボタンをコピーして作成する
次にボタンのOnClickからCharacterButtonPressedを呼び出す。
引数には先程作ったブループリントとキャラ名を指定
ロビーで使うモデルデータの編集
BP_MenuController>GetWeaponAnimsTableのswitch on Nameにモデル名を追加して、LclDataTableに先程編集したデーターテーブルを入れておく。