最近のトラックバック

« 今日の作業BGM | メイン | 今日の作業BGM »

2013年6月10日 (月)

MMD for Unityでミクさんのツインテールを物理演算させるお話 その1

20130610_00_thumbnail
無料版Unityでもスマートフォン向けアプリ出力が解禁されたのを受けて、
Android上で初音ミクさんを動かしてみました。
その時に色々と検証したので書いておきます。

MMD(BulletPhysics)・Unity(PhysX)共に
物理演算のジョイント関係がまだ理解しきっていないのですが、
理解しきる迄先延ばしすると何時迄経っても投稿出来無いので、
そこら辺は妥協です。
妥協大事。

と言う事で、まず完成したものです。
Androidで動いている物の動画でも良かったのですが、折角ブラウザ向け出力が有るのでそちらでいきましょう。
なおサウンドは流れませんが、元々流していないので正常です。
WebPlayerでのデモ

あれですよね、見た瞬間モデル名とモーションが分かってしまうと言うのは凄いですよね。
それだけ変換精度が高いと言う事で、“MikuMikuDance for Unity”製作者は偉大です。


さて、本題に入りましょう。
初音ミクさんを踊らすと言えばMikuMikuDance、つまりMMDですがAndroid上で動くエンジンは有りません。
Unityは最近Android向け出力が無料版でも解禁されましたが、ミクさんのデータが有りません。
ならばMMDのデータをUnity向けに変換してAndroid用に出力したい訳です
其処で利用するのが“MikuMikuDance for Unity”。
MMDのモデルデータ・モーションデータがUnityで使える様に変換してくれます。

20130610_01_m4u_download_page
まず“MikuMikuDance for Unity”をUnityで使える様にしましょう。
UnityでMMDを動かす会から最新リリース版をダウンロードしてきます。
記事作成時点ではmmd-for-unity1.2a-r122.zipでした。

2013年8月29日 5時55分 追記 ココカラ
現在はGitHubに移行しています。
最新リリース版のダウンロードはMikuMikuDance for Unityから出来ます。
追記 ココマデ

20130610_02_m4u_download_file
解凍後のファイル構成はこの様な感じです。
readmeがHTMLと言うのは結構珍しい気がしますね。
そしてreadmeの使い方を見てみると、まさかのニコニコ動画へのリンクでした。
やっぱり珍しい造りですね。

と言う事で動画を拝見。
3分も無い動画なので良かったですが、30分とかだったらめげてたかもしれません。

20130610_03_unity
解凍後のフォルダをUnityのProjectタブに入れれば良いとの事です。
起動直後のUnityは右の様な状態ですので
Projectタブ(下部のスペース)にドラッグ&ドロップします。

20130610_04_m4u_dad
ドラッグ&ドロップ後のUnityが右の様に成ります。
ステータスバーにwarningが出ていますが、
取り敢えずエラーは出ていない様です。
(Console見ると8件のwarningが出ていました。)

実はこの状態でAndroid向けにモードを変えるとエラーが発生してしまうのですが、
それについては後回しにします。

次にMMDのモデルデータを読み込みます。

今回使用したのは初音ミク@七葉1052式(仮)物理演算仕様です。
公式絵に似ている事も然る事ながらローポリゴンモデルでも有名です。
ダウンロードの詳細は下記の動画を参照して下さい。

初音ミク@七葉1052式(仮)物理演算仕様モデルの現時点での最新版はver1.03です。
物理演算仕様ver1.00に比べて少しポリゴンが増えていますが、
取り敢えず動かす分にはそちらを利用した方が楽です。

20130610_05_nanoha1052physics_downl
私はポリゴン増加を嫌って物理演算仕様ver1.00を使用しました。
前述動画で2番目に登場したモデルですね。
こちらのモデルは後々地雷を踏むので解説するには都合が良いです。

20130610_06_nanoha1052physics_dad
ダウンロードして解凍して、Unityにドラッグ&ドロップした後がこの様な状態です。
あ…因みに、Unityにドラッグ&ドロップする前にresadme.txtは読んで下さいね。

20130610_07_pmd_loader_window
次にPMDファイルの読み込みです。
メニューのPluginsからPMD Loaderを読み込む様です。
…、…。
メニューにPluginsなんてものが有りません。

どうやらメニューの更新が行われない事が有る様です。
PluginsはTerrainとWindowの間に出来ますので、
信じてTerrainの隣辺りをクリックして下さい。
多分出ます。
それでも出なければUnityを再起動すれば良いでしょう。

Pluginsが有るなら選択して、
出てくるメニューを順にMMD Loader、PMD Loaderと選択します。
PMDLoaderウインドウが出てきます。

20130610_08_convert_in_pmdloader_wi
そして、Projectタブのpmdファイルを、
PMDLoaderウインドウのPMD File欄にドラッグ&ドロップします。

Convertボタンが出来ますので、そのまま選択します。
すると変換が始まりますので、終わる迄待ちます。

20130610_09_error_message
文字化けしているエラーが出たら、Try Againを押せば進むと思います。

20130610_10_model_loaded_popup
変換が終わると、MMDでお馴染みのテキストポップアップが表示されます。
改行が崩れていますが、ちゃんと読んでから使用しましょう。

後ろでミクさんらしきモデルが表示されていますね。
テキストポップアップとPMDLoaderウインドウを閉じると、
Unity上にミクさんが現れています。

