[Vive] VR Infinite Gestureの使い方 -セットアップから新規ジェスチャの認識まで-

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モードも自動的に設定されます)。

abc

スクリーンショット 2016-07-25 20.02.49

 

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シーンファイルを開きます。

スクリーンショット 2016-07-25 20.13.56

4. VRのためのシーン設定

SteamVR/Prefabs/[CameraRig]プレハブをSceneに追加します。

abc2

次にSceneに追加した[CameraRig]プレハブのトップを選択してVRGestureRigコンポーネントを追加してください。インスペクタのAdd Componentボタンからでも良いですし、[Component]-[Scripts]-[Edwon.VR]-[VR Gesture Rig]メニューから追加しても良いです。

abc4

VRGestureRigコンポーネントを追加したら、VRGestureRigコンポーネントの中にある「Auto Setup」ボタンを押すと自動的に初期設定が終わります。もし、反応が無い、上手く設定されないという場合は「1. VR SETUP」の設定が出来ていないので再度確認してください。abc3

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を混ぜて使用することはできません)。

abc3

「+」ボタンを押すと名前の入力欄が出現するので作成予定のモーション名を入力して「Create Network」ボタンを押します。ここでは「Test Net 1」としました。

abc4

 

この操作によりProject内の Edwon/VR/Gesture/Data/の下に”Test Net 1″フォルダが生成されます。ここにジェスチャデータが保存されます。

abc3

 

6. NEURAL NETWORKにジェスチャを追加

VR Gesuter ManagerコンポーネントのNEURAL NETWORKタブのNEURAL NETWORKの「Test Net 1」を選択してください(まだ1つしかないので選択済みになっているはずです)。

abc4

6.1 Lineジェスチャの生成

RECORDED GESTURESの下にある「+」ボタンを押し、”Gesture 1″を”Line”に変更します。

abc4

 

6.2 Rainbowジェスチャの生成

最初に追加したLineジェスチャの右にある「+」ボタンを押し、”Gesture 2″を”Rainbow”に変更します。

abc4

この操作によりEdwon/VR/Gesture/Data/Test Net 1/Gesturesフォルダの下に空の”Line”と”Rainbow”の二つのテキストファイル(.txt)が生成されます。これらのファイルにジェスチャを記録します。

abc4

 

7. VRに入る

Unityのプレイボタン(Ctrl + P)を押して実行してください。そしてViveのHMDを被ってViveコントローラを手に持ってください。

8.  ジェスチャの記録モードにする

左手にNeural Networkの一覧が見えます。右手のコントローラはポインタになっていますので、上手くポインタを動かして”Test Net 1″を選択して右手のコントロールのトリガーを引いてください。

スクリーンショット 2016-07-25 21.37.39

次にRecode(ジェスチャの記録)を選択して右手のコントロールのトリガーを引いてください。

スクリーンショット 2016-07-25 21.38.35

“Line”を選択して右手のコントロールのトリガーを引いてください。

スクリーンショット 2016-07-25 21.38.47

これで”Line”ジェスチャの記録モードになりました。

スクリーンショット 2016-07-25 21.43.36

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アニメーションより)。576b56930210003c55975ac3_11 enter gallery

もし不要な動作があったら、右手のコントローラで選択してトリガーを引くと削除することができます(画像は公式のgifアニメーションより)。576b56e4e6862da634576dc7_11 delete gesture take in gallery

 

12. Neural networkによる処理(Process)

VR内において、mainメニューまで戻り、”Process”ボタンを選択してください。この時、VRは2秒ほど停止しますが気にしないでください。これで新しい生命体(brain)が完成しました。ジェスチャの数により処理時間は長くなりますので注意してください。

13. 生命体(Brain)の確認

生命体(Brain)ファイルは、Edwon/VR/Gesture/Data/Test Net 1フォルダの下に”Test Net 1″と言う名前のファイルとして保存されています。

abc4

14. ジェスチャの検出(Detect)

VR内において、mainメニューまで戻り、”Detect”ボタンを押してください。右手のViveコントロールのトリガーを引いて、”Line”または”Rainbow”のジェスチャを行い、トリガーから指を離すとジェスチャの認識が行われます。うまく認識されれば「DETECTED(緑色)」と表示され、認識できなければ「REJECTED(赤色)」と表示されます(画像は公式のgifアニメーションより)。

576b58031fb3f979555071c4_14 detect line

これで完成です。

 

あとはサンプルの動かし方、ビルドの方法、スクリプトからの利用などは公式ドキュメントをご覧ください(リクエストがあったら書くかも)。

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です