共用方式為


注視 - MRTK2

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

頭部注視

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

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

眼睛目光

這種類型的注視是以使用者眼睛看起來的位置為基礎。 眼球注視只會存在於支援眼球追蹤的系統上。 如需如何使用眼球注視的詳細資訊,請參閱 眼球追蹤檔

GazeProvider

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

注視設定進入點

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

藉由變更 注視提供者類型 來參考實作 IMixedRealityGazeProvider 和 IMixedRealityEyeGazeProvider 的不同類別,即可將 stock GazeProvider 取代為替代實作。 通常建議使用股票注視Provider (,並在尋找錯誤) 時提出問題,因為重新實作 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);
}