Взгляд — MRTK2

Взгляд — это форма ввода, которая взаимодействует с миром в зависимости от того, где смотрит пользователь. Взгляд существует в двух разных вариантах

Отслеживание направления головы

Этот тип взгляда основан на направлении, в которое смотрит голова или камера. Головной взгляд активен в системах, которые не поддерживают взгляд, или в тех случаях, когда оборудование может поддерживать взгляд, но правильный набор разрешений и настройки не выполнен.

Взгляд головы обычно связан с взаимодействиями в стиле HoloLens 1, включающими взгляд на объект, помещая его в центр голографического кадра, а затем выполняя жест касания воздуха.

Взгляд

Этот тип взгляда зависит от того, куда смотрят глаза пользователя. Взгляд присутствует только в системах, поддерживающих отслеживание взгляда. Дополнительные сведения об использовании взгляда см. в документации по отслеживанию взгляда.

GazeProvider

Функция взгляда (как голова, так и глаз) предоставляется GazeProvider. Этот поставщик можно настроить в разделе Указатель системного профиля ввода:

Начальная точка настройки взгляда

Как и другие источники входных данных, поставщик взгляда взаимодействует с объектами в сцене с помощью указателя (сведения об указателях см. в этом документе). В случае с поставщиком взгляда его указатель реализуется с помощью InternalGazePointer и не настраивается через профиль.

Можно заменить стандартный GazeProvider альтернативной реализацией, изменив Тип поставщика взгляда для ссылки на другой класс, реализующий IMixedRealityGazeProvider и IMixedRealityEyeGazeProvider. Как правило, рекомендуется использовать стоковый GazeProvider (и регистрация проблем в при поиске ошибок), так как повторная реализация GazeProvider нетривиальна.

Альтернативные позиции взгляда, предоставляемые платформой

По умолчанию MRTK GazeProvider использует центр кадра камеры в качестве источника взгляда. Некоторые платформы, например Windows Mixed Reality на HoloLens 2, предоставляют альтернативно определенное положение взгляда. Управление этим осуществляется с помощью 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);
}