にゃっはろー!今回のテーマは「UnityにMMDモデルを読み込んで動かす方法」です!
MikuMikuDance(以下MMD)モデルには素晴らしいモデルが沢山あり、Unityで動かしてみたいというモデルもあると思います。そのままでは読み込ますことはできませんが、変換を通すことで実際に読み込んで動作させることができるようになります。
少し長くなっていますが、初心者でもわかるように画像を多く載せて説明していますので、ぜひお気に入りのMMDを動かして見て下さい!

準備するもの
・Unity Hub
・Unity 使用したバージョン:2020.3.23f1
・Visual Studio 2019 Community
・動かしたいモデルのMMD
・MMD4Mecanium
開発環境については、細かな説明は省略します。
Unity Hub+Unity
Unityのバージョンに関しては、このバージョンにこだわる必要はないですが、バージョンごとの違いで小さな違いはあるかもしれません。本記事と同じように進めたい場合はバージョンを合わせることをおすすめします。
Visual Studio
Visual Studio のバージョンに関しては、2022/3時点ではおそらくVisual Studio 2022にUnityが対応していない?ので、2019を使って進めています。どちらにしても大きな操作の違いはありません。
連携設定を行っていない場合は、Unityから以下の手順で設定します。
- メニューから「Edit」→「Preferences」を選択
- 「Prreferences」画面の「External Tools」→「External Script Editor」をインストールしているVisual Studioに設定します。
- 設定をしたら一度保存して、閉じた後に、開き直しましょう。

MMDモデル
MMDモデルについて、今回使うモデルは、我が推しホロライブの「さくらみこ」(以下みこち)のMMDモデルを利用します。
※MMDの利用にはそれぞれ版権関係や作者の利用規約など確認の上、禁止事項などに触れないように利用下さい。

MMD4Mecanim
MMDモデルをUnityに読み込ませるために利用します。
※いつくかのプラットフォーム(WebPlayer, WebGLなど)は動作しない設定になっているようなので、ご注意下さい。

MMDモデルをUnityに読み込ませてみよう!
MMD4Mecanimでの変換作業
ダウンロードしたMMD4Mecanimを解凍して、でてきた「MMD4Mecanim.unitypackage」 をUnityにインポートします。Projectに直接ドラッグ&ドロップすることでインポートできます。

インポート画面が出てくるので、「Import」を押します。

APIをアップグレードするか聞いてくるので「I Made a Backup.Go Ahead」を押してアップグレードします。

読み込まれると以下のようにフォルダが生成されます。

次に、ダウンロードしたMMDを同様にUnityの「Project」-「Assets」フォルダにフォルダごとドラッグ&ドロップします。
※「さくらみこ1公式mmd_ver1.0」をドラッグ&ドロップ

フォルダをドロップすると、そのフォルダ内に「sakuramiko1.MMD4Mecanim.asset」 というファイルができます。このファイルをクリックします。
クリックすると、「Inspector」に利用規約等がでてくるので、確認・チェックして「同意する」をクリックします。

下記の画面に移動するので、このまま「Process」を押します。

変換がはじまりますので、完了を待ちます。

変換が完了すると以下のようにファイルが生成されます。
モデルが表示されている、「sakuramiko1.fbx」をクリックします。

Inspectorから「Animation」に移動し、 「Import Animation」のチェックを外します。


「Configure」をクリックとると「Avatar Configuration」に推移します。

「Inspector」の一番下までいき「Done」をクリックします。

これでコンバート作業が完了しました。
オブジェクトを実際に表示して確認してみる
実際に配置してみましょう。
まずは床を用意します。 「Hierarchy」→「3D Object」→「Plane」 でPlaneを生成します。

次に先程コンバートした「sarakumiko1.fbx」をPlaneの上にドラッグドロップします。
みこちのモデルが表示されるので、再生ボタンで確認してみましょう。
3D空間上にみこちが表示されました!

3D空間上にみこちが表示されました!

適当においたので、 「sarakumiko1」をクリックして、
InspectorからPositionを0,0,0にしておきましょう。
(Transform右クリックからリセットでもOK)

キャラクターコントローラーを設定して操作してみよう!
次にキャラクターコントローラーをみこちに設定して操作できるようにします。
今回は無料配布のアセットの「Standard Assets(for Unity 2018.4)」の中にある「ThirdPersonController」を使って説明します。
「Standard Assets」の準備をしよう!
※Unity 2018.4用のものなので、少しエラーが出ますがあとで直し方を説明しています。

アセットサイトで取得後、「Open in Unity」をクリックし、 「Packge Manager」が開くので、Packges:My Assetsから「Download」します。

ダウンロード後、そのまま「Import」します。


「Project」のアセットに「Sdandard Assets」が追加されました。

