Unity スクリプトで視線追跡データにアクセスする — MRTK2
この記事は、MRTK シーンでの視線追跡の設定について理解していることを前提としています (視線追跡を使用するための基本的な MRTK の設定に関する記事を参照してください)。 MonoBehaviour スクリプトで視線追跡データにアクセスするのは簡単です。 CoreServices.InputSystem.EyeGazeProvider を使用するだけです。
IMixedRealityEyeGazeProvider
MRTK での視線追跡の構成は IMixedRealityEyeGazeProvider
インターフェイスで行います。
CoreServices.InputSystem.EyeGazeProvider を使用すると、実行時にツールキットに登録されている既定の視線入力プロバイダーの実装が提供されます。
EyeGazeProvider
の便利なプロパティを次に示します。
IsEyeTrackingEnabled: ユーザーが視線入力に視線追跡を使用することを選択した場合は true です。
IsEyeCalibrationValid: ユーザーの視線追跡調整が有効かどうかを示します。 この値がまだ視線追跡システムからデータを受信していない場合は、'null' が返されます。 ユーザーが視線追跡調整をスキップしたため、無効になっている可能性があります。
IsEyeTrackingEnabledAndValid: 現在の視線追跡データが現在視線入力に使用されているかどうかを示します。
IsEyeTrackingDataValid: 視線追跡データを使用できる場合は true です。 タイムアウトを超えているため (ユーザーのまばたきには左右されないはずですが)、または追跡ハードウェアやアクセス許可の不足のために利用できないことがあります。 ユーザーの視線が調整されているかどうかを検出し、適切な通知を表示する方法については、視線調整がされていない場合の通知サンプルを確認してください。
GazeOrigin: 視線入力レイの原点。 'IsEyeGazeValid' が false の場合、これにより "頭" の視線入力の原点が返されることに注意してください。
GazeDirection: 視線入力レイの方向。 'IsEyeGazeValid' が false の場合、これにより "頭" の視線入力の方向が返されます。
HitInfo、HitPosition、HitNormal など: 現在視線を向けているターゲットに関する情報です。 ここでも、 が false の場合
IsEyeGazeValid
、これはユーザーの 頭 の視線入力に基づいています。
CoreServices.InputSystem.EyeGazeProvider の使用例
FollowEyeGaze.cs の例を次に示します。
- ユーザーが見ているホログラムのポイントを取得します。
// Show the object at the hit position of the user's eye gaze ray with the target.
gameObject.transform.position = CoreServices.InputSystem.EyeGazeProvider.HitPosition;
- ユーザーが現在見ている場所から一定の距離にあるビジュアル アセットを示します。
// If no target is hit, show the object at a default distance along the gaze ray.
gameObject.transform.position =
CoreServices.InputSystem.EyeGazeProvider.GazeOrigin +
CoreServices.InputSystem.EyeGazeProvider.GazeDirection.normalized * defaultDistanceInMeters;