20130610_10_gray_prefab
が、喜ぶのはまだ早い。
この後、VMDファイルを読み込む時にプレファブを使いますが、
Unity 4.1.5とMMD for Unity 1.2a-r122の組み合わせでは、
プレファブが正常に出力されない様なのです。

Projectを見たら分かるのですが、プレファブのファイル自体は出来ています。
プレファブはデータ設定が済んでいないなら灰色に表示されます。
変換直後のプレファブは見事に灰色です、つまり空です。

20130610_11_vaild_prefab
と言う事でプレファブを有効化します。
Hierarchyタブに有るPMDを変換して作られたオブジェクトから、
Projectの空のプレファブにドラッグ&ドロッグします。

これでプレファブが有効化されました。
多分、この処理は単なる不具合だと思うので、
MMD for Unityが正式にUnity 4.1.xに対応したら不要に為るでしょう。

では、モーションデータを読み込みます。
冒頭のデモで使ってるモーションは何か分かりましたでしょうか。
正解はWAVEFILEでした。

20130610_12_wavefile_motion_file
ダウンロードして解凍するとreadme.txtと3つのモーションファイルが出来ます。
やっぱりまずはreadme.txtを読みましょう。

20130610_13_wavefile_motion_dad
今回使用するのはwavefile_v2.vmdだけですが、
取り敢えずフォルダ毎全てUnityにドラッグ&ドロップします。

20130610_14_vmd_loader_window
メニュー→Plugins→MMD Loader→VMD Loaderと進んで
VMDLoaderウインドウを出します。

20130610_15_pmd_set_in_vmd_loader_w
まずPMD Prefabに先程有効化させたプレファブをドラッグ&ドロップします。

20130610_16_vmd_set_in_vmd_loader_w
そして同様にVMD FileにProjectタブに在るvmdファイルをドラッグ&ドロップします。

20130610_17_vmd_set_in_vmd_loader_w
本来はこのままConvertボタンを選択すればプレファブに反映されるのですが、
Unity 4.1.x絡みなのか上手く反映されません。
手動で対応する為にCreate Assetにチェックを付けてConvertを選択します。

2013年6月15日 1時30分 追記 ココカラ
Create Assetがオフの時の挙動を勘違いしていました。
オフの時の挙動とアニメーションの反映方法を記事末で補足しています。
追記 ココマデ

20130610_18_animation_file
するとプレファブが在るディレクトリに
Animationと言う名のディレクトリが作られており、
中にUnity用のAnimationファイルが出来ています。

まだVMDファイルの変換が終わっただけです。
今再生させても踊ってくれません。

では、モデルにアニメーションを反映させます。

20130610_19_apply_animation
Hierarchyタブに在る初音ミクさんを選択します。
するとInspectorタブに付加されているコンポーネント情報が表示されるので、
AnimationコンポーネントのAnimation欄にドラッグ&ドロップします。
最後にInspectorタブ上部に在るPrefabのApplyボタンを選択します。

Applyボタンは選択しなくてもアニメーションの反映は出来るので、
Applyボタンの効果が分かっている方は適時対応して下さい。
今は1体だけしか扱っていないので常に選択していても問題無いです。

20130610_20_play
これでアニメーションの反映は出来ました。
後は再生ボタンを選択すれば踊ってくれます。
初期位置だとカメラが足しか映さないので、
適当に移動させた後、再生ボタンを選択してみて下さい。

20130610_21_dance
右の図ではカメラを{"x":0, "y":10, "z":-20}に移動させました。

鑑賞中…。

冒頭で見せた物とは受ける印象が違いますね。
妙に“硬い”様な気がするかもしれません。
とは言え、今回はひとまず踊ってくれる様に為りました。

えらい長く為ってしまったので今回は此処迄としましょう。
今回の要点はUnity 4.1.5とMMD for Unity 1.2a-r122の組み合わせでの、
プレファブ化が上手くいかない点とアニメーションがプレファブに反映されない点の回避方法ですね。

お疲れ様でした、その2でまたお会いしましょう。

2013年6月15日 1時30分 追記 ココカラ
Unity 4.1.x絡みなのか上手く反映されませんと記述していましたが、間違っていました。
Unity 4.1.5とMMD for Unity 1.2a-r122の組み合わせ、
かつCreate Assetがオフでもアニメーションファイルは正常に作成されました。
此処にCreate Assetがオフ時の場合を説明します。

20130610_23_disable_create_asset_in
Create Assetにチェックを付けないでConvertを選択します。

20130610_24_prefab_property_icon
するとプレファブが在るディレクトリに
Animationと言う名のディレクトリは出来ません。
何処に出来たかと言うと、プレファブの中です。
プレファブの右側にある▶を選択します。

20130610_25_anim_in_prefab
するとプレファブに格納されているデータが表示されます。
この中にAnimationファイルが出来ています。

20130610_26_apply_animation
プレファブの中であろうと、
アニメーションの反映方法は変わりませんのでドラッグ&ドロップで出来ます。

プレファブは“Hierarchyの設定を含めたオブジェクト”の保存にしか使ってなかったので、
単なるアーカイバとしての機能をすっかり忘れていました。
いやはや、お恥ずかしい限りです。

続きのその2です。
追記 ココマデ



トラックバック

このページのトラックバックURL:
http://app.blog.eonet.jp/t/trackback/351525/31621001

MMD for Unityでミクさんのツインテールを物理演算させるお話 その1を参照しているブログ:

コメント

コメントを投稿