Навигация, поддерживаемая глазами, в MRTK — MRTK2

MRTK

Представьте, что вы читаете информацию на листе, и когда вы достигаете конца отображаемого текста, текст автоматически прокручивается вверх, чтобы отобразить больше содержимого. Кроме того, вы можете легко увеличить то место, где вы смотрите. Карта также автоматически корректирует содержимое, чтобы сохранить интересующие объекты в поле зрения. Другое интересное приложение — без использования рук наблюдение за 3D-голограммами, автоматически выводя части голограммы, на которые вы смотрите. Ниже приведены некоторые примеры, описанные на этой странице в контексте навигации с поддержкой взгляда.

В следующих описаниях предполагается, что вы уже знакомы с настройкой отслеживания взгляда в сцене MRTK и с основами доступа к данным отслеживания глаз в MRTK Unity. Примеры, рассмотренные ниже, являются частью EyeTrackingDemo-03-Navigation сцены (Assets/MRTK/Examples/Demos/EyeTracking/Scenes/EyeTrackingDemo-03-Navigation).

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

Автоматическая прокрутка

Автоматическая прокрутка позволяет пользователю прокручивать тексты, не поднимая пальцем. Просто продолжайте чтение, и текст будет автоматически прокручиваться вверх или вниз в зависимости от того, где пользователь ищет. Вы можете начать с примера, приведенного в EyeTrackingDemo-03-Navigation разделе (Assets/MRTK/Examples/Demos/EyeTracking/Scenes). В этом примере используется компонент TextMesh для гибкой загрузки и форматирования нового текста. Чтобы включить автоматическую прокрутку, просто добавьте следующие два сценария в компонент коллайдера текстового поля:

ScrollRectTransf

Для прокрутки textMesh или, в более общем случае, компонента RectTransform можно использовать скрипт ScrollRectTransf . Если вы хотите прокручивать текстуру вместо RectTransform, используйте ScrollTexture вместо ScrollRectTransf. Ниже описаны параметры ScrollRectTransf , доступные в редакторе Unity.

Параметры Описание
LimitPanning Если этот параметр включен, будет останавливать прокручиваемое содержимое на его границе.
RectTransfToNavigate Ссылка на RectTransform для прокрутки.
RefToViewport Ссылка на родительский объект RectTransform прокручиваемого содержимого, чтобы определить правильное смещение и границу.
AutoGazeScrollIsActive Если этот параметр включен, текст будет автоматически прокручиваться, если пользователь просматривает активную область (например, верхняя и нижняя части панели прокрутки, если скорость прокрутки по вертикали не равна нулю).
ScrollSpeed_x Если задано значение, равное нулю, будет включена горизонтальная прокрутка. Отрицательные значения означают изменение направления прокрутки: слева направо или справа налево.
ScrollSpeed_y Если задано значение, не равное нулю, вертикальная прокрутка будет включена. Отрицательные значения означают изменение направления прокрутки: вверх к вниз и вниз до вверх.
MinDistFromCenterForAutoScroll Нормализовано минимальное расстояние в x и y от центра поля попадания целевого объекта (0, 0) до прокрутки. Таким образом, значения должны находиться в диапазоне от 0 (всегда прокрутка) до 0,5 (без прокрутки).
UseSkimProofing Если этот параметр включен, он предотвращает внезапные движения прокрутки при быстром просмотре вокруг. Это может сделать прокрутку менее быстрой. Его можно настроить с помощью значения SkimProofUpdateSpeed .
SkimProofUpdateSpeed Чем меньше значение, тем медленнее прокрутка будет ускоряться после скимминга. Рекомендуемое значение: 5.

Настройка прокрутки с поддержкой Eye в Unity

EyeTrackingTarget

Присоединение компонента EyeTrackingTarget позволяет гибко обрабатывать события, связанные с взглядом. Пример прокрутки демонстрирует прокрутку текста, который начинается, когда пользователь смотрит на панель, и останавливается, когда пользователь смотрит в сторону от нее. Настройка прокрутки, поддерживаемая глазами, в Unity: EyeTrackingTarget

Сдвиг и масштабирование с поддержкой взгляда

Кто раньше не использовал виртуальную карту для поиска своего дома или для изучения совершенно новых мест? Отслеживание взгляда позволяет вам напрямую погрузиться в именно те части, которые вас интересуют, и после увеличения, вы можете плавно следовать курсу улицы, чтобы исследовать ваш район! Это полезно не только для изучения географических карт, но и для просмотра деталей на фотографиях, визуализациях данных или даже в потоковой трансляции медицинских изображений. Использовать эту возможность в приложении очень просто! Для содержимого, отображаемого в текстуре (например, фотографии, потоковых данных), просто добавьте скрипт PanZoomTexture . Для RectTransform используйте PanZoomRectTransf. Расширяя возможности автоматической прокрутки , мы, по сути, можем прокручивать как по вертикали, так и по горизонтали одновременно и масштабировать содержимое прямо вокруг текущей точки фокуса пользователя.

