ヽ|∵|ゝ(Fantom) の 開発blog? ホーム » UnrealEngine »【UnrealEngine】キャラをとりあえず簡単に動かしてみる (UE4.9/Windows)

【UnrealEngine】キャラをとりあえず簡単に動かしてみる (UE4.9/Windows)  


 ゲームエンジンいじり始めたら、とりあえずやってみたいのはキャラを動かしてみることかな~って感じで、無料で使える「Animation Starter Pack」と「Infinity Blade Warriors」のライブラリを試してみた。キャラを動かすブループリントは自分で作っても良いのだが、アニメーションスターターパック(Animation Starter Pack)にはデフォルトのキャラを動かすブループリントが入っているので、それを使ってサクっと動かしてみる方法。あくまでラーニング目的なので、設定はほぼデフォルトのままのため、必要あれば調整は各自で色々やってみて欲しい。


※ UE4.9.2/Windows で確認




■まずは下準備とキー入力設定
 適当に新規プロジェクト(4.9以降)を作ったら、マーケットプレイスから「Animation Starter Pack」と「Infinity Blade Warriors」をダウンロードして、プロジェクトに追加しよう。できればキャラが動きまわりやすいように、「新規レベル」で新しくレベルを作って、大きな床(Floor)でも作って置くと良い。また、キー操作で自由に動かすためには入力マッピングを行う必要がある。既に設定してある場合は「■キャラクターを動かす」まで読み飛ばしても良い。



1.レベルエディタのツールバーで「設定>プロジェクト設定...」を開き、左のメニューから「エンジン>インプット(入力/Input[※項目名はバージョンや設定言語で異なる場合があるので適宜解釈して欲しい])」をクリックしよう。ここではキー入力とその名前を紐付けする設定をする。名前はブループリントでも使うので、わかりやすい名前にしよう。ここでは既存のブループリントで使っている名前であり、よく使われるキーとしても設定してある(右上にある「エクスポート...」でファイルへ保存しておくと再利用できる)。設定のしかたはそれぞれの項目の横にある「▼」をクリックで開き、「+」ボタンを押すことにより、名前とキーを設定できるようになる。「Axis Mapping」(軸マッピング)の値は、「上、前、右」方向には正の値(1.0)を、「下、後ろ、左」方向には負の値(-1.0)を設定しておくと良いだろう。設定はゲームによって適当に変えても良い。ちなみに「Action Mappings」はジャンプのように毎回ボタンを「押す・離す」ような操作、「Axis Mappings」は方向キーのように押している間、常に入力されているような操作(ゲームパッドのアナログスティックなど)に使う。

●入力マッピング設定例
用途名前キー(PC)スケール
Action Mappings
ジャンプJumpスペースバー(Space)
しゃがむCrouchZ
Axis Mappings
前進MoveForwardW1.0
後退MoveForward (前進と共有)S-1.0
右へ移動MoveRightD1.0
左へ移動MoveRight (右移動と共有)A-1.0
カメラを右旋回Turn左(←)1.0
カメラを左旋回Turn (右旋回と共有)右(→)-1.0
カメラを上旋回LookUp上(↑)1.0
カメラを下旋回LookUp (上旋回と共有)下(↓)-1.0




2.入力マッピングが済んだら、設定画面を閉じ、今度は独自のキャラを表示させるために「GameMode」の設定をしよう。レベルエディタのツールバーで「設定>ワールド設定」で設定タブをを開き、「GameMode>GameMode Override」の横にある「+」を押して、新しい GameMode を作ろう。保存ダイアログが出たら、適当な名前を付ければ良い。ちなみに GameMode とは、使用するキャラクター(Pawn)やその操作方法など、そのレベルに使ういくつかの設定をまとめたものと考えれば良い。





3.新しい GameMode を作ったら、「選択したゲームモード」を「▼」を押して開き、今度は「Player Controller Class」横にある「+」を押して、新しい Player Controller を作ろう。GameMode と同じように名前を付けて保存すれば良い。





4.Player Controller を新しく作ったら、自動的にエディタが開くと思うが、開かなかったら、コンテンツブラウザで「Blueprints」フォルダ(先ほど保存したフォルダ)に「MyPlayerController」(先ほど付けた名前)にファイルがあると思うので、ダブルクリックしてエディタを開こう。開いたら詳細から「マウスインターフェイス>Show Mouse Cursor」をオンにしておく。これは文字通りマウスカーソルをゲーム中に表示する項目だ。必須ではないが、製作中はカーソルがあった方がわかりやすいだろう。ゲームが完成したら、オフにするのをお忘れなく(カーソルが必要なゲームでない場合)。コンパイルして保存しておこう。



 とりあえずここまでで、下準備は完了だ。すべて保存して次に進もう。



■キャラクターを動かす

 次にキャラクターを動作させるベースを作りたいのだが、これは手抜きして既存のブループリントをそのまま利用してみよう。