「Project」ウィンドウから「Assets」→「Standard Assets」→「Characters」→「ThirdPersonCharacter」 →「Prefabs」と移動し、「ThirdPersonController」を「Hierchy」にドラッグドロップします。


「Hierarchy」に追加した「ThirdPersonController」のインスペクタを確認すると「Script」をみてみると何やらエラーが発生しています。
「Standard Asset」は「Unity Ver2018」用なので、仕様が変わっている部分でエラーが出ます。
いつまでも2018を使うわけにはいかないので直します。
「Console」 をクリックしてエラーになっているところを探します。


このエラーをダブルクリックするとVisual Studioが立ち上がります。
Visual Studio上で確認すると「GUIText」に関する項目でエラーが出ています。
これを直していきましょう。一番上のエラーをダブルクリックしてエラー位置へ移動します。

「GUIText」は仕様がかわっており、「UnityEngine.UI」に統合されていますので、 新しいUnityの仕様になおします。
using System;
using UnityEngine;
using UnityEngine.UI;
#pragma warning disable 618
namespace UnityStandardAssets.Utility
{
public class SimpleActivatorMenu : MonoBehaviour
{
// An incredibly simple menu which, when given references
// to gameobjects in the scene
public Text camSwitchButton;
public GameObject[] objects;
以下略
これを治すと、全てのエラーがなくなりました。
保存してUnityに戻ります。 UnityのConsoleに出ていたエラーがなくなりました。

「ThirdPersonController」を変換したMMDに適応しよう!
改めて、「ThirdPersonController」のインスペクターを確認します。
「Third Person Character」の項目が正しく表示されました。これをコピーします。
右の…から「Copy Component」を選択します。

「Hierarchy」の「sakuramiko1」をクリックし、 「Inspector」の適当なコンポーネントの上で右ク リックをします。
「Paste Component As New」をクリックします。

次に、先ほどと同様に、「Hierarchy」の「ThirdPersonController」を再度選択し、 インスペクターから「Third Person User Control(Script)」をコピーして、「sakuramiko1」にペーストします。

これらをコピーすることで、自動で「Rigidbody」と「Capsule Collider」もコピーされます。
これで以下のコンポーネントが追加できました。

「Animatorコンポーネント」を設定してきます。
AnimatorコンポーネントのControllerがNoneになっていますので、右の◎をクリックして、
「ThirdPersonAnimatorController」を設定します。



「Hierarchy」の「ThirdPersonController」はもう不要なので右クリックで削除します。

当たり判定の位置と調整方法
当たり判定に利用するコライダーを設定します。 Planeに埋まっているので、修正します。

「Capsule Collider」の設定を Center:Y0.8 Radius:0.4 Height:1.6 にすると、以下のようにいい感じに収まりました。

次に、「Capsule Collider」の「Material」の◎クリックして、 「ZeroFriction」を設定します。


これでコントローラーの設定完了です! 再生ボタンで動作確認してみましょう。

装飾品の物理演算をさせてみよう!
次に服などの物理演算をOnにします。 MMD4 Mcanim Model(Script)の「Physics」項目から 「Physics Engine」の項目を「None」から「Bullet Physics」に変更します。

これで服や髪が揺れるようになりました!

カメラを追随させてみよう!
今は固定のカメラになっていますので、キャラに追随するように カメラの設定を変更します。
Asssets→Standard Assets→Cameras→Prefabs から「FreeLockCameraRig.prefab」を「Hierarcy」へドラッグドロップします。 元々あった「Main Camera」は不要なので右クリック→Deleteで削除します。

「Hierarchy」の「sakuramiko1」をクリックして、 インスペクターの「Tag」の項目を「Player」に変更します。

そのままだとカメラが少し遠いので、位置を調整します。
「Hierarchy」→「FreeLockCameraRig」→「Pivot」→「Main Camera」 をクリックします。 「Main Camera」のカメラの位置なので、キャラに近づけます。

これで設定完了です!
動作確認してみましょう。
最後に
今回、MMDをUnityに読み込ませて動かす方法を紹介しました!
少し長くなりましたが、実際に動かしてみると感動したんじゃないかと思います。
実は私が、初めてUnityを触って作ったのがこのMMDを動かすプログラムでした。
その時は、「Standard Assets」ではなく、「Unity 3D game kit」を使って作成し、
みこちの[【 エリート自由工作 】さくらみこ夏の自由工作大賞2021?【ホロライブ/さくらみこ】]で「せみふぁいなるで賞」を頂きました!みこちありがとう!
これをきっかけにUnityの勉強を初めて今ではもう少し色々できるようになっています。
「Unity 3D game kit」を利用した方法は、少し難しいので、またの機会に紹介できたらと思っています。
今回の記事が、皆さんの技術力向上につながると嬉しいです。
以上、おつかれさまでした!
モデル:©2016 cover corp. https://3d.nicovideo.jp/works/td74928