
今回は「クイックリグ」でセットアップしたオリジナルキャラクターをUnrealEngineのプレイヤーキャラとして操作出来るようにする方法を解説します。Mayaからモデルを書き出しUnrealEngineにインポートする方法を学びます。

【Maya】ターゲットキャラクタの設定
HumanIKの状況確認
最初にMayaのオリジナルキャラクターのHumanIKの状況を確認します。
MayaのHumanIKのパネルを開いてください。

もし#3(前々回)のページを終了した状態であれば
キャラクタ:QuickRigCharacter1
ソース:Mixamo_Motion
という構成になっていると思います。今回はアニメーションを書き出さないので、ソースのタブで「なし」を選択してください。
キャラクタ:QuickRigCharacter1
ソース:なし

HumanIKによるMixamo_Motionとのリターゲットの関係が解消されました。
ノード名の一括変更
上記はクイックリグでHumanIKを作成し、更に読み込み(インポート)した状態のアウトライナです。
名前が長いのでノード名を短く変更します。

今回は
・HumanIK(キャラクタ名の変更)
・ネームスペースを削除(ネームスペースエディタ)
の2つの方法を紹介します。
HumanIK(キャラクタ名の変更)



ネームスペースを削除(ネームスペースエディタ)
「ファイルの読み込み」で追加される(:の左側)名前のことをネームスペースと言います。
ネームスペースだけを消したい場合はネームスペースエディタを使用します。

ウィンドウ > 一般エディタ > ネームスペースエディタ

表示されているネームスペース”Kirari_HIK”を選択して「削除」

「ルートをマージする」でOK

マテリアルの変更
マテリアルを「サーフェースシェーダ」にします。「サーフェースシェーダ」にすることでUnrealEngeneにキャラクタを読み込む際、メッシュにアサインされたテクスチャも一緒に読み込んでくれます。

プロパティエディタからマテリアルが「SuefaceShader」であることを確認

「Lambertシェーダー」ではUE5にインポートする際にテクスチャが読み込まれません。アトリビュートエディタのタイプの▼をクリックして「サーフェースシェーダ」を選択します。

テクスチャのリンクが切れるので繋ぎなおします。
マテリアルの名前をUnrealEngineに準拠した”M_###”に変更します。
キャラクターの書き出し
キャラクターのメッシュを選択します。スケルトンのみの選択ではメッシュが書き出せません。

書き出しにはUnrealEngineと相性の良い「ゲームエクスポータ」を使用します。

「選択項目の書き出し」を選択、パスと名前を指定します。今回はリターゲット先のスケルタルメッシュとして読み込むので”SK_Tasrget”とします。

”SK_Target.fbx”の書き出しに成功しました。Mayaの作業は以上です。
【UnrealEngine】起動
プロジェクトの作成
UnrealEngineデフォルトモデルをリターゲット元にキャラクタを動かします。背面から俯瞰する視点の「サードパーソン」を選択します。

プロジェクト名は「Rertarget」としました。「作成」をクリックします。
「サードパーソン」全景確認

「▶」再生ボタンを押します。

「再生中=ゲームプレイ中」です。手前のキャラクタがフィールド(レベル)を自由に動き回れます。
キャラクタの移動は”WASD”或いは”↑←↓→”で行います。
マウスは視点移動です(クリック、ドラッグせず動かします)。
現在動かしているプレイヤーキャラ(銀色のロボット)をmayaのモデルに変更することが今回のミッションです。
再生の停止
「Esc」キーで再生の停止(プレイヤー視点から復帰)できます。
レベルとフォルダの作成
レベルを保存
最初にレベルを作成しておき、マメに「すべて保存」を行います。


MyAssetsフォルダ作成
Mayaで書き出したキャラクタを格納するためのフォルダを作成します。
コンテンツブラウザ左上の「+追加」をクリックします。

「コンテンツ」フォルダ直下に新規フォルダを作成。

名前を”MyAssets”に変更します。
ターゲットキャラクタの読み込み

MyAssetsフォルダに移動します。
インポートボタンを押します。

SK_Target.fbx(先ほどMayaからエクスポートしたデータ)を選択
「開く」をクリック

最初に「デフォルトにリセット」をクリックします。
「Skeletal Mesh」のチェックを確認します。
今回はアニメーションは必要ないので「Import Animations」のチェックを外します。
「全てインポート」をクリックします。

スケルタルメッシュ、物理アセット、スケルトンが入っていれば成功です。
また、シェーダーがマテリアル、テクスチャもパスをたどって読み込んでくれます(手動で読み込んでいただいてもOKです)。
「全て保存」します。
ターゲットキャラクタの確認
スケルタルメッシュのリネーム

スケルタルメッシュ(ピンク色のラベル)”SK_Target”を選択
ショートカットF2キーを押して、名前を”SKM_Target”に変更します。
スケルタルメッシュとは?
スケルタルメッシュは、キャラクターや他のアニメーション可能なオブジェクトを表現するために使用されます。
スケルタルメッシュは、以下の2つの部分で構成されます。
- ポリゴン:スケルタルメッシュのサーフェスを作るためのものです。
- 階層的ボーン:ポリゴンの頂点をアニメートさせるために使用され、相互に連結されています。
スケルタルメッシュの構成
復習です。ボーンの付いたキャラクターはスケルタルメッシュとしてUnrealEngineで使用するファイルが複数読み込まれます。今回モーションデータを読み込んでいないので、下記3つが読み込まれます。
- スケルタルメッシュ: ボーンにバインドされたメッシュ。キャラクターなどをアニメートします。
- 物理アセット: 物理的なシミュレーションに使用。物理エディタで物理ボディを作成します。
- スケルトン: スケルタルメッシュの動きを制御するボーンの階層。
スケルタルメッシュの確認

