注視 — MRTK2

注視 是一種輸入形式,可根據使用者外觀與世界互動。 注視存在於兩個不同的變體中

頭部注視

這種類型的注視是以頭部/相機所查看的方向為基礎。 頭部注視在不支援眼球注視的系統上為作用中,或在硬體可能支援眼睛注視的情況下,但尚未執行正確的 許可權和設定 集。

頭部注視通常與HoloLens 1 種涉及查看物件的樣式互動相關聯,方法是將它放在全像攝影畫面的中央,然後執行空中點選手勢。

眼睛目光

這種類型的注視是以使用者的眼睛外觀為基礎。 只有支援眼球追蹤的系統上才會顯示眼球注視。 如需如何使用眼球注視的詳細資訊,請參閱 眼球追蹤檔

GazeProvider

注視功能 (頭部和眼睛) 是由 GazeProvider提供。 您可以在輸入系統設定檔的 [指標 ] 區段中設定此提供者:

Gaze Configuration Entrypoint

如同其他輸入來源,注視提供者會透過使用指標來與場景中的物件互動 , (請參閱本檔,以取得指標) 的相關資訊 。 在注視提供者的情況下,其指標是透過 InternalGazePointer 實作,而且不會透過設定檔進行設定。

您可以藉由變更 注視提供者類型 來參考實作 IMixedRealityGazeProviderIMixedRealityEyeGazeProvider的不同類別,以替代實作來取代 Stock 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);
}