MRが楽しい

MRやVRについて学習したことを書き残す

UnityにMMDモデルを取り込んでhololensで表示する

今週の土日は3Dモデリング学習の続き……のはずでしたが。
より面白そうな技術を見つけたので、そっちに取り組んでました。好きなことだけやりますが、好きなことにも順番があるのです。

本日はMMDのモデルをUnityに取り込むという技術です。
MMDがどれくらい知名度あるか分からないので説明をしますと、MMDとは正式名称「MikuMikuDance」といい、動画サイトの3D動画でもっともよく使われるフリーの3DCGソフトウェアです。
・VPVP
 http://www.geocities.jp/higuchuu4/


故に、多くの3DモデラーがこのMMD向けの3Dモデルを作成しており、ネット上で配布されている3Dモデルの数は数え切れません。
キャラクターを始め、小物からステージまで、少し検索すれば容易に3Dモデルが見つかります。
そんなMMDのデータをUnityに取り込めれば、リソースには苦労しませんし。誰もが知っているキャラクタが動くシーンは多く人の興味を引けるでしょう。

早速3Dモデルを用意します……が、ここで一点注意です。
MMDのモデルは個々の有志がそれぞれに作成して公開するため、ライセンス体系が全く整備されていません。
利用の際はモデルに付属するテキストや配布ページの注意書きをよく読みましょう。

慎重を期するなら、無償であってもMMDモデルを利用したアプリをストア等に公開するのは止めるべきです。
あくまで3DCGソフトウェアの3Dモデルですので、個人利用か動画作成のリソース程度に利用を留めましょう。


さて、MMDのモデルをUnityに取り込む方法です。これも有志によって開発が進められており、方法が二つあります。
・Stereoarts Homepage(MMD4Mecanim (Beta))
 http://stereoarts.jp/
MikuMikuDance for Unity
 http://mmd-for-unity-proj.github.io/mmd-for-unity/

機能も大切ですが、ここでもツールのライセンスと規約をよく読みましょう。
特にMMD4Mecanimの方は、UWP(HoloLens)の環境では私的使用を除いて使用しないことという規約が明確に記載されています。
(「キャラクターイメージを損なう使用は避けてください」という規約など、特にモデル作成者を守ろうとする姿勢が伺えます)
一方、MikuMikuDanceforUnityはMMD4Mecanimに比べると規約が緩く簡潔です。
MMDの業界にとってどちらが良いかは一旦置いておき、今回は後腐れのなさそうなMikuMikuDanceforUnityを使います。

MikuMikuDanceforUnityのインストール方法、使い方などは公式のページに一通りまとめられています。
MMD for Unityの使い方
 https://mmd-for-unity-proj.github.io/mmd-for-unity/howto.html
・モデルデータの読み込み(導入)
 http://mmd-for-unity-proj.github.io/mmd-for-unity/001.html

v2.1の場合、zipを解凍した「mmd-for-unity-proj-mmd-for-unity」フォルダをAssetにドラッグ&ドロップするだけです。
ここで、そのまま読み込むとエラーが発生します。
MikuMikuDanceforUnityは3年程、ソースコードの更新がなされておらず、Unity4向けの実装となっているためです。
MMDもまた2011年に開発終了がアナウンスされており、MMDとの互換性については心配は無用です)

Unityのソースコードの自動バージョン更新に任せれば、ほとんどのエラーは修正してくれます。
しかし、一つだけ自動更新では解決されませんでした。
f:id:bluebirdofoz:20170611203649j:plain

どうやらUnity5では該当の処理が不要のようなので手動でコメントアウトします。
answers.unity3d.com

以下のように修正し、エラーが無くなりました。
・VMDConverter.cs

//AnimationUtility.SetAnimationType(clip, animation_type);
//Unity5 do nothing

後はマニュアルに従って、読み込みたいMMDモデルを取得してきて読み込みを実行します。
特に問題なく読み込めました。
f:id:bluebirdofoz:20170611203707j:plain

注意点としてhololens向けのビルド設定を行う「Apply Hololens Project Settings」は先に実施しておいた方がよいかもしれません。
自分の場合、読み込み後に実施するとキャラクタの剛体判定がおかしくなりました。
それに限らず、髪や服がプルプルと震えて見えたりなど、MMDモデルは剛体判定の扱いが非常に難しそうです。
気になる場合は、読み込み時に「Rigidbody」のチェックを外し、自分でゲーム用のColliderを設定すると良い感じになります。

試しにビルドを行います。
すると、Unity側のビルドは成功しましたが、VisualStadioでのビルドで以下の"update required"というメッセージが表示され、ビルドできませんでした。
f:id:bluebirdofoz:20170611203722j:plain

プロジェクトファイルを確認すると、バージョン10.0.15063.0以上のSDKが必要のようです。

<TargetPlatformVersion>10.0.15063.0</TargetPlatformVersion>

以下から最新のSDKを取得しました
Windows 10 SDK
 https://developer.microsoft.com/ja-jp/windows/downloads/windows-10-sdk

最新SDKVisual Studio 2017でしか検出できないとのことなので、未インストールの場合は 2017 のインストールも必要です。
Visual Studio 2017 のインストー
 https://docs.microsoft.com/ja-jp/visualstudio/install/install-visual-studio

ビルドを行い、hololens上で起動します。
f:id:bluebirdofoz:20170611203837j:plain
MMDモデルをhololensアプリに表示することができました。

しかし、前述のライセンスの難しさから、ゲームキャラクタとしての利用はお薦めできません。暇潰しのお遊び程度に留めましょう。