Параметры Описание
LimitPanning Если этот параметр включен, будет останавливать прокручиваемое содержимое на его границе.
HandZoomEnabledOnStartup Указывает, включены ли жесты руки для выполнения жеста масштабирования автоматически. Вы можете сначала отключить его, чтобы избежать случайного запуска действий масштабирования.
RendererOfTextureToBeNavigated Указанный отрисовщик текстуры для навигации.
Zoom_Acceleration Ускорение масштабирования, определяющее крутизну сопоставления функции логистической скорости.
Zoom_SpeedMax Максимальная скорость масштабирования.
Zoom_MinScale Минимальный масштаб текстуры для увеличения — например, 0,5f (половина исходного размера).
Zoom_MaxScale Максимальный масштаб текстуры для уменьшения масштаба , например, 1f (исходный размер) или 2,0f (удвоение исходного размера).
Zoom_TimeInSecToZoom Масштабирование по времени. После активации увеличение и уменьшение масштаба будет выполняться в течение заданного времени в секундах.
Zoom_Gesture Тип жеста руки для увеличения или уменьшения масштаба.
--- ---
Pan_AutoScrollIsActive Если этот параметр включен, текст будет автоматически прокручиваться, если пользователь просматривает активную область (например, верхняя и нижняя части панели прокрутки, если скорость прокрутки по вертикали не равна нулю).
Pan_Speed_x Если задано значение, равное нулю, будет включена горизонтальная прокрутка. Отрицательные значения означают изменение направления прокрутки: слева направо или справа налево.
Pan_Speed_y Если задано значение, не равное нулю, вертикальная прокрутка будет включена. Отрицательные значения означают изменение направления прокрутки: вверх к вниз и вниз до вверх.
Pan_MinDistFromCenter Нормализовано минимальное расстояние в x и y от центра поля попадания целевого объекта (0, 0) до прокрутки. Таким образом, значения должны находиться в диапазоне от 0 (всегда прокрутка) до 0,5 (без прокрутки).
UseSkimProofing Если этот параметр включен, он предотвращает внезапные движения прокрутки при быстром просмотре вокруг. Это может сделать прокрутку менее быстрой. Его можно настроить с помощью значения SkimProofUpdateSpeed .
SkimProofUpdateSpeed Чем меньше значение, тем медленнее прокрутка будет ускоряться после скимминга. Рекомендуемое значение: 5.

Настройка панорамирования и масштабирования с поддержкой взгляда в Unity

Трехмерный поворот на основе внимания

Представьте себе, глядя на трехмерный объект и части, которые вы хотите увидеть более близко, волшебно повернуть к вам - как будто система будет читать ваши мысли и знать, чтобы повернуть элемент к вам! Это идея для 3D-поворотов на основе внимания, которые позволяют исследовать все стороны голограммы, не поднимая пальцем. Чтобы включить такое поведение, просто добавьте скрипт OnLookAtRotateByEyeGaze в часть GameObject с компонентом коллайдера . Вы можете настроить несколько параметров, перечисленных ниже, чтобы ограничить скорость и направление поворота голограммы.

Как вы можете себе представить, наличие активного поведения во все времена может быстро стать довольно отвлекающим в переполненной сцене. Вот почему вы можете начать с отключенного поведения, а затем быстро включить его с помощью голосовых команд. Кроме того, мы добавили пример в EyeTrackingDemo-03-Navigation (Assets/MRTK/Examples/Demos/EyeTracking/Scenes) для использования TargetMoveToCamera, для которого можно выбрать целевой объект, и он летит перед вами. Просто скажите "Приходите ко мне".

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

Параметры Описание
SpeedX Скорость горизонтального поворота.
Быстрый Скорость вертикального поворота.
InverseX Для инверсии направления горизонтального поворота.
Инверсивный Для инверсии направления вертикального поворота.
RotationThreshInDegrees Если угол между "Взглядом на цель" и "Камера — цель" меньше этого значения, ничего не делать. Это необходимо для предотвращения небольших вращений дрожания.
MinRotX Минимальный угол поворота по горизонтали. Это позволяет ограничить вращение в разных направлениях.
MaxRotX Максимальный угол поворота по горизонтали. Это позволяет ограничить вращение в разных направлениях.
MinRotY Минимальный угол вертикального поворота для ограничения поворота вокруг оси X.
MaxRotY Максимальный угол поворота по вертикали для ограничения поворота вокруг оси Y.

Настройка трехмерного поворота с поддержкой глаз в Unity

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

См. также раздел


Назад к "Отслеживание взгляда в MixedRealityToolkit"