UE4を使ってMMDモデルの表示
UE4でMMDの初音ミクを表示してみました。
UE4というゲームエンジンがあります。ゲームエンジンというのは開発キットのようなイメージのものです。Unityと並び有名です。
しかし、このようなゲームエンジンは、MMDモデルを直接読み込めるわけではありません。モデルを読み込むには、プラグインを使ったり、変換したりする必要があります。
プラグインを使ったMMDの読み込み
まず、プラグインを使った方法を紹介します。しかし、バイナリがWindowsのものしか配布されておらず、ソースも公開されていないため、Macでは使えませんでした。
なぜソースが公開されていないかというと、処理中にUE4本体のコードを含むらしいからとのこと。
$ 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 |
参考:
これでアニメーションを動かせるようになったと思います。もし試したいならMannequin/Animations
にて好きなアニメーションを選択し、右クリックにてAnimアセットをリターゲットする
を選択します。ここでMikuモデルを選択すれば再生されると思います。
再生すると分かりますが、肩
と足
の曲がり具合がサンプルモデルとMMDモデルでは異なっているため調整が必要です。しかし、今回は省略します。調整したい方は、サンプルモデルの各ボーンをできるだけまっすぐにすると良いでしょう。
最後に、初音ミクモデルを自由にコントロールする方法です。
これは、ThirdPersonBP/Blueprints/ThirdPersonCharacter
のMesh
を初音ミクのものにし、かつAnimationのClassをThirdPerson_AnimeBP...
に指定することで設定できます。
あとは、プレイするとキーボードで初音ミクを操作できます。
ボーンの指定や調整などが非常に面倒でした。Unityの場合、この辺りはプラグインでほぼ全部やってくれたような記憶があります。