korechi’s diary

とあるVR/ARエンジニアのブログ

pmxファイル(MMD)をunityにインポートする話(Blenderを使っても良い)

PMDファイルとは、樋口優氏が開発した 3DCG アニメーションソフトの1種である MikuMikuDance で扱われるモデルデータを扱うファイル形式の1つです。
主にニコニコ動画で公開されている 3DCG モデルファイルですが、Unity には標準でサポートされていないため PMD ファイルを Unity にインポートするには別のインポーターが必要となります。今回はその手順を2種類紹介します。
MM4DMecahim を使って Unity に MMD を入れられるようにする
mmd-tools を使い BlenderMMD を読み込ませ、それを.blend として保存し Unity に取り込む
この2つです。1つ目は Unity のみで MMD の取り込みが完了するメリットがありますが、Unity 内でごちゃごちゃやらなきゃいけないというデメリットがあります。
これはつまり、 Unity で別のプロジェクトを作成しまた MMD ファイルを読み込みたい場合は、MM4DMecanim を再度 Unity のプロジェクトに入れなければなりません。これは賢くなさそう。(また、筆者はアプリを Android に出力しようとしたところ、マテリアルがうまく反映されずモデルが出力されなかった。。)
2つ目の方法は、Blender を使う手間が加わりますが、Blender
.fbx や *.blend ファイルとして MMD データを出力すれば、あとはそれを Unity にインポートすれば良いだけです。
この方法のメリットは、Blender <-> Unity は標準でお互いにサポートされているため、Unity 側でのモデルデータの動作が安定します。
それでは、それぞれの方法について紹介していきます。

使用環境

Mac OS Sierra バージョン 10.12.2
Unity version 5.5.1 f1 Personal

MM4DMecahim を使って Unity に MMD を入れられるようにする

使用するファイル

MMD4Mecanim (beta)
- リンク
f:id:korechi:20170308203251j:plain
MMD4Mecanim_Beta_20170128.zip をクリックしてダウンロードできます
Ⅳ号戦車D型 PMX モデル
- ピーナッツ野郎が色々頑張るブログinGoogle 様
こちらからダウンロードできます

Unity の準備

ダウンロードした MMD4Mecanim_Beta_20170128 フォルダ内の MMD4Mecanim.unitypackage を Unity にインポートします。
- Unity の Project ビュー内の Assets に .unitypackage をドラッグ

PMX の prefab 化

  1. ダウンロードした PzKpfw4_Ausf_D フォルダを同様に Unity の Project ビューにある Assets フォルダにドラッグします。
  2. *.MMD4Mecanim(生成される) を選択し、Inspector ビュー内のチェックボックスにチェックをいれて”同意する”を選択
    f:id:korechi:20170308204225j:plain
  3. *.MM4DMecanim の Inspector ビュー内の ‘Process’ を選択
    f:id:korechi:20170308204718j:plain
  4. Prefab が生成されます
    f:id:korechi:20170308204544j:plain

BlenderMMD を読み込ませ、それを別ファイルとして保存して Unity に取り込む

使用するファイル

mmd-tools
- ここからzipをダウンロード
Unity version 5.5.1 f1 Personal
Blender 2.78

Blender の準備

基本はここを参考にしてください。
ただ、アドオンを配置するディレクトリが MacWindows で違うため、ここを読んで確認してください。
アドオンのインストールについては上記を参考にすればわかるためここでは省略します。

Unity へモデルデータをうつす

  1. Blender でできたデータを *.blend ファイルとして保存
  2. Unity 側で Assets 下のどこかに *.blend ファイルをドラッグする
    これで終わりです。簡単でしょう?
    たまに、マテリアルがうまく貼られていない時がありますが、その時は仕方ありません。Mesh の shader を貼り直しましょう。