1.コンテンツブラウザで追加したアニメーションスターターパックのライブラリ「AnimStarterPack」のルートフォルダを覗くと、「Ue4ASP_Character」というブループリントがある。これを右クリックしてメニューを出し、「子ブループリント クラスを作成します」を実行しよう。すると「Ue4ASP_Character」を継承したファイルが新しく作成されるので、適当に名前を付けよう。ここでは「IB_Character」としておいた。またこれは「InfinityBladeWarriors>Character>CompleteCharacters」フォルダに移動しておこう(ドラッグドロップだと簡単)。



●ファイルを右クリックしてメニューから


●ファイルを移動しておく


2.ファイルを移動したら、「IB_Character」をダブルクリックしてエディタを開こう。すると UE4 のデフォルトのキャラクターが表示されたと思うが、コンポーネントの「Mesh」をクリックし、詳細から「Mesh>スケルタルメッシュ」を「SK_CharM_Warrior」に変更しよう。これで見た目が変わったハズだ。コンパイルして保存しておこう。






3.キャラを変更したら、ここで少しだけ動きを確認しておこう。レベルエディタに戻って、ツールバーから「設定>ワールド設定」を開き、ここで先ほど作成したキャラクター用のブループリントを設定してみよう。「GameMode>選択したゲームモード>Default Pawn Class」に「IB_Character」に変更する。設定し終わったら、ツールバーからプレイしてみよう。ポーズは不自然だが、とりあえずは動いたハズだ。





 次にアニメーションをキャラで利用できるようにしてみよう。



■スケルトンをリターゲットする

 本来、キャラのアニメーションはそれ専用のもので、別のキャラには使えないのだが(手足の長さや体の大きさなどはキャラごとに違うわけで)、幸いにも「人型」のような共通の構造を持ったスケルトン(骨)なら、リターゲットしてくれる機能がある。今回使った「Animation Starter Pack」は UE のデフォルトキャラクターのものだが、これを「Infinity Blade Warriors」用に設定し直せばいいというわけだ。それをやってみよう。

1.コンテンツブラウザで「Infinity Blade Warriors」のライブラリが追加されているフォルダ「InfinityBladeWarriors>Character>CompleteCharacters」を開こう。そしてここにある「SK_Mannequin_Skeleton」がリターゲットさせるスケルトンだ。これをダブルクリックして、エディタを開こう。



2.エディタが開いたら、ツールバーにある「リターゲットマネージャー」をクリックする。するとリターゲットマネージャーのウィンドウが開くので、この中の「リグを設定>リグを選択」のプルダウンメニューを開く。そこで「デフォルト>ヒューマノイドリグを選択」を選択しよう。するとそのすぐ下の「ノード(リグ)」「ボーン(スケルトン)」に名前が自動的に設定されたと思うが、そのままでいいので、このウィンドウを閉じ、ツールバーで保存する。このエディタは閉じて構わない。



3.次に再びコンテンツブラウザに戻り、今度は「Animation Starter Pack」のライブラリが追加されているフォルダ「AnimStarterPack>UE4_Mannequin>Mesh」を開こう。ここにアニメーションで使われているスケルトン「UE4_Mannequin_Skeleton」がある。これもダブルクリックしてエディタを開き、先ほどと同じようにツールバーから「リターゲットマネージャー」を開き、「リグを設定>リグを選択」のプルダウンメニューから「デフォルト>ヒューマノイドリグを選択」を選択してウィンドウを閉じ、ツールバーで保存する。このエディタも閉じてしまって構わない。



(※) 実際のところ、ノードの名前(リグ)は製作者によって違ったりするのだが、今回用いた「Infinity Blade Warriors」はそのまま同じ名前が使えるので、簡易テストとして利用した。「Mixamo Animation Pack」などを使いたい場合は、リグの名前を自分で設定する必要がある。詳しい方法は公式のオンラインマニュアルを読むと良いだろう。

(参考)
アニメーション リターゲット(異なるスケルトン)


4.リターゲットマネージャーで設定し終わったら、今度は実際にアニメーションをリターゲットしてみよう。コンテンツブラウザでアニメーションスターターパックのルートフォルダ「AnimStarterPack」へ移動し、そのフォルダ内にあるアニメーションのファイルを一番上から下まで、全選択をしよう(Ctrl-A)。全選択するといくつか余計なものが入るので、[Ctrl]キーを押しながらクリックで、「UE4_Mannequin」フォルダ、「Showcase」(レベル)、「Ue4ASP_Character」(ブループリント)、「UE4ASP_HeroTPP_AnimBlueprint」(アニメーションBP)を選択から除外しよう。そしてどれでもいいので、選択しながら右クリックメニューを出し、「Animアセットをリターゲットする>Animアセットとリターゲットを複製する」を実行する。


>クリックで拡大


>クリックで拡大

●ファイルを右クリックしてメニューから


