HoloLens の視線カーソル(Gaze)とAirTap(Gesture)を使ってみます。
HoloLensの選択処理は現状これしかないので、なんらかのアプリを作る上では必須の機能となるでしょう。
プロジェクト全体はこちらにあります。
視線カーソルの種類
今回はHoloToolkitを使用します。HoloToolkitの視線カーソルにはいくつかあり、通常のカーソルや手の検出を見せるカーソルなどがあります。アプリによって使い分ければよいでしょう。
通常のカーソル
手の検出を示すカーソル
視線カーソル(Gaze)とAirTap(Gesture)の追加
HoloToolkitを追加します。導入方法についてはこちら。
オブジェクトの配置
Hierarchyビューにあるものを削除して、UtilityのMain Camera Prefab、InputにあるCursor Prefab(通常のカーソル)、Cubeを二つ配置します。GestureManagerについては後述します。
Cubeはこのように配置します。
Transformの値はこんな感じで。もう片方はPositionのXが0.3になってます。
GestureManager
GestureManagerは空のGameObjectを追加し、InputのScriptsにある「GazeManager」、「GestureManager」、「HandsManager」を追加しています。
カーソルの使い分けで「HandsManager」を入れていますが、Cursor Prefabであれば「GazeManager」と「GestureManager」だけで動作します。
以上で視線カーソルとジェスチャーの実装は完了です。この状態で実行すると、Cubeに当たるとドーナツ型になるカーソルができあがります。
クリックされた時の処理を実装する
クリックを検出したら、そのときの視線の先にあるGameObjectに対して「OnSelect」メッセージが発行されます。GameObjectにOnSelectメソッドが実装されているスクリプトを貼り付けます。
例えば今回はAirTapごとに色を変える実装の「CubeCommand」をCubeに貼り付けています。
スクリプトの実装は次の通りです。
gist6ef1b1e5fbd40407c8cb9e7683e1a7bb
これでAirTapごとに色が変わるようになります。
カーソルを「CursorWithFeedback」に変更すると、手を検出するとモデルが変わるカーソルになります。