UE4 でユニティちゃんにアイドルモーションさせてみた


UE4 事始めってことで、ちょっとやってみました。
とりあえず今回は UE4 上で表示して、アイドルモーションさせるだけです。

#必要なもの
* Unreal Engine 4<br>
これがないと始まりません。ダウンロードは[こちら](https://www.unrealengine.com/ja)から。<br>
今回は、4.7.6 を使っています。<br>
<br>
* ユニティちゃんリソース<br>
これがないと始まりません。ダウンロードは[こちら](http://unity-chan.com/)から。<br>
今回は ver.1.0 を使っています。<br>
<br>
* Unity<br>
ユニティちゃんリソースの入っている unitypackage から fbx と tga を取り出すのに必要です。<br>
ダウンロードは[こちら](https://unity3d.com/jp/5)から。<br>
<br>
* FBX Converter<br>
取り出した fbx を新しいフォーマットに変換するのに必要です。<br>
ダウンロードは[こちら](http://usa.autodesk.com/adsk/servlet/pc/item?siteID=123112&id=22694909)から。

#ユニティちゃんをセットアップする
まずは、新規プロジェクトを作成し、ユニティちゃんをアセットとして使用できるようにします。
その為には、以下のことを行う必要があります。
* unitypackage から .fbx, .tga を取り出す。
* .fbx を新しいフォーマットにコンバートする。
* .fbx, .tga を UE4 にインポートする。
* マテリアルをセットアップする。

これらについては、[こちら](http://unrealengine.hatenablog.com/entry/2014/04/15/184432)のサイトに書かれていますので、これを参考にしてセットアップを行ってください。

今回、使用するアセットは以下の様な名前になっています。

|ファイル名|概要|
|:---|:---|
|UnityChan|スケルタルメッシュ|
|UnityChan_Skeleton|スケルトン|
|unitychan_WAIT00|アイドルモーション|

#ユニティちゃんをシーンに配置してみる
## アクターを作って、シーン上に配置する
まずは、アクターを作ってシーン上に配置します。

1. コンテンツブラウザで「コンテンツ」フォルダを選択し、「新規作成」から「BluePrint クラス」を選択します。
![UnityChan01_00.png](https://qiita-image-store.s3.amazonaws.com/0/43814/1c5cf63e-0828-824d-1cf9-5ee94f707480.png)<br>
<br>
1. 「親クラスを選択」で「Pawn」クラスを選びます。<br>
![UnityChan01_02.png](https://qiita-image-store.s3.amazonaws.com/0/43814/debb49ed-f084-1bfd-f640-eeeaf16db914.png)<br>
<br>
1. コンテンツブラウザにアセットが追加されます。<br>
名前は BP_UnityChan とします。<br>
![UnityChan01_01.png](https://qiita-image-store.s3.amazonaws.com/0/43814/c4b02624-b92c-f04d-339b-27f0595351c7.png)<br>
<br>
1. 作った BP_UnityChan をシーン上にドラッグ＆ドロップして、シーン上に配置します。<br>
(この時点ではまだ白い球が表示されるだけです。)<br>
![UnityChan01_03.png](https://qiita-image-store.s3.amazonaws.com/0/43814/9390768f-4327-7062-4b45-5db9db9298b5.png)

##ユニティちゃんモデルを表示させる
配置したアクターにユニティちゃんモデルを関連付けして、ユニティちゃんモデルが表示されるようにします。

1. シーン上に配置した BP_UnityChan を選択し、「詳細」の「コンポーネントを追加」から「SkeletalMesh」を選択します。<br>
![UnityChan01_04.png](https://qiita-image-store.s3.amazonaws.com/0/43814/fd43f769-54cd-9d3f-e71a-970bc217ddbc.png)<br>
<br>
1. 「詳細」から「Mesh」を探しだして、「なし」をクリックします。<br>
すると、以下のようなウィンドウが選択されるので、インポートしたユニティちゃんのスケルタルメッシュを選択します。<br>
![UnityChan01_05.png](https://qiita-image-store.s3.amazonaws.com/0/43814/e5afae88-3e31-3be0-76a0-fc8ce4a58168.png)
<br>
<br>
これでようやくユニティちゃんがシーンに表示されました。<br>
![UnityChan01_06.png](https://qiita-image-store.s3.amazonaws.com/0/43814/5e22cd1d-99b2-88d8-7705-497b13f3e5b8.png)

#ユニティちゃんにアイドルモーションをさせてみる
では、いよいよユニティちゃんにモーションさせてみます。
##アニメーションブループリントを作って、アクターと関連付ける
まずは、アニメーション関連の処理を記述するためのブループリントを作って、アクターと関連付けます。

1. 「コンテンツブラウザ」で「コンテンツ」フォルダを選択し、「新規作成」から「アニメーション > Animation ブループリント」を選択します。<br>
![UnityChan01_07.png](https://qiita-image-store.s3.amazonaws.com/0/43814/cfdb3d5a-f1fb-150d-d947-eeed12b0e556.png)<br>
<br>
1. 以下のようなウィンドウが表示されるので、インポートしたスケルトンを選択して OK を押します。<br>
![UnityChan01_08.png](https://qiita-image-store.s3.amazonaws.com/0/43814/77bbe2e4-0b53-b534-3448-3067a4aae77c.png)<br>
<br>
1. 「コンテンツブラウザ」にアセットが追加されるので、「BP_UnityChan_Anim」という名前にします。 <br>
![UnityChan01_09.png](https://qiita-image-store.s3.amazonaws.com/0/43814/87eff395-262c-d607-843e-7e04d3ccdbde.png)
<br>
<br>
1. シーン上の「BP_UnityChan」を選択して、「詳細」から「Animation」を探し出します。
探し出したら、「Anim Blueprint Generated Class」をクリックして、先ほど追加した「BP_UnityChan_Anim」を選択します。<br>
![UnityChan01_10.png](https://qiita-image-store.s3.amazonaws.com/0/43814/9dec967c-6a64-3bd8-0e06-08c8e741db3f.png)
<br>
<br>
##アニメーションステートマシーンを作って、結果に応じたポーズを取らせる。
モーションを再生させる前にステートマシーンを作って、その結果に応じてユニティちゃんの取るポーズを変えるようにします。
ちなみにこの「ステートマシーン」とは、「アイドル」「歩き」などのアニメーションの状態と状態遷移を管理するものです。

1. 「コンテンツブラウザ」から「BP_UnityChan_Anim」を選び、ダブルクリックします。<br>
すると、以下のような画面が開きます。<br>
![UnityChan01_11.png](https://qiita-image-store.s3.amazonaws.com/0/43814/290b6278-565f-cb85-0c09-e779432248a8.png)<br>
<br>
1. グリッド上で右クリックして、「新規のステートマシーンを追加」を選びます。<br>
![UnityChan01_12.png](https://qiita-image-store.s3.amazonaws.com/0/43814/5c71e13a-f174-18bc-6283-c4d5da921238.png)<br>
<br>
選んだら、「ステートマシーン」というノードが作られるので、「SM_Anim」という名前にします。<br>
![UnityChan01_13.png](https://qiita-image-store.s3.amazonaws.com/0/43814/ea9384e2-6653-d4a0-51c9-1a8fe563a949.png)<br>
<br>
1. グリッド上にある２つのノードを以下のように接続します。<br>
![UnityChan01_14.png](https://qiita-image-store.s3.amazonaws.com/0/43814/22578227-ed85-713d-ffc5-4516349e11f5.png)<br>
これでステートマシーンの結果次第でユニティちゃんの取るポーズが変わるようになりました。

##アイドル状態を作って、アイドルモーションを再生させる
では、ステートマシーンにアイドル状態を追加して、アイドルモーションを取らせるようにします。

1. 「SM_Anim」ノードを選択して、ダブルクリックします。<br>
すると、新しいグリッド画面に切り替わり、ステートマシーンの内部が表示されます。<br>
![UnityChan01_15.png](https://qiita-image-store.s3.amazonaws.com/0/43814/939fcbf4-d3d6-9e2a-ae2d-27f7227eeece.png)<br>
この「Enter」からステートマシーンが始まります。<br>
<br>
1. 右クリックから「ステートを追加」を選択します。<br>
![UnityChan01_16.png](https://qiita-image-store.s3.amazonaws.com/0/43814/1039623e-427c-6bfc-d90f-14be1a47a912.png)<br>
<br>
すると、新しいノードが作られるので、名前を「IDLE」にします。<br>
![UnityChan01_17.png](https://qiita-image-store.s3.amazonaws.com/0/43814/5eded0a7-bf91-5cf9-8bf2-bdb97df7962b.png)<br>
これがアイドルモーションを示す状態となります。<br>
<br>
1. 先ほど作った「IDLE」ノードを選択して、ダブルクリックします。<br>
すると、新しいグリッド画面に切り替わり、アイドル状態の内部処理が表示されます。<br>
<br>
初期状態では、以下のノードしかありません。<br>
![UnityChan01_18.png](https://qiita-image-store.s3.amazonaws.com/0/43814/29bf65e0-8c46-fb3f-463f-c108098b575d.png)<br>
<br>
1. 右クリックから「再生 unitychan_WAIT00」を選択して、ノードを作ります。<br>
![UnityChan01_19.png](https://qiita-image-store.s3.amazonaws.com/0/43814/d3cb1f8e-c34f-5f3b-01fc-c812d84222c3.png)<br>
これは、アイドルモーションを再生し続けるためのノードです。<br>
<br>
1. グリッド上にある２つのノードを以下のように接続します。<br>
![UnityChan01_20.png](https://qiita-image-store.s3.amazonaws.com/0/43814/c9425b37-6df3-8565-d60c-452c41acf1f9.png)<br>
<br>
<br>
これで「プレイ」すると、ついにユニティちゃんがアイドルモーションするようになりました！<br>
![UnityChan01_21.png](https://qiita-image-store.s3.amazonaws.com/0/43814/c4a718cf-200f-f77f-aaee-14f3d0a8c75d.png)

#参考サイト
* UE4でゼロからユニティちゃんを表示させるまで
http://unrealengine.hatenablog.com/entry/2014/04/15/184432

* UE4でアニメーションブループリントを使ってステートマシンを組む
http://unrealengine.hatenablog.com/entry/2014/05/14/000828