UE4を使ってMMDモデルをコントロールするまで



### UE4を使ってMMDモデルの表示

UE4でMMDの初音ミクを表示してみました。

![](https://raw.githubusercontent.com/mba-hack/images/master/game_ue4_mmd_miku_04.png)

[UE4](https://www.unrealengine.com/)というゲームエンジンがあります。ゲームエンジンというのは開発キットのようなイメージのものです。[Unity](http://japan.unity3d.com/)と並び有名です。

しかし、このようなゲームエンジンは、MMDモデルを直接読み込めるわけではありません。モデルを読み込むには、プラグインを使ったり、変換したりする必要があります。

### プラグインを使ったMMDの読み込み

まず、プラグインを使った方法を紹介します。しかし、バイナリがWindowsのものしか配布されておらず、ソースも公開されていないため、Macでは使えませんでした。

なぜソースが公開されていないかというと、処理中にUE4本体のコードを含むらしいからとのこと。

https://github.com/bm9/IM4U

```bash:
$ git clone https://github.com/bm9/IM4U
$ cd IM4U
$ git checkout 4.11.X
$ cp -rf Plugins ~/Documents/Unreal\ Projects/MyProject/
```

この場合、マテリアルに適切なテクスチャが設定されるため煩わしさは軽減されると思われます。使ってないので分かりませんが。

### PMXからFBXに変換してMMDを読み込む

プラグインを使わない場合はこちらの方法になります。

[MMD4Mecanim](http://stereoarts.jp/)というものがあります。これを使って変換を行います。

モデルは、[Appearance Miku](http://piapro.jp/t/KPU3)を使います。`pmx2fbx.exe`があるところで変換したい`.pmx`を置いて実行します。実行は、`cmd`上で行います。Windowsです。

```bash:
> pmx2fbx.exe Appearance_Miku.pmx
```

変換が終わると、`Appearance_Miku.fbx`ができますが、これをUE4にインポートします。

普通にファイルをドラッグアンドドロップすればいけます。

その前に展開先のフォルダを作っておくと便利です。

### マテリアルが上手く設定されない問題

インポートしてもそのままではマテリアルに色がついていません。

したがって、私の場合、手動で各マテリアル(1肌, 2髪など)にテクスチャを設定しました。この作業は非常に面倒でした。必要な情報は、変換した際にできた`.xml`を見ます。

まず、モデルを解凍したディレクトリにあるテクスチャ(PNGファイルなど)をUE4にインポートします。

![](https://raw.githubusercontent.com/mba-hack/images/master/game_ue4_mmd_miku_02.png)

![](https://raw.githubusercontent.com/mba-hack/images/master/game_ue4_mmd_miku_01.png)

そして、各マテリアルをダブルクリックで開き、エディタが起動すると思いますが、そこで先ほどインポートしたテクスチャ(PNG画像ファイル)をドラッグアンドドロップし、ベースカラーへのリンクを貼ります。

![](https://raw.githubusercontent.com/mba-hack/images/master/game_ue4_mmd_miku_03.png)

これで、モデルがある程度はちゃんと表示されると思います。

![](https://raw.githubusercontent.com/mba-hack/images/master/game_ue4_mmd_miku_05.png)

ちなみに、マテリアルを変更した際、ビルドには多少時間がかかりますので、その間、マテリアルが反映されないことがあります。気長に待ちましょう。

### UE4とUnity

正直、Macでは、UE4はかなり使いづらかった印象です。Unityと比べて。

理由はいくつかありますが、一番はビルドに時間がかかりすぎることです。

この点、Unityの時はあまり待たされることがなかった気がします。UE4よりは割りとサクサク動いていました。

また、UE4は無料になって間もない事から日本語ドキュメントやWeb情報がUnityよりも圧倒的に少ないです。

ただ、Unityよりも良い部分はあります。

一つにゲームとしての見た目はUE4のほうが良いように感じました。更に、標準モデル(サンプルモデル)の動きも軽快に感じました。

つまり、本格的にゲームを作るならUE4のほうが良いのかもしれないとそう感じる部分が多々ありました。

しかし、私のMacBook Air 11-inchでは荷が重すぎたのか、あまり快適に作業はできませんでした。

これは、OSがMacであることも関係していると思います。多分、Windowsならもう少し快適だったと思います。



## UE4でMMDモデルを動かす


[前回](https://syui.github.io/blog/2016/05/19/ue4-mmd-miku/)と同様、モデルは初音ミクを使用します。

プロジェクトを作成する画面で階段とかがあるマップ選択すると、サンプルキャラクターとモーションがついてきます。今回はそれを利用してモデルに動きをつけます。

まず、サンプルキャラのスケルトン、`Mannequin/Character/Mesh/UE4_Mannequin_Skeleton`を編集します。

そこでリターゲットマネージャーを起動し、`リグを選択`にて`Humanoid`を指定します。すると、自動で各ボーンが割り当てられます。最後にポーズを保存します。

次に、Mikuのスケルトンを編集します。先ほどと同じようにリターゲットマネージャーを起動し、リグを選択にて`Humanoid`を指定します。そして、各ボーンを手動で割り当てます。これが非常に面倒です。

![](https://raw.githubusercontent.com/mba-hack/images/master/game_ue4_mmd_miku_motion_02.png)

![](https://raw.githubusercontent.com/mba-hack/images/master/game_ue4_mmd_miku_motion_03.png)

|部位|ue4標準ボーン|MMD標準ボーン|
|---|---|---|
|頭|head|頭|
|首|neck_01|首|
|肩（左）|clavicle_l|左肩|
|肩（右）|clavicle_r|右肩||
|上腕（左）|upperarm_l|左腕|
|上腕（右）|upperarm_r|右腕|
|前腕（左）|lowerarm_l|左ひじ|
|前腕（右）|lowerarm_r|右ひじ|
|手首（左）|hand_l|左手首|
|手首（右）|hand_r|右手首|
|背中1|spline_01|下半身|
|背中2|spline_02|上半身１|
|背中3|spline_03|上半身２|
|腰|pelvis|腰|
|大腿（左）|thigh_l|左足|
|大腿（右）|thigh_r|右足|
|下腿（左）|calf_l|左ひざ|
|下腿（右）|calf_r|右ひざ|
|足首（左）|foot_l|左足首|
|足首（右）|foot_r|右足首|
|親指（左1）|thumb_01_l|左親指０|
|親指（左2）|thumb_02_l|左親指１|
|親指（左3）|thumb_03_l|左親指２|
|親指（右1）|thumb_01_r|右親指０|
|親指（右2）|thumb_02_r|右親指１|
|親指（右3）|thumb_03_r|右親指２|
|人差し指（左1）|index_01_l|左人差１|
|人差し指（左2）|index_02_l|左人差２|
|人差し指（左3）|index_03_l|左人差３|
|人差し指（右1）|index_01_r|右人差１|
|人差し指（右2）|index_02_r|右人差２|
|人差し指（右3）|index_03_r|右人差３|
|中指（左1）|middle_01_l|左中指１|
|中指（左2）|middle_02_l|左中指２|
|中指（左3）|middle_03_l|左中指３|
|中指（右1）|middle_01_r|右中指１|
|中指（右2）|middle_02_r|右中指２|
|中指（右3）|middle_03_r|右中指３|
|薬指（左1）|ring_01_l|左薬指１|
|薬指（左2）|ring_02_l|左薬指２|
|薬指（左3）|ring_03_l|左薬指３|
|薬指（右1）|ring_01_r|右薬指１|
|薬指（右2）|ring_02_r|右薬指２|
|薬指（右3）|ring_03_r|右薬指３|
|小指（左1）|pinky_01_l|左小指１|
|小指（左2）|pinky_02_l|左小指２|
|小指（左3）|pinky_03_l|左小指３|
|小指（右1）|pinky_01_r|右小指１|
|小指（右2）|pinky_02_r|右小指２|
|小指（右3）|pinky_03_r|右小指３|

参考:

http://qiita.com/housakusleeping/items/fa1300a9f4aa1a3db58a

これでアニメーションを動かせるようになったと思います。もし試したいなら`Mannequin/Animations`にて好きなアニメーションを選択し、右クリックにて`Animアセットをリターゲットする`を選択します。ここでMikuモデルを選択すれば再生されると思います。

再生すると分かりますが、`肩`と`足`の曲がり具合がサンプルモデルとMMDモデルでは異なっているため調整が必要です。しかし、今回は省略します。調整したい方は、サンプルモデルの各ボーンをできるだけまっすぐにすると良いでしょう。

最後に、初音ミクモデルを自由にコントロールする方法です。

これは、`ThirdPersonBP/Blueprints/ThirdPersonCharacter`の`Mesh`を初音ミクのものにし、かつAnimationのClassを`ThirdPerson_AnimeBP...`に指定することで設定できます。

あとは、プレイするとキーボードで初音ミクを操作できます。

![](https://raw.githubusercontent.com/mba-hack/images/master/game_ue4_mmd_miku_motion_01.png)

ボーンの指定や調整などが非常に面倒でした。Unityの場合、この辺りはプラグインでほぼ全部やってくれたような記憶があります。