人気モデルを自分の手でくすぐってみる

 最近、VR空間でミクさんと添い寝できるアプリがダウンロードできるようになりました。
 使用するには Oculus Rift という3万円程度のVRヘッドセットが必要なのですが、実際に女の子が添い寝してくれるお店などでかかる費用と比べて高いのか安いのか、意見の分かれる所かと思います。
 最近ではこれ以外にも、VR映画の主要登場人物の名を持つVRヘッドセットがソニーから発表されたり、Oculus VR が Rift の開発キットの新バージョンを発表した直後に Facebook に買収される事が決まったりと、VR業界では短期間の間に様々な事象が起こっており、かつてない盛り上がりを見せています。
 当サイトでも先日動画の人気モデルをくすぐってみるで、VR空間に召喚したモデルさんをくすぐる方法を紹介しました。
 ただし、実際にモデルさんをくすぐるのは自分の手ではなく、VR空間にあるくすぐりマシーンでした。
 目の前で女の子がくすぐりマシーンでくすぐられているのを見れば、やはり自分の手でもくすぐってみたくなるのが普通の人の感覚なのではないかと思います。
 実は、今回それが可能になったのです。
 ただし、その為には Oculus Rift の他にも機材が必要です。
 その機材とは「Leap Motion」という物です。
 Leap Motion Controller と呼ばれる場合もあるようですが、通販サイト等を見る限り、日本での商品名としては、Controllerを省略した形が正式のようです。
 日本語に直訳すると「跳躍運動」となります。
 皆さんの中には「跳躍運動が、くすぐりと関係あるんかい?」と思われる方もいらっしゃるでしょう。
 実はこの装置、人間の指の動きを読み取ってPCに入力する事ができるのです。
 似たようなシステムの例としてMicrosoftのKinectoというものがありますが、Kinectが体全体の動きを取り込むのに対し、Leap Motion は指の動きの読み取りに特化しています。そして Leap Motion の発表当時、Kinectでは指の動きを読み取る事はできませんでした。
 指の動きを読むという事は、高い読み取り精度が要求されるわけで、その読み取り精度の高さから「それまでの物からLeapしたMotion Controller」すなわち Leap Motion Controller なのです。
 つまり、跳躍しているのはMotionではなく、省略されたControllerなのです。
 ネットでは、これを使ってPC画面の前でアンダートンする動画がいくつか「少数報告」されているようですが、ここでは Oculus Rift によるVR空間に召喚したモデルさんをLeap Motionにより自分の手でくすぐる方法について説明したいと思います。

 まず、必要な機材は以下のとおりです。
・DirectX11対応Windows PC
・Oculus Rift (DK1)
・Leap Motion

 次に、この目的の為に今回当サイトで作成したプログラムは、以下のリンクからダウンロードできます。

MikuMikuTickleV00 ダウンロード

 動作確認は、NVIDIAのグラボを搭載したWindows PC でのみ行っています。
 他の環境では、もしかしたら動かなかったり、あるいは動かすために以下の操作手順の一部又はプログラムの一部を変更する必要があるかもしれません。

 前回までは「何とかtest」といういかにもいい加減な名前でしたが、今回は少し分かりやすい名前にしてみました。
 前回までと同様に、実行形式は含まれておりませんので、動作させる為には以下の開発環境及びライブラリが必要です。
 なお、入手するのに費用はかかりません。