スケルタルメッシュ”SKM_Target”をビューポートにドラッグ&ドロップします。

ビューポートにキャラクターが表示されました。
しかし黒目が表示されません。本来透明であるはずの眼球の外側のマテリアルが不透明なのが原因です。
マテリアルの変更
不透明な眼球マテリアル”M_EyeTrans”を透明にします。

”M_EyeTrans”をダブルクリックしてマテリアルエディタを開きます。

①Blend Mode:Opaque(不透明)をTranslucent(透明)に変更
②OpacityのインプットにConstantノードを接続します。値は0に設定します。
「適用」してマテリアルエディタを閉じます。

眼球シェーダーが透明になりました。
ビューポートのキャラクタはDeleteキーで一旦消去します。
アニメーションブループリント

コンテンツブラウザより
/All/コンテンツ/Characters/Mannequins/Animations
に移動します。
アニメーションブループリント
”ABP_Quinn”を確認してください。
アニメーションブループリントとは?
スケルタルメッシュのアニメーションを制御するための機能で、ゲーム中のキャラクターやオブジェクトの動きを作成・管理するためのツールです。
リターゲット

”ABP_Quinn”の上でマウスを右クリック
「アニメーションをリターゲット」を選択

「アニメーションをリターゲット」ウィンドウが現れます。
- ▽ソース
リターゲット元のスケルタルメッシュ(今回は”SKM_Quinn_Simple”) - ▽ターゲット
リターゲット先のスケルタルメッシュ
①ターゲットスケルタルメッシュのボックスをクリックします。
②ターゲットとして ”SKM_Target”を指定します。
アニメーションをエクスポート

左側にソース”SKM_Quinn_Simple”
右側にターゲット”SKM_Target”
2体並んで表示されます。SKM_TargetはAポーズに補正されています。
アニメーションをエクスポート
”SKM_Quinn_Simple”のすべての情報を”SKM_Target”にリターゲットした状態でエクスポート(複製保存)します。

右側のABP_Mannyを選択します。

「アニメーションをエクスポート」をクリックします。

SKM_Mannyを保存するフォルダを指定します。
今回は特に名称変更を行わず、「エクスポート」をクリックします。

上書きの可否の指定です。そのまま「エクスポート」をクリックします。
データの確認

全てのファイルがリターゲット後の状態で出力されました。
リターゲット先のアニメーションブループリントの名前変更

作成されたアニメーションブループリント”ABP_Quinn”をリターゲット先として使用します。リターゲット元と同じ名前だと紛らわしいので名前を”ABP_Target”に変更します。
ブループリントクラス
コンテンツブラウザで
/All/コンテンツ/ThirdPerson/Blueprints
に移動します。

”BP_ThirdPersonCharacter”を確認します。
ブループリントクラスとは?
ゲームの中のオブジェクトやキャラクターがどのように動くかを決める設計図のようなものです。
BP_ThirdPersonCharacterとは?
プレイヤーキャラクターがどのように動くか、どのようにカメラが追従するかなどを定義しています。
BP_ThirdPersonCharacterをダブルクリックします。ブループリントのノードが表示されますが今回は使用しません。
プレイヤーキャラクターの変更

「ビューポート」タブをクリックします。

① Skeletal Mesh Asset : SKM_Target
② AnimClass : ABP_Target
ビューポートのキャラクターがTargetモデルに変更されます。
③コンパイルをクリックしてBP_ThirdPersonCharacterを閉じます。
プレイヤーの操作

再生ボタンをクリックします。
プレイヤーキャラがTargetモデルに置き換わりました。

しかし着地の際にキャラクターが壊れます。
こちらはバグのようですので手動で対処します(今後修正されることを期待します)。
アニメーションシーケンス”MM_LAND”の修正
エラーメッセージから、MM_Landというアニメーションシーケンスの加算に問題があることが分かるので修正を加えます。
コンテンツブラウザよりMyAssetsのフォルダの検索欄に”MM_Land”と入力します。

アニメーションシーケンス”MM_Land”をダブルクリックします。

詳細パネルの
▼加算セッティング
Additive Anim Type : Local Space
Base Pose Type : Frame from this animation
Ref frame Index : 26
加算セッティングを上記に修正することでMM_Landのモーションが安定します。

上記設定で着地モーション破綻がなくなりました。
まとめ
今回はMayaの「クイックリグ」でセットアップしたオリジナルキャラクターをUnrealEngineのプレイヤーキャラとして操作しました。Mayaからモデルを書き出しUnrealEngineにインポートする方法を学びました。
今回はキャラクターを書き出し読み込むという基本的な方法を行いました。実際ゲームに使用するキャラクターに育てる為には更なる追加が必要になります。フォローアップを適時行う予定ですが、是非ご自身でも研鑽を積んでいってください。