5.リターゲットを行おうとすると、ダイアログが出てくるので、「このアセットと再マッピングするスケルトンを選択する」以下に表示されている名前のリストから「SK_Mannequin_Skeleton」をクリックしよう。これは先程「リターゲットマネージャー」でリグを「Humanoid」にして保存したものだ。右側に Infinity Blade Warriors のキャラが表示されればOKだ。下の方にある「選択」ボタンを押せば実行される。



6.ここまで来ればあと一息だ。あとはアニメーションブループリントもリターゲットしよう。今度は「UE4ASP_HeroTPP_AnimBlueprint」(アニメーションBP)を選択して右クリックし、メニューから「Animアセットをリターゲットする>Animアセットとリターゲットを複製する」を実行する。ダイアログが出たら、「SK_Mannequin_Skeleton」をクリックして、下の方にある「選択」ボタンを押すのは先ほどと同じだ。



7.リターゲットを実行したら、対象のスケルトンのあるフォルダ「InfinityBladeWarriors>Character>CompleteCharacters」に大量にリターゲットされたアニメーションのコピーが作成されているので、一旦すべて保存してしまうと良い。コンテンツブラウザの上にあるボタンを使うと楽だろう。



8.そして先ほどリターゲットしたアニメーションBP「UE4ASP_HeroTPP_AnimBlueprint_Copy」は少し名前が紛らわしいので「IB_HeroTPP_AnimBlueprint」とでもリネームしておこう。

●リネームしておく



9.最後にリターゲットしたアニメーションBP「IB_HeroTPP_AnimBlueprint」を、「■キャラクターを動かす」で作ったキャラクターベース「IB_Character」に設定しよう。コンテンツブラウザの検索で探しても良いが、「ワールド設定」の「GameMode>選択したゲームモード>Default Pawn Class」に設定した「IB_Character」の横にある虫眼鏡のアイコンを押すと、自動的にフォーカスを当ててくれるので簡単だ。見つけたらダブルクリックしてエディタを開こう。





10.エディタが開いたら「詳細」だけでも構わないが、ブループリントエディタに切り替えて、「ビューポート」タブを押し、「コンポーネント」から「Mesh」をクリックしよう。「詳細」で「Animation>Anim Blueprint Generated Class」のプルダウンをクリックし、作ったアニメーションBP「IB_HeroTPP_AnimBlueprint」を選択しよう。するとキャラが身構え、動き出したハズだ。コンパイルして保存しておこう。とりあえずはこれで完成だ。プレイして確かめてみよう。









 実のところを言うと、ジャンプはモーションだけで上手く飛べてない感じなのだが、アニメーションBP「UE4ASP_HeroTPP_AnimBlueprint」を開いてみると、色々ブループリントが組み込んであるので、改造してみると良いかも知れない。また、キャラを変えたい場合は、キャラクターベース「IB_Character」から子ブループリントを作成し、メッシュだけ変えるのが一番簡単だ。これだけでも、入力マッピングや GameMode、Player Controller、Character ブループリント、アニメーションブループリントなど、最低限必要なものがわかって来るだろう。自分で作る場合は、新しくブループリントを作るとき親クラスを「Character」にして作り、「UE4ASP_HeroTPP_AnimBlueprint」から必要なものだけコピペするなどもできる。この辺りから自分で色々試してみると、それぞれのコンポーネントの機能の理解が深まると思う。

●背景もインポートしてみる




 UE はまだ無料化されてから約半年ちょっとだからか、ブログ記事なども Unity から比べるとずっと少ないのが残念。ググッても公式オンラインマニュアルばかりで、ページが多岐にわたり、調べづらい所が難点かな。翻訳も直訳っぽくてよく意味がわからないものも多いしね。ブループリントも 4.7 から 4.8 で結構変わったようで、そのまま使えないものもあったりする。多くの場合、有志が作ったWikiやブログの方がやりたい事のテーマごとにまとめてあったり、一生懸命伝えようと工夫してあったりするので、わかりやすいことが多いんだよね。私もよく利用させてもらっている。まぁ、今後ユーザーが増えて情報が多くなるよう期待!

 余談だが、UE でユニティちゃんを動かしている例もある。ライセンス的な質問の所を見てみると、「ぶっちゃけ別のアプリとかエンジンで使っていい? → イイヨー!(~以下説明~)」となっているので、私もそのうち何かやってみたいね。UE 素材は基本的に UE 限定みたいだけど、Unity はなかなか太っ腹だな(笑)。参考までに資料を載せておこう。

(参考)
UE4でゼロからユニティちゃんを表示させるまで
UE4 でユニティちゃんにアイドルモーションさせてみた


■参考になる書籍・関連商品


スポンサーサイト

category: UnrealEngine

thread: ゲーム開発

janre: コンピュータ

tag: UnrealEngine 
tb: 0   cm: --


トラックバック

トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/191-f9d34c2b
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

検索フォーム

全記事一覧

カテゴリ

ユーザータグ

最新記事

リンク

PR

▲ Pagetop