・Microsoft Visual Studio Express 2012 for Windows Desktop
(http://www.microsoft.com/ja-jp/dev/express/ よりインストール)
・OculusSDK
(https://developer.oculusvr.com/ よりダウンロード)
・Leap Motion Developer SDK
(https://developer.leapmotion.com/downloads よりダウンロード)
・DirectXTex
(http://directxtex.codeplex.com/ よりダウンロード)

 上記の一番下は、テクスチャ画像読み込みに必要なライブラリです。
 前回までは、DirectXTKという物を使っていましたが、読み込める画像形式の種類を増やすために今回は別な物を使いました。

 召喚するモデルは以下のソフトに同梱されていますので、こちらも入手しておいた方がよいでしょう。
・MikuMikuDance
(http://www.geocities.jp/higuchuu4/index.htm よりダウンロード)

 以下にMikuMikuTickleV00を動作させるための手順を説明します。
 なお、この説明ではOculusSDK、Leap Motion Developer SDK、DirectXTexのフォルダがいずれもCドライブの直下にある事を仮定しています。
1、DirectXTex をビルドする。
 VisualStudioExpress2012を立ち上げ、ファイルメニュー→プロジェクトを開く で、DirectXTexのフォルダの中にあるC:\DirectXTexフォルダの中のDirectXTex_Desktop_2012.slnを開き、ビルドメニュー→ソリューションのビルド を選択します。
 成功すると、そのフォルダの中のBinの中のDesktop_2012の中のWin32の中にDebugというフォルダが出来、その中にDirectXTex.libというファイルが出来ます。
 確認できたら、VisualStudioのファイルメニュー→ソリューションを閉じる を選択します。
2、MikuMikuTickleV00プロジェクトの作成
 VisualStudioのファイルメニュー→新しいプロジェクト を選択します。
 テンプレートからVisual C++ を選択し、Win32プロジェクトを選択して、名前欄にプロジェクト名(例えばMikuMikuTickleV00)を入力し、「ソルーションのディレクトリを作成」にチェックが入っている事を確認し、OKボタン→次へボタン→追加のオプションの「空のプロジェクト」をチェック→完了ボタン の順に押します。
3、ソースの準備
 MikuMikuTickleV00のダウンロード圧縮ファイル(mmtk_v00.zip)に含まれている、readme.txt 以外の全ファイルを、プロジェクトフォルダ(MikuMikuTickleV00.sln)の存在するフォルダの中にある、MikuMikuTickleV00というフォルダにコピーします。
4、インクルードディレクトリの設定
 VisualStudioの画面の右の方にあるソリューションエクスプローラという枠の中の、一番上に表示されているプロジェクト名(MikuMikuTickleV00)をクリックして選択状態にし、プロジェクトメニュー→プロパティでプロジェクトのプロパティを表示させます。
 「構成プロパティ」の中の「C/C++」をクリックし、プロパティページの右側の枠の「追加のインクルードディレクトリ」をクリックする。枠の右端に現れる下向きの矢印のようなマークをクリックし、「編集」を選択して表示されるダイアログボックスの上の枠に C:\LeapDeveloperKit\LeapSDK\include と入力し、次の行にC:\OculusSDK\LibOVR\Include と入力し、更に次の行に C:\DirectXTex\DirectXTex と入力し、OKをクリック。
5、ライブラリディレクトリの設定
 「構成プロパティ」の中の「リンカー」をクリックし、プロパティページの右側の枠の「追加のライブラリディレクトリ」をクリックする。枠の右端に現れる下向きの矢印のようなマークをクリックし、「編集」を選択して表示されるダイアログボックスの上の枠に C:\LeapDeveloperKit\LeapSDK\lib\x86 と入力し、次の行に C:\OculusSDK\LibOVR\Lib\Win32 と入力し、更に次の行に C:\DirectXTex\DirectXTex\Bin\Desktop_2012\Win32\Debug と入力し、OKをクリック。
 その後、プロパティページのOKボタンをクリックします。
6、ソースをプロジェクトに追加
 プロジェクトディレクトリに置いたMikuMikuTickleV00のファイルのうち、以下のファイルを プロジェクトメニュー→既存項目の追加 でプロジェクトに追加します。
 LMCHand.cpp
 LMCHand.h
 MikuMikuTickle.cpp
 pmd.cpp
 pmd.h
7、実行
 デバッグメニュー→デバッグなしで実行 で実行します。
 最初は「lwapd.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空間に現れます。
「オイラの手はこんな色してないよ」とか「こんなに角ばってないよ」とかいう声が聞こえてきそうですが、そこのところは大目に見てやって頂ければと思います。
 手を動かすと、VR空間の手も動きます。その手でモデルさんの脇腹や腋の下をくすぐると、モデルさんが笑ってくれたりします。くすぐるのをやめると、息を切らしたり怒ったりします。

 なお、L キーを押すと、LeapMotionが実際に認識した指先の位置が表示されます。VR空間の手の指先の位置とずれているのは、VR空間の手の寸法が実際の手の寸法と異なっており、指先の位置よりも指の向きを重視して
指の状態を認識している為です。
 ちなみに手の認識はあまり安定しているとは言えず、
 Tキーを押すと、モデルさんがくすぐったさをどのように認識しているかが表示されます。
 水色の枠で示されたエリアに指を入れると、新しい刺激として色の付いた点が現れます。その付近に指があり続けると、その刺激は新しさを失い灰色になります。指がその付近を離れて一定時間経過すると、刺激は消滅します。
 刺激の新しさの合計が一定値を超えている時、モデルさんはくすぐったさを感じます。
 モデルさんがなかなか笑ってくれない時は参考にしてみて下さい。

 前回と同様に、モデルさんの首から下は動かないのですが、今回は両手を上に上げさせて磔にしてみました。また、自分がVR空間の中で移動すると、モデルさんはそれに追従して自分の方へ顔を向けてくれます。
 その他、前回は真面目にやっていなかった陰影づけや、スフィアマップや半透明表示にも対応したので、前回に比べて目立った不具合なく表示できるモデルさんが増えたかと思いますが、まだ全てのPMDなモデルさんを正常に表示できるわけではないと思います。また、今回もPMX形式には未対応です。

 MMD同梱以外で表示確認したモデルさんの中では、個人的には以下がおすすめです。
 ぜひ皆さんのご自分の手で、笑顔にしてあげて頂きたいと思います。
・Lat式ミクVer2.31
 (http://bowlroll.net/up/dl30199 よりダウンロード)
・ままま式GUMIβ版
 (http://3xma.blog49.fc2.com/blog-entry-6.html よりダウンロード)

 それでは、よいくすぐりライフをVR空間でお楽しみ下さい。


戻る