Unity
ue

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

More than 1 year has passed since last update.

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

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

UE4というゲームエンジンがあります。ゲームエンジンというのは開発キットのようなイメージのものです。Unityと並び有名です。

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

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

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

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

https://github.com/bm9/IM4U

$ 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というものがあります。これを使って変換を行います。

モデルは、Appearance Mikuを使います。pmx2fbx.exeがあるところで変換したい.pmxを置いて実行します。実行は、cmd上で行います。Windowsです。

> pmx2fbx.exe Appearance_Miku.pmx

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

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

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

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

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

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

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

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

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

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

UE4とUnity

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

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

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

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

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

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

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

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

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

UE4でMMDモデルを動かす

前回と同様、モデルは初音ミクを使用します。

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

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

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

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

部位 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 上半身1
背中3 spline_03 上半身2
pelvis
大腿(左) thigh_l 左足
大腿(右) thigh_r 右足
下腿(左) calf_l 左ひざ
下腿(右) calf_r 右ひざ
足首(左) foot_l 左足首
足首(右) foot_r 右足首
親指(左1) thumb_01_l 左親指0
親指(左2) thumb_02_l 左親指1
親指(左3) thumb_03_l 左親指2
親指(右1) thumb_01_r 右親指0
親指(右2) thumb_02_r 右親指1
親指(右3) thumb_03_r 右親指2
人差し指(左1) index_01_l 左人差1
人差し指(左2) index_02_l 左人差2
人差し指(左3) index_03_l 左人差3
人差し指(右1) index_01_r 右人差1
人差し指(右2) index_02_r 右人差2
人差し指(右3) index_03_r 右人差3
中指(左1) middle_01_l 左中指1
中指(左2) middle_02_l 左中指2
中指(左3) middle_03_l 左中指3
中指(右1) middle_01_r 右中指1
中指(右2) middle_02_r 右中指2
中指(右3) middle_03_r 右中指3
薬指(左1) ring_01_l 左薬指1
薬指(左2) ring_02_l 左薬指2
薬指(左3) ring_03_l 左薬指3
薬指(右1) ring_01_r 右薬指1
薬指(右2) ring_02_r 右薬指2
薬指(右3) ring_03_r 右薬指3
小指(左1) pinky_01_l 左小指1
小指(左2) pinky_02_l 左小指2
小指(左3) pinky_03_l 左小指3
小指(右1) pinky_01_r 右小指1
小指(右2) pinky_02_r 右小指2
小指(右3) pinky_03_r 右小指3

参考:

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

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

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

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

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

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

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