お疲れ様です。ガナリヤです!
UnityでMMDモデルを使用したいと考えたのですが、なかなかうまく行かなかったため、忘れないうちにこちらに記しておこうと思います。
UnityでMMDモデルを読み込む方法
①Blenderで一度取り込み,.blendファイルを読み込む
MMDのモデルデータは、pmx形式になっています。
しかし、Unityで対応しているモデルデータ形式は
・fbxファイル(Unityではこれが普通。ただし、マテリアル、テクスチャが読み込まれないなどめんどくさい)
・blendファイル(Blender)
が主にあります。以前Splatoonプロジェクトを行ったときはfbx形式を使用していました。
今回は、BlenderでMMDモデルを取り込むため、fbx形式、blend形式のどちらでも良かったのですが、なぜかどちらもうまく行きませんでした。
fbx形式では、マテリアルとテクスチャが取り込まれず
blend形式では、マテリアルとテクスチャは取り込まれたものの、色の設定が行われておらず、表示位置から少しずれていました。
Unity2017の最新版で、うまく対応してないのかもしれません。
今回はこの方法でうまくいかないため、新たな方法②を使用しました。
②MMD4Mecanimを使用する
MMD4MecanimはNoraさん(@Stereoarts)が開発した、Unity上でMMDモデルであるpmx形式を直接読み込み、fbx形式に出力できるというすごいツールです!
なお、MMD4Mecanimの導入は他のサイトさんをご利用ください。(うまくかけないため)
自分もMMD4Mecanimを導入したのですが
Processボタンを押してもうまく行きませんでした。
そこで、うまくいかない理由は以下のとおりであると考えました。
「自分の開発環境がMacであり、MMD4MecanimはWindowsの機能を利用するため、うまくいかない」
そこで、上の画像にもあるのですが、「Wine」というLinux/Macで動作するアプリを使用しました。これは、Mac上で、Windowsのソフト、機能を使用することができるというアプリです。
このWineをインストールしてもうまく行きませんでした。(後に確認したところ、Wineはなくても、最新のMMD4MecanimはMacでも動作するようです。)
じゃあなんで行かないのじゃぁ・・・(のじゃロリ風)
圧倒的壁に立ちはだかったため、開発者であるNoraさんに質問をさせていただきました。
質問をさせていただいたところ、UnityのEditorログにエラーが載っているとのことでした。
確認をしてみたところ
「 Reason: Incompatible library version: pmx2fbx_275 requires version 8.0.0 or later, but libiconv.2.dylib provides version 7.0.0
Processed pmx2fbx.」
という表記があり、libiconv.2.dylibという動的ライブラリのバージョンが古いため作動していないということでした。
libiconvってなんやねんって思い、検索してみたところ、要約すると、文字列の文字コードを変換するライブラリでした。
・・・・・なるほど、よくわからん。
とりあえずlibiconv.2.dylibのバージョンが8になればいいやと思い、色々とサイトを調べ、継ぎ接ぎ継ぎ接ぎ実行した結果うまく行きました。
方法としては
1.XCodeのコマンドラインツールが必要なため、インストール
2.macportsというパッケージ管理ツールをダウンロードしてインストール(homebrewに近いものです)
3.ターミナルに「port rev-upgrade」と入力し、libiconvをアップデート(うまくいかない場合は先頭に sudo とつけて、管理者権限で行ってください)
4.ターミナルに 「brew install libiconv」と入力し、libiconvをこれでもかとアップデート
上の方法で、自分でもよくわかっていませんが、なんかうまくいきました。うまく行った結果は以下の画像です。
かばんちゃんかわいいよハァハァ・・・
よくよく考えたら明日テストでした。
どうしましょう。以上、ガナリヤでした