モデルさんをくすぐるついでに
スカートをめくってみる

 前回今時の人気モデルをくすぐってみるで、最近生まれたモデルさんを含む、ネット動画で活躍中の様々なモデルさんを、VR空間に転送した自分の手でくすぐる方法を紹介したわけですが、実際に試された方なら既にお分かりのとおり、まだいくつか問題が残っていました。
 その中で一番の問題は、髪の毛の動きだと思います。
 頭が動いた時に、ミクさんの長いツインテールやネルさんの長いポニーテールが重力の存在を完全無視した動きをするのは、明らかに不自然というものです。
 この不自然さを解消する為、今回はBulletという物理演算ライブラリを導入する事により、VR空間に自然法則を与えてみました。

 なお、前回と同様に、以下の内容を実際に実行するには以下の機材が必要です。

・DirectX11対応Windows PC
・Oculus Rift (DK1)
・Leap Motion

 Oculus Rift DK1 は現在出荷が終了しており、改良版となるDK2の出荷は早くとも2014年7月となる見込みです。
 今回紹介するソフトがDK2で使えるかどうかは分かりません。また、ミニメロンがDK2を購入するかどうかは検討中です。

 Bulletとは、英語で「弾丸」という意味です。名前だけ見ると、かなり物騒な物のように思えてしまいます。
 もしかしたら、もともと弾丸の飛び方とか、弾丸が当たった場合の物の壊れ方などを調べるために開発されたのかもしれませんが、Wikipediaによる解説を見れば分かるとおり、少なくとも日本では3DCGで描かれた萌えキャラを動かすために採用するのが一般的なようです。
 そして、MMDのモデルさんの持っている物理演算データはBulletを前提に作られています。

 Bulletは、http://bulletphysics.org/wordpress/ からダウンロードする事ができます。
 左上隅のDownloadというリンクからダンロードページに移動し、bullet-2.82-r2704.zip をダウンロードします。
 ダウンロードしたZIPファイルに含まれる bullet-2.82-r2704 というフォルダをCドライブの直下に置きます。
 C:\bullet-2.82-r2704\build の中に、vs2010_dx11.bat というファイルがあるので、それをダブルクリックします。
 すると、上記フォルダの中にvs2010_dx11というフォルダができますので、その中にある0BulletSolution.slnというファイルをVisualStudio2012の「ファイル」メニュー→「プロジェクトを開く」で開きます。
 VS2012用に変換するか聞いてきたら、「はい」と答えます。
 変換が完了すると、ウィンドウの右側にあるソリューションエクスプローラーに、App_BasicDemo、App_Box2DDemoなどのプロジェクト名がいくつも並びます。そのすべてについて、以下の操作を行います。

プロジェクト名を右クリック→
「プロパティ」を選択→
「構成プロパティ」の中の「C/C++」の中の「コード生成」をクリック→
ウィンドウの右側にある「ランタイムライブラリ」を/MTdから/MDdに変更→
OKボタンをクリック。
 上記を全てのプロジェクトについて行ったら、「ビルド」メニュー→「ソリューションのビルド」を行います。
 ビルドが完了すると、C:\bullet-2.82-r2704 の中にApp_〜,exeという名前のデモ用実行ファイルがいくつも出来上がりますので、試しに一番上の、App_BasicDemo_vs2010_debug.exe をダブルクリックしてみましょう。
 ブロックの塊が地面に落下して散らばるデモが表示されれば、とりあえずBulletが使用できるようになったという事です。

 Bullet以外に必要なツールやライブラリは以下のとおりですが、これらは前回までに既に導入済かと思います。
 もし導入済みでないなら、前回までの説明に従って導入しましょう。

・Microsoft Visual Studio Express 2012 for Windows Desktop
・OculusSDK
・Leap Motion Developer SDK
・DirectXTex
 次に、MMDのモデルさんをVR空間に召喚してくすぐる為のプログラム本体の今回のバージョンは、以下のリンクからダウンロードできます。
MikuMikuTickleV02 ダウンロード

 前回までと同様に、ソースコードでの配布となっておりますので、実行するにはビルド作業が必要です。
 そのかわり、MMDのモデルさんたちを別な目的で表示するソフトを自主開発したいという方にとって、参考資料の一つぐらいにはなるのではないかと思います。

 実行する為の手順は、以下のようになります。
1、MikuMikuTickleV02プロジェクトの作成
 VisualStudioのファイルメニュー→新しいプロジェクト を選択します。
 テンプレートからVisual C++ を選択し、Win32プロジェクトを選択して、名前欄にプロジェクト名(例えばMikuMikuTickleV02)を入力し、「ソルーションのディレクトリを作成」にチェックが入っている事を確認し、OKボタン→次へボタン→追加のオプションの「空のプロジェクト」をチェック→完了ボタン の順に押します。
3、ソースの準備
 MikuMikuTickleV02のダウンロード圧縮ファイル(mmt_v02.zip)に含まれている、readme.txt 以外の全ファイルを、プロジェクトフォルダ(MikuMikuTickleV02.sln)の存在するフォルダの中にある、MikuMikuTickleV02というフォルダにコピーします。
4、インクルードディレクトリの設定
 VisualStudioの画面の右の方にあるソリューションエクスプローラという枠の中の、一番上に表示されているプロジェクト名(MikuMikuTickleV02)をクリックして選択状態にし、プロジェクトメニュー→プロパティでプロジェクトのプロパティを表示させます。
 「構成プロパティ」の中の「C/C++」をクリックし、プロパティページの右側の枠の「追加のインクルードディレクトリ」をクリックします。枠の右端に現れる下向きの矢印のようなマークをクリックし、「編集」を選択して表示されるダイアログボックスの上の枠に、以下の4行の内容を入力します。

C:\LeapDeveloperKit\LeapSDK\include
C:\OculusSDK\LibOVR\Include
C:\DirectXTex\DirectXTex
C:\bullet-2.82-r2704\src
 入力が終わったら、OKをクリックします。
5、ライブラリディレクトリの設定
 「構成プロパティ」の中の「リンカー」をクリックし、プロパティページの右側の枠の「追加のライブラリディレクトリ」をクリックする。枠の右端に現れる下向きの矢印のようなマークをクリックし、「編集」を選択して表示されるダイアログボックスの上の枠に以下の4行の内容を入力します。
C:\LeapDeveloperKit\LeapSDK\lib\x86
C:\OculusSDK\LibOVR\Lib\Win32
C:\DirectXTex\DirectXTex\Bin\Desktop_2012\Win32\Debug
C:\bullet-2.82-r2704\lib
 入力が終わったら、OKをクリックします。
 その後、プロパティページのOKボタンをクリックします。
6、ソースをプロジェクトに追加
 プロジェクトディレクトリに置いたMikuMikuTickleV02のファイルのうち、以下のファイルを プロジェクトメニュー→既存項目の追加 でプロジェクトに追加します。
LMCHand.cpp
LMCHand.h
MikuMikuTickle.cpp
pmd.cpp
pmd.h
PMDXBullet.cpp
PMDXBullet.h
PMDXWork.cpp
PMDXWork.h
pmx.cpp
pmx.h
7、実行
 デバッグメニュー→デバッグなしで実行 で実行します。
 最初は「leapd.dllがない」等のエラーが出ますので、その場合は C:\LeapDeveloperKit\LeapSDK\lib\x86 から以下のファイルを実行形式と同じフォルダにコピーします。
Leapd.dll
msvcp100d.dll
msvcr100d.dll
 コピーが終わったら、再度、デバッグメニュー→デバッグなしで実行 で実行します。
 ファイル選択ダイアログボックスが出てくるので、Oculus Rift の電源を入れ、Leap Motion をPCに接続した後で、召喚したいモデルさんを選択します。

 操作方法は前回と同様ですが、念のため再度説明しますと、スペースキーでくすぐりマシーンの起動・停止、W・S・D・Aキーで視点を前後左右に移動、5・6キーで上下に移動、Rで向きのリセット、Pで場所のリセットです。
 Leap Motion の上に手をかざすと、その手がVR空間に現れます(形や色は実物とだいぶ違いますが)。
 Lキー、Tキーで、LeapMotionによる指の認識状況と、くすぐりの認識状況の表示・非表示切り替えができます。

 今回は前回に比べて、髪の動きの不自然さが減少した他、LeapMotionにより前髪などに手で触ったりする事ができます。
 そして表題のとおり、スカートをはいたモデルさんであれば、スカートをめくってみたりする事もできますし、モデルさんによっては胸に触ると膨らみが揺れたりします。
 その一方で、前回までCPUで行っていたスキニング処理を、今回GPUに移行した関係で、ボーン数が1024を超えるモデルさんを召喚する事ができなくなっています。まあ、そのようなモデルさんは滅多にいらっしゃらないと思いますが。

 というわけで、Oculus RiftとLeap Motionをお持ちのWindows8ユーザーの方は、ぜひ試してみて下さい。


戻る