あさちゅんのゲームブログ

UnityやSiv3Dに関するゲーム開発メモを残していきます

GoogleVRのGazeInputModuleを扱う

今回はお手軽VRの代表格Google Cardboardや、この秋発売が予定されているDaydreamのアプリをUnityで作れるGoogle VR SDK for UnityのGazeInputModuleについて扱おうと思います。

GazeInputModuleとは?

GazeInputModuleを使用すると視線の情報やトリガーの入力が取得できるようになります。

追加方法ですが、GoogleVR SDKがインポートされているなら、Add Component > GoogleVR > GazeInputModule に入っているはずです。Event Systemがない時は勝手に追加されます(uGUIのStandardInputModuleのGoogleVR版です)。

また、MainCameraにPhysics Raycasterをアタッチする必要もあるので、忘れずにつけておいてください。

IGvrGazePointerの使い方

GoogleVRに入っているIGvrGazePointerインターフェースを実装すると、今「何」が視界に入ったかや、トリガーの入力情報が取れるようになります。

どのGameObjectにアタッチしても構いませんが、GazeInputModuleのgazePointerに自身を代入する必要があります。

各メソッドの概要はこんな感じです。

OnGazeEnabled

GazeInputModuleが有効になった時に呼ばれます。

OnGazeDisabled

EventSystemが無効になった時に呼ばれます。

OnGazeStart

視線にColliderを持ったGameObjectが入った時に一回だけ呼ばれます。

引数targetObjectでそのGameObjectを取得出来ます。

OnGazeStay

視線にColliderを持ったGameObjectが入っている間ずっと呼ばれます。

OnGazeExit

GameObjectが視線から外れると呼ばれます。

引数cameraでCameraの情報が取得できるはずですが、なぜかnullしか返って来ません。

OnGazeTriggerStart

トリガーが押された瞬間に一度だけ呼ばれます。

エディタ上では左クリックを押した時に相当します。

OnGazeTriggerEnd

トリガーを離した瞬間に一度だけ呼ばれます。

エディタ上では左クリックを離した時に相当します。

GetPointerRadius

引数innerRadiusと引数outerRadiusでポインターの大きさを指定します。

ただ、うまく機能していないようで、innnerを0、outerを0.1とかに設定しておけば問題ないです。

IGvrGazeResponder

IGvrGazeResponderインターフェースを実装したスクリプトをアタッチすることで、そのGameObjectがプレイヤーの視線に入っているか等が取得できます。例によってColliderが必須です。

しかし、リファレンスには書いていないのですが、これ単体では機能せず、以下の用にEvent Triggerに登録してやる必要があります。なので、実際にはIGvrGazeResponderを使わずに、呼び出したい関数をEvent Triggerに登録するだけでも大丈夫です。

f:id:chunchunmorning:20160730222611p:plain

意味はないのですが、一応各メソッドを見ていきます。

OnGazeEnter

このGameObjectが視界に入った時に一度だけ呼ばれます。

Event TriggerではPointer Enterに相当します。

OnGazeExit

このGameObjectが視界から外れた時に一度だけ呼ばれます。

Event TriggerではPointer Exitに相当します。

OnGazeTrigger

このGameObjectが視界に入っている時にトリガーが押されると呼ばれます。

Event TriggerではPointer Clickに相当します。

まとめ

IGvrGazePointerは視線情報を取得したい時、IGvrGazeResponderはUIやリアクションを返すモノの作成に便利だと思います。

Google VR SDK for Unityはまだ作成途中で、日本語の資料も少ないですが、そんなに難しくはないので、Daydreamの発売に自作VRアプリを間に合わせたいですね!

使用したソフト
OS X El Capitan バージョン 10.11.5
Unity 5.4.0f3 Personal
Google VR SDK for Unity v0.8.5