視線入力 — MRTK2

視線入力は、ユーザーが見ている場所に基づいて世界と対話する入力形式です。 視線入力は 2 つの異なるフレーバーに存在します

頭の視線入力

この種類の視線入力は、頭/カメラが見ている方向に基づいています。 頭の視線入力は、目の視線入力がサポートされていないシステムや、ハードウェアで目の視線入力がサポートできるが、一連の適切なアクセス許可と設定が実行されていない場合にアクティブになります。

頭の視線入力は通常、ホログラフィック フレームの中央にオブジェクトを配置してからエアタップ ジェスチャを実行することで、そのオブジェクトを見ることに関する HoloLens 1 スタイルの対話式操作に関連付けられます。

目の視線入力

この種類の視線入力は、ユーザーの目が見ている場所に基づいています。 目の視線入力は、視線追跡をサポートするシステムにのみ存在します。 目の視線入力の使用方法の詳細については、視線追跡に関するドキュメントを参照してください。

GazeProvider

視線入力機能 (頭と目の両方) は、GazeProvider によって実現します。 このプロバイダーは、入力システム プロファイルの [ポインター] セクションで構成できます。

視線入力構成エントリポイント

他の入力ソースと同様に、視線入力プロバイダーは、ポインターを使用してシーン内のオブジェクトを操作します (ポインターについては、こちらのドキュメントを参照)。 視線入力プロバイダーの場合、そのポインターは InternalGazePointer を介して実装され、プロファイルを使用しては構成されません。

IMixedRealityGazeProviderIMixedRealityEyeGazeProvider を実装する別のクラスを参照するように、"視線入力プロバイダーの種類" を変更することで、普通の GazeProvider を代替の実装に置き換えることができます。 一般に、GazeProvider の再実装は簡単ではないので、普通の GazeProvider を使用する (およびバグの検出時に問題を提出する) ことをお勧めします。

プラットフォームに用意されている代替の視線入力ポーズ

既定では、MRTK GazeProvider によって、カメラのフレームの中心が視線入力の原点として使用されます。 HoloLens 2 上の Windows Mixed Reality などの一部のプラットフォームには、別に定義された視線入力ポーズが用意されています。 これは、視線入力設定の Use Head Gaze Override 設定で管理されます。 有効にすると、代替の視線入力オーバーライドが使用されます。 無効にすると、既定のフレーム中央の原点が使用されます。 具体的には、HoloLens 2 では、ターゲット設定に自分の頭を使用する際にユーザーが快適であるように視線入力角度が数度上げられます。

使用

現在の視線入力ターゲットを取得する方法

このサンプルでは、ユーザーの視線入力のターゲットになっている現在のゲーム オブジェクトを取得する方法を示します。

void LogCurrentGazeTarget()
{
    if (CoreServices.InputSystem.GazeProvider.GazeTarget)
    {
        Debug.Log("User gaze is currently over game object: "
            + CoreServices.InputSystem.GazeProvider.GazeTarget)
    }
}

現在の視線入力の方向と原点を取得する方法

このサンプルでは、ユーザーの視線入力の方向と原点 (方向が始まった地点) を表す Vector3 を取得する方法を示します。

void LogGazeDirectionOrigin()
{
    Debug.Log("Gaze is looking in direction: "
        + CoreServices.InputSystem.GazeProvider.GazeDirection);

    Debug.Log("Gaze origin is: "
        + CoreServices.InputSystem.GazeProvider.GazeOrigin);
}