MMDの足を何とかする方法を探してみた。
この記事は 【[Unity]UnityでMMDを使う】 の続き。
実際の動作はこちら 【Windows版】
使用モデル:
・七葉1052式 初音ミク-1052カスタム モデルデータ
使用モーション:
・あひる氏のポーカーフェイス(sm16502322)
WARNING この記事で紹介する技術は試作品です
前回の記事で問題だったのは
足、具体的にはIK(足の位置から腿・膝の角度を設定する)の処理がUnityに搭載されていなかったこと。
確かに 【IKのサンプル】 を見るかぎり、足の設置判定にRayCastみたいな重い当たり判定を必要とするあたり、
余程必要とするシステムでない限り組み込むべき物じゃない気もする。
なので、今回はIKをFK(腿・膝の回転で足の位置を設定する)に変換する方法でアプローチしてみた。
具体的には、MFU(MMD For Unity)のリポジトリにMMDIKBakerがあったので、使ってみた。
■MMDIKBakerの取得方法■
まずは取得方法。
MMDIKBakerのソースはSVN(Gitもある)で管理されているので、チェックアウトする必要がある。
流れはこんな感じ。
1.【TortoiseSVN】をインストールする。
2.適当なフォルダを作成し(C:\MFU みたいな感じ) 右クリック → SVN Checkout...
3.URL of repositoryに「http://svn.sourceforge.jp/svnroot/mmd-for-unity/」と入力してOK。
これでMMDIKBakerを含む最新のMFUを取得できるはず。
■MMDIKBakerを使えるようにする■
次はMMDIKBakerの使い方。
ソースだけではどうにもならないので、ビルドしてEXEファイルにする。
実行にはMicrosoft Visual Studio 2010等のC#がコンパイルできる環境が必要。(Express版も可)
まず、trunk\MMDIKBaker\MMDIKBakerにあるMMDIKBaker.slnを実行。
開発環境が開くので、 デバッグ → ソリューションのビルド を選択。
これで、trunk\MMDIKBaker\MMDIKBaker\bin\Debug にMMDBoneBakerが作成される。
■MMDIKBakerでIKをFKに変換する■
最後の工程、IKのモーションをFKに変換する。
作業内容はこんな感じ。
1.モーションを登録するPMDファイルを miku.pmd にリネームする。
2.モーションファイル(VMD)をTrueMyHeart.vmd にリネームする。
3.miku.pmdとTrueMyHeart.vmdをtrunk\MMDIKBaker\MMDIKBaker\bin\DebugにD&Dで上書きする。
4.MMDBoneBaker.exe を起動してしばらく待つ。
(5〜10分くらい待つ。画面の変化もないので、信じて待つ)
5.IKをFKに変換したモーションファイル tmh_bake.vmd が出力される。
あとは、【[Unity]UnityでMMDを使う】と同じようにモーションを登録してやれば、動作するはず。
■現状の問題■
現在の所、この方法には問題が発生することがある。
・UnityWebPlayerで実行すると、モデルがグチャグチャになる。(スプーみたいになる/白目になる/ズラが取れる)
・足が前後逆になる事がまれにある。ありえない方向に曲がる事がまれにある。
・足がプルプル震えてる時がある。
・腰が一瞬180度回転する事がまれにある。
とは言え、足が動かないよりは動いたほうが数段面白い。
この技術はぜひとも完成品を見てみたい所。
なお、手動でIK→FKの変換は、こんな形で出来る。
こちらの作業は手間がかかるけど美しいモーションが出来るんじゃないかと。
手間と時間とモチベーションのトレードオフでどうぞ。