VR Infinite Gestureとは
VR Infinite GestureはViveコントローラやOculus Toucの動きを記録して、それに類似した動きをしたかどうかを判定するアセットです。このアセットの凄いところは動きの記録(モーション)、編集、テストをUnity Editor上で実行したVRプレビュー内で完結させることが出来る点です。
セットアップ
基本的に公式サイトのTUTORIALS/GETTING STARTEDに従ってください。ここではViveを例に説明します。
使用しているUnityのバージョンはUnity5.4.0f1です(5.3.xでも問題ないと思います)。
0. 新規プロジェクトの作成とSteamVR Pluginのインストール
Unityを起動して新規プロジェクトを作成してください。
次に<a href=”https://www.assetstore.unity3d.com/?asac=kFuaC5yal6#!/content/32647″>SteamVR Plugin</a>をインポートします。SteamVR Pluginをインポートすると特にこだわりが無ければ「Accept All」ボタンを押してください。「You made the right choice!(あなたは正しい選択をしました!)」とダイアログが表示されるのでOKボタンを押しましょう。これでViveアプリのための初期設定は完了です(VRモードも自動的に設定されます)。
1. SETUP VR
[Edit]-[Project Settings]-[Player]を実行し、Other SettingsのScripting Define Symboles「EDWON_VR_STEAM」と入力してENTERキーを押します。ENTERキーを押さないと入力が確定しないので注意しましょう。
2. アセットストアから VR GESTUREをインポートする
アセットストアからVR Infinite Gestureをインポートしてください。
3. “GETTING STARTED”シーンを開く
Edwon/AR/Gesture/Examples/Getting Startedシーンファイルを開きます。
4. VRのためのシーン設定
SteamVR/Prefabs/[CameraRig]プレハブをSceneに追加します。
次にSceneに追加した[CameraRig]プレハブのトップを選択してVRGestureRigコンポーネントを追加してください。インスペクタのAdd Componentボタンからでも良いですし、[Component]-[Scripts]-[Edwon.VR]-[VR Gesture Rig]メニューから追加しても良いです。
VRGestureRigコンポーネントを追加したら、VRGestureRigコンポーネントの中にある「Auto Setup」ボタンを押すと自動的に初期設定が終わります。もし、反応が無い、上手く設定されないという場合は「1. VR SETUP」の設定が出来ていないので再度確認してください。
5. 新規NEURAL NETWORKの作成
Sceneの中にあるVR Gesture Managerを選択し、InspectorのVR Gesture Managerコンポーネント内の「Neural Network」タブを選択し、タブの中にある「NEURAL NETWORK」の「+」ボタンを押してください。NEURAL NETWORKとはこのパッケージ内の独自用語のようです。明確な説明が見当たりませんが、ジェスチャーをまとめて管理する単位だと思います(NEURAL NETWORKの中に複数のジェスチャを登録できます。NEURAL NETWORKも複数使用することが出来ます。NEURAL NETWORKは実行中に切り替えることも出来ます。それぞれのNEURAL NETWORKを混ぜて使用することはできません)。
「+」ボタンを押すと名前の入力欄が出現するので作成予定のモーション名を入力して「Create Network」ボタンを押します。ここでは「Test Net 1」としました。
この操作によりProject内の Edwon/VR/Gesture/Data/の下に”Test Net 1″フォルダが生成されます。ここにジェスチャデータが保存されます。
6. NEURAL NETWORKにジェスチャを追加
VR Gesuter ManagerコンポーネントのNEURAL NETWORKタブのNEURAL NETWORKの「Test Net 1」を選択してください(まだ1つしかないので選択済みになっているはずです)。
6.1 Lineジェスチャの生成
RECORDED GESTURESの下にある「+」ボタンを押し、”Gesture 1″を”Line”に変更します。
6.2 Rainbowジェスチャの生成
最初に追加したLineジェスチャの右にある「+」ボタンを押し、”Gesture 2″を”Rainbow”に変更します。
この操作によりEdwon/VR/Gesture/Data/Test Net 1/Gesturesフォルダの下に空の”Line”と”Rainbow”の二つのテキストファイル(.txt)が生成されます。これらのファイルにジェスチャを記録します。
7. VRに入る
Unityのプレイボタン(Ctrl + P)を押して実行してください。そしてViveのHMDを被ってViveコントローラを手に持ってください。
8. ジェスチャの記録モードにする
左手にNeural Networkの一覧が見えます。右手のコントローラはポインタになっていますので、上手くポインタを動かして”Test Net 1″を選択して右手のコントロールのトリガーを引いてください。
次にRecode(ジェスチャの記録)を選択して右手のコントロールのトリガーを引いてください。
“Line”を選択して右手のコントロールのトリガーを引いてください。
これで”Line”ジェスチャの記録モードになりました。
9. “Line”ジェスチャを記録する
Neural Networkは多数の振る舞いから”training(トレーニング)”したり、データを”classify(分類)”したりすることができます。Neural Networkに多くの例を登録することで形状認識をより良くすることができます。
9.1 “Line”ジェスチャの例を20個記録する
ジェスチャの記録は右手でトリガーを引いたら開始、トリガーから指を離したら停止となります。これを何度も実行して記録します。多少ずれても構いません(後で削除することもできます)。なお”Line”ジェスチャは肘を曲げて体にピタッとつけて、直線的に突き出す感じの動作をイメージをしています。
10. “Rainbow”ジェスチャを記録する
Neural networkは1つのジェスチャだけを検出すという事は出来ません。必ず2種類以上のジェスチャを検出出来るようにしなければなりません。
10.1 “Rainbow”ジェスチャの例を20個記録する
“Line”と同じように”Rainbow”の記録モードにして、”Rainbow”のジェスチャを20個登録してください。なお”Rainbow”ジェスチャは半円を描くような動作をイメージしています。
11. ジェスチャの例を編集する
VR内において、mainメニューまで戻り、”Edit”ボタンを選択して”Line”や”Rainbow”を選択します。すると”Line”や”Rainbow”で記録したジェスチャの一覧が表示されます(画像は公式のgifアニメーションより)。
もし不要な動作があったら、右手のコントローラで選択してトリガーを引くと削除することができます(画像は公式のgifアニメーションより)。
12. Neural networkによる処理(Process)
VR内において、mainメニューまで戻り、”Process”ボタンを選択してください。この時、VRは2秒ほど停止しますが気にしないでください。これで新しい生命体(brain)が完成しました。ジェスチャの数により処理時間は長くなりますので注意してください。
13. 生命体(Brain)の確認
生命体(Brain)ファイルは、Edwon/VR/Gesture/Data/Test Net 1フォルダの下に”Test Net 1″と言う名前のファイルとして保存されています。
14. ジェスチャの検出(Detect)
VR内において、mainメニューまで戻り、”Detect”ボタンを押してください。右手のViveコントロールのトリガーを引いて、”Line”または”Rainbow”のジェスチャを行い、トリガーから指を離すとジェスチャの認識が行われます。うまく認識されれば「DETECTED(緑色)」と表示され、認識できなければ「REJECTED(赤色)」と表示されます(画像は公式のgifアニメーションより)。
これで完成です。
あとはサンプルの動かし方、ビルドの方法、スクリプトからの利用などは公式ドキュメントをご覧ください(リクエストがあったら書くかも)。