HoloLensとImmersiveHMDのイベントは共通(全てではない)
Mixed Reality Toolkit - Unity(以下MRTK)ではイベントはInputManagerで提供されています。この機能はHoloLensとImmersiveHMD両方で利用できます。また発生するイベントの種類もほぼ同じになります。それぞれの違いは過去整理していますので以下の記事も参考にしてください。
- HoloLensで始めるMixed Reality Toolkit - Unity ~HoloLensで有効なイベントの種類について
- WinMRで始めるMixed Reality Toolkit - Unity ~モーションコントローラ操作で発生するイベントについて
今回はこの中でもNavigationについてのデバイスの違いを紹介します。
NavigationはHoloLensとImmersiveHMDで考え方が違うので注意が必要です。
Navigationとは
いわゆるNavigation Gestureのことです。例えば、スマフォでのスワイプでページ遷移があります。特定のアクションでアプリケーションの操作を行うものです。
MRTKでもこのために使用できるINavigationHandlerインタフェースが提供されています。このイベントは操作に対して-1~1の範囲でジェスチャー操作を正規化してくれるので、この情報を用いてページ遷移等を行うことができます。
HoloLensとImmersiveHMDでのNavigation
Navigationに関する操作方法はHoloLensとImmersiveHMDで異なります。
まず、Navigation操作に移行する操作は以下の通りです。
g | HoloLens | ImmersiveHMD |
---|---|---|
Navigationの開始 | Tap & Hold | Selectボタンを押下 |
Navigationの更新 | Hold状態で手を動かす(xyz軸) | Selectボタンを押下したままモーションコントローラを動かさずに上下左右(XY軸)方向に向ける。 |
Navigationの終了 | Holdの解除 | Selectボタンを離す |
HoloLensの場合、手の移動そのものなので実質IManipulationHandlerイベントの正規化された情報になります。つまり左にある程度動かせば-1,右であれば1といった感じです。
一方、ImmersiveHMDは明らかに違います。モーションコントローラの場合はモーションコントローラを左に向けると-1,右に向けると1となります。なお、z軸は常に0になります。モーションコントローラを移動して同じ位置にカーソル移動したとしても正しい値を取得できないので注意してください。