yossi40-100’s GASP-ALS キャラクター追加方法

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

GitHub – yossi40-100/GASP-ALS

キャラクター追加方法とアイテムの持ち手の補正(Hand-IK)の調整方法を説明します。

キャラクターの取り込み

Content/Characters 下などにフォルダを作って取り込みましょう。

VRMの場合は、VRM4Uプラグインがおすすめです。

Mixamoでリグ(骨)をつけたものを取り込みの際に、マテリアルが正しく取り込まれない場合がありました。テクスチャだけの簡単なマテリアルであればUE内で作成しなおしましょう。

モノマネ準備:IKRetargeter作成

GameAnimationSampleのモノマネのしくみ
  • 大量のアニメーションがオレンジ色のUEFNマネキン向けに作られている
  • ほかのキャラクターも、裏でUEFNマネキンがそのアニメ再生している
  • キャラクターはリアルタイムにUEFNマネキンをモノマネする
  • そのために必要となるのがIKRetargeter
    • モノマネする/される両者のIKリグの紐づけ情報
  • キャラ毎に大量のアニメーションを準備する必要がない
  • まねされる側「UEFNマネキン」の適当なアニメーションを右クリック
  • アニメーションをリターゲット」を選択します
  • 「アニメーションをリターゲット」ウィンドウが開きます
  • ソースは「SKM_UEFN_Mannequin」が自動設定されます
  • ターゲットに追加したいキャラクターのスケルタルメッシュを設定します
  • 左のビューに2体並んで「↑↑」の体勢 (通称Aポーズ)になっていればOKです
  • 「リターゲッタを自動で生成」にチェックがついているのはそのまま
  • 一番下の「リターゲティングアセットをエクスポート」ボタンを押します
  • 保存場所の選択ダイアログが出るので、そのキャラクターフォルダ下に保存します
  • ソースとターゲットで2つのIKリグとIKリターゲッタができます
  • IKリターゲッタの名前を後で使うので「RTG_UEFN_to_キャラ名」に変更します

キャラクターBPクラスの作成

操作したいキャラクターの場合

  • Content/Blueprints/RetargetedCharacters/CBP_RetargetPlayerBase を右クリック
  • 「子ブループリントクラスを作成します」
よっしー
よっしー

子ではなく、複製や、直接このキャラクターを編集しても構いません。
私が今後もそれなりにアップデートするので、手軽に取り込みたい方は子クラスにしておくと比較的楽かなと思います。

どちらにしても半年以内にはUE5.6とGASPアップデートが公開されそうな予感もあるので、再度大幅に構成が変わる可能性もなくはありませんのでご了承の上決断してください。

敵・NPCなどAIキャラクターの場合

  • Content/Blueprints/RetargetedCharacters/AI/CBP_AI を右クリック
  • 「子ブループリントクラスを作成します」

AIキャラにはカメラやプレイヤー向けの入力イベントは不要なため、元のCBP_SandboxCharacterからその辺の仕組みを取り除きました。
そのため、CBP_RetargetPlayerBase を編集してもAIキャラには影響しないのでご注意ください

それをやりやすくするためのアクターコンポーネントやGAS(Gameplay Ability System)についても、今後解説かねて採用しようか検討中です。

よっしー
よっしー

初心者向け理解しやすさと中級者向け保守性のバランス感覚。。。

共通

  • 任意:名前をCBP_Tama などわかりやすいものに変えます
  • ダブルクリックなどで編集画面を開きます
  • コンポーネントタブで下のほうにいる「SkeltalMesh」を選択します
  • 詳細タブでメッシュを変更します
    • MetaHumanの場合は、Bodyをこれに設定し、それ以外のパーツを子供にするとよいです。詳しくは「CBP_SandboxCharacter_Metahuman_Kellan」の構成を見てください
  • マイブループリントタブ/変数下部のIKRetargeter変数を選択します
    • 親に定義されている変数なので、「継承した変数を表示」で見えます
  • 詳細タブ/デフォルト値 を RTG_UEFN_to_キャラ名 に変更します (先ほど作成したやつ)

最後のIKRetargeterをセットし忘れると、ある程度動くけどぎこちない動きになったりします
ABP_GenericRetarget というアニメーションBPでこの変数から受け取った情報を使ってモノマネをしています。

(操作キャラクターのみ)プレイヤー設定

  • プロジェクト設定/ゲームモードクラスから「ポーン」を用意したキャラクターに変更します
  • これで 実行ボタンや Alt+P などから実行時にプレイヤーキャラクターとなります

武器・カメラを持つ準備:ソケット作成

  • キャラクターのスケルタルメッシュ(正確にはスケルトン)を開きます
  • 右手の骨 (UE5マネキンでは hand_r) を右クリックから「ソケットを追加」します
  • 追加されたソケットを選択し、「hand_r_socket」に改名します
  • 同様の手順で、左手にも「hand_l_socket」を追加します
  • 頭の骨(UE5マネキンで head)に「eye」ソケットを追加し、目の位置に移動します
    • 立体視の想定ではないので両目の中央付近(単眼キャラなら開いてる目のほう)に配置

MetaHumanの場合など、体と顔でスケルトンが別になっている場合は顔のスケルトンに「eye」ソケットを追加し、キャラクターBP上の顔のスケルタルメッシュに「eye」のコンポーネントタグを追加します。
(これもCBP_SandboxCharacter_Metahuman_Kellan の Face をご参照ください。)

  • ゲームを開始して、1キーでFPSモードにしたり、Qキー押しながらマウススクロールでオーバーレイを切り替えてアイテムが持てるか確認してください
    • あとで位置調整するので、とりあえず手と連動して動いていればOKです
    • ソケットやタグがないとメッシュの原点(たいていは地面)に貼りつきます

キャラクター設定調整

必要に応じてやること

  • メッシュの原点が地面でない場合などは、CBP_**のビューポートで確認しながら詳細タブのトランスフォームで位置を調整します
  • カプセルのサイズはCapsuleコンポーネント自体のサイズと別途、変数でも立ち・しゃがみ・ほふく・カバーの状態変化時に使う値を管理しています。「Capsule Radius Prone」など それも合わせて変更してください

武器の持ち手位置補正パラメタの調整

  • adjustModeフラグを選択し、詳細タブでデフォルト値にチェックを付けます
  • OverlayOffset マップ変数を選択し、詳細タブのデフォルト値で調整したいオーバーレイアイテムを開きます(例えばRifle)
  • main トランスフォーム, hand_ik トランスフォーム, adjustPos フラグがあります
  • adjustPos にチェックを付けます
  • ビューポート上のキャラクターがアイテムをもったエイム姿勢になります
  • main の「回転」と「位置」を値調整します
    • 少し遅れますがビューポート上の持ち手の位置が変化します
  • hand_ik の「位置」を調整します
    • ※現在「回転」は使用できません(設定しても無視されます)
  • adjustPosフラグにチェックを外します
  • adjustModeフラグを選択し、詳細タブでデフォルト値にチェックを外します
  • 保存します

コンストラクションスクリプトを使ってオーバーレイ状態やエイム姿勢を直接変更しているため、レベル上のアクターなどにも影響しますので気を付けてください。

よっしー
よっしー

従来はライブリターゲットの都合だったり、状態切り替えの反映が簡単じゃなく、ゲーム開始してポーズしたりがかなり面倒でしたが、だいぶ簡略化できたんじゃないかと

よっしー
よっしー

mainの調整は、別途SkeltalMeshコンポーネントにチャイルドアクターで持ちたいものを追加して、それをギズモでいい感じにしたあとのトランスフォームをコピペするとさらにやりやすいです

コメント

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