Взгляд — 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);
}