Windows8.1でモデルさんをくすぐるには

 2014年もあと少しで終わろうとしている今日このごろ、今年になってから開発を進めております「VR空間にMMDモデルを召喚してくすぐる事ができるOculusRift用VR体験ツール」MikuMikuTickleの開発及び動作環境として使用していた私のPCのWindowsを8.0から8.1に更新した所、前回までに説明した方法ではMikuMikuTickleを正常に起動できなくなりました。
 プログラム起動後、召喚するモデルさんのファイルを選んだ直後、表示用のウィンドウが生成されてから一瞬で消えてしまいます。
 多分、これをご覧の皆様の中にも、同様の現象に遭遇された方がいらっしゃるのではないかと思います。
 クリスマスを嫁と過ごす為にも、ここはぜひとも何とかしたい所です。

 原因を調べてみた所、これまで説明してきたビルド方法がデバッグ向けビルドである事と、Win8.1にはDirectX11のデバッグ用ランタイムが標準では含まれていない事などによるもののようです。
 Windows8.1用のSDKを入れるか、あるいはVS2013をインストールすれば解決できるようなのですが、一番てっとり早いのはビルド方法をデバッグ用からリリース用に変更する事だと思うので、ここではMikuMikuTickleV03をリリース用にビルドする方法を説明します。
 なお、この解説は、既に前回までの方法でデバッグビルドを実施済である事を前提としております。

 まずは準備として、DirectXTexをリリース用にビルドする必要があります。
 VisualStudioExpress2012を立ち上げ、ファイルメニュー→プロジェクトを開く で、DirectXTexのフォルダの中にあるC:\DirectXTexフォルダの中のDirectXTex_Desktop_2012.slnを開いた後、メニューバーのすぐ下のツールバーの真ん中あたりにある「Debug」と表示されているリストボックスをクリックし、出てくる項目の中から「Release」を選択します。
 その後、ビルドメニュー→ソリューションのビルド を選択します。
 ビルドが正常に終了したら、ファイルメニュー→ソリューションを閉じる でプロジェクトを閉じます。

 次にBulletもリリース用にビルドします。
 Bulletが前回までの解説のとおりにインストールされている場合、C:\bullet-2.82-r2704\build\vs2010_dx11の下に0BulletSolution.slnというファイルがあるはずですので、これを ファイルメニュー→プロジェクトを開く で開きます。
 その後、メニューバーのすぐ下のツールバーの真ん中あたりにある「Debug」と表示されているリストボックスをクリックし、出てくる項目の中から「Release」を選択します。
 ソリューションエクスプローラーに表示されるプロジェクト名の一番上をクリックし、一番下をSHIFTキーを押しながらクリックすると、全てのプロジェクトが選択できますので、その状態で プロジェクトメニュー→プロパティを選択し、出てくるウィンドウの「構成プロパティ」の中の「C/C++」の中の「コード生成」をクリックし、ウィンドウの右側にある「ランタイムライブラリ」を/MTから/MDに変更してOKボタンをクリックします。
 その後、「ビルド」メニュー→「ソリューションのビルド」を行います。
 ビルドが正常に終了したら、ファイルメニュー→ソリューションを閉じる を選択します。

 次に、ファイル→プロジェクトを開く で、MikuMikuTickleV03のプロジェクトを開き、メニューバーのすぐ下のツールバーの真ん中あたりにある「Debug」と表示されているリストボックスをクリックし、出てくる項目の中から「Release」を選択します。
 そして、前回までに説明した方法で、インクルードディレクトリの設定とライブラリディレクトリの設定を再度実施します。
「追加のインクルードディレクトリ」に設定する内容は前と変わりませんが、「追加のライブラリディレクトリ」に設定する内容は、以下のようになります(上から3行目だけが前回までの設定と異なります)。

C:\LeapDeveloperKit\LeapSDK\lib\x86
C:\OculusSDK\LibOVR\Lib\Win32
C:\DirectXTex\DirectXTex\Bin\Desktop_2012\Win32\Release
C:\bullet-2.82-r2704\lib
 設定が終わったら、ソリューションエクスプローラーの「MikuMikuTickleV03」をダブルクリックし、「ソースファイル」をダブルクリックし、MikuMikuTickle.cppをクリックします。
中身が表示されたら、32〜35行目の
// Bullet
#pragma comment(lib,"BulletDynamics_vs2010_debug.lib")
#pragma comment(lib,"BulletCollision_vs2010_debug.lib")
#pragma comment(lib,"LinearMath_vs2010_debug.lib")
の部分を
// Bullet
#if defined( DEBUG ) || defined( _DEBUG )
#pragma comment(lib,"BulletDynamics_vs2010_debug.lib")
#pragma comment(lib,"BulletCollision_vs2010_debug.lib")
#pragma comment(lib,"LinearMath_vs2010_debug.lib")
#else
#pragma comment(lib,"BulletDynamics_vs2010.lib")
#pragma comment(lib,"BulletCollision_vs2010.lib")
#pragma comment(lib,"LinearMath_vs2010.lib")
#endif
に書き換え、ファイル→MikuMikuTickle.cppの保存 で保存し、デバッグメニュー→デバッグなしで開始 で実行します。
「leap.dllがない」等のエラーが出た場合は、
C:\LeapDeveloperKit\LeapSDK\lib\x86 から以下のファイルを実行形式と同じフォルダにコピーします。
Leap.dll
msvcp100.dll
msvcr100.dll

 いかがでしょう。うまく動きましたでしょうか。
 それでは、良いクリスマスをお過ごし下さい。


戻る