В этом руководстве представлен обзор разработки в Unity для Android XR. Android XR работает с привычными инструментами и функциями, которые вы привыкли ожидать от Unity, а поскольку поддержка Android XR в Unity основана на OpenXR, многие функции, описанные в обзоре OpenXR , также поддерживаются в Unity.
Следуйте этому руководству, чтобы узнать о:
- Поддержка Unity для Android XR
- Основы Unity XR
- Разработка и публикация приложений для Android XR
- Пакеты Unity для Android XR
- Unity OpenXR: пакет Android XR
- Расширения Android XR для Unity
- Особенности и вопросы совместимости
- Ввод и взаимодействие
Поддержка Unity для Android XR
При создании приложений Unity для Android XR вы можете воспользоваться инструментами и возможностями смешанной реальности в последних версиях Unity 6. К ним относятся шаблоны смешанной реальности, использующие XR Interaction Toolkit , AR Foundation и OpenXR Plugin , которые помогут вам быстро приступить к работе. При создании приложений с Unity для Android XR мы рекомендуем использовать Universal Render Pipeline (URP) в качестве конвейера рендеринга и Vulkan в качестве графического API. Эти функции позволяют использовать некоторые графические функции Unity, которые поддерживаются только Vulkan. Подробнее о настройке этих параметров см. в руководстве по настройке проекта .
Основы Unity XR
Если вы новичок в разработке на Unity или XR, вы можете обратиться к руководству по XR от Unity, чтобы понять основные концепции и рабочие процессы XR. Руководство по XR содержит информацию о:
- Плагины поставщика XR , включая Unity OpenXR: Android XR и расширения Android XR для Unity
- Пакеты поддержки XR для добавления дополнительных функций на уровне приложений
- Руководство по архитектуре XR , описывающее технологический стек Unity XR и подсистемы XR.
- Настройка проекта XR
- Создание и запуск XR-приложений
- Руководство по графике XR , включая универсальный конвейер рендеринга, стереорендеринг, фовеальный рендеринг, области многовидового рендеринга и синхронизацию кадров VR
- Аудиогид XR , включая поддержку аудиопространственных преобразователей
Разработка и публикация приложений для Android
Unity предоставляет подробную документацию по разработке, сборке и публикации для Android, охватывающую такие темы, как разрешения Android в Unity , параметры сборки Android , сборка приложения для Android и доставка в Google Play .
Пакеты Unity для Android XR
Существует два пакета, обеспечивающих поддержку сборки приложений Unity для Android XR. Оба пакета представляют собой плагины XR-провайдера, которые можно включить через пакет управления плагинами XR Unity. Менеджер плагинов XR добавляет настройки проекта для управления и предоставления помощи в загрузке, инициализации, настройке и сборке плагинов XR. Чтобы ваше приложение могло использовать функции OpenXR во время выполнения, эти функции должны быть включены в проекте через менеджер плагинов.
На этом изображении показан пример того, как можно включить эти группы функций через редактор Unity.
Unity OpenXR Android XR
Пакет Unity OpenXR Android XR — это плагин XR, добавляющий поддержку Android XR в Unity. Этот плагин XR обеспечивает большую часть поддержки Android XR в Unity и обеспечивает поддержку устройств Android XR в проектах AR Foundation . AR Foundation предназначен для разработчиков, которые хотят создавать приложения дополненной или смешанной реальности. Он предоставляет интерфейс для функций дополненной реальности, но сам по себе не реализует никаких функций. Пакет Unity OpenXR Android XR обеспечивает реализацию этих функций. Чтобы начать работу с этим пакетом, ознакомьтесь с руководством по пакету, которое содержит руководство по началу работы.
Расширения Android XR для Unity
Расширения Android XR для Unity дополняют пакет Unity OpenXR Android XR и включают дополнительные функции для создания захватывающих игровых приложений. Их можно использовать как отдельно, так и вместе с пакетом Unity OpenXR Android XR.
Чтобы начать работу с этим пакетом, следуйте нашему руководству по настройке проекта или краткому руководству по импорту расширений Android XR для Unity .
Особенности и вопросы совместимости
В следующей таблице описываются функции, поддерживаемые пакетом Unity OpenXR: Android XR и пакетом Android XR Extensions для Unity. Ее можно использовать для определения того, какой пакет содержит необходимые вам функции, а также для рассмотрения вопросов совместимости.
Особенность | Unity OpenXR: строка функций Android XR | Расширения Android XR для строки функций Unity | Варианты использования и ожидаемое поведение |
---|---|---|---|
Android XR: сеанс дополненной реальности
| Android XR (Расширения): Управление сеансами
| Чтобы использовать функции любого из пакетов, необходимо включить функцию сеанса дополненной реальности (AR Session) для этого пакета. Вы можете включить оба набора функций одновременно; конфликты будут разрешаться отдельными функциями соответствующим образом. | |
Н/Д | Н/Д | Отслеживание устройства используется для отслеживания его положения и вращения в физическом пространстве. Игровой объект XR Origin автоматически обрабатывает отслеживание устройства и преобразует отслеживаемые объекты в систему координат Unity, используя компонент XROrigin и иерархию игровых объектов с камерой и драйвером TrackedPoseDriver . | |
Android XR: AR-камера | Н/Д | Эта функция обеспечивает поддержку оценки освещенности и полноэкранной передачи. | |
Android XR: Самолет дополненной реальности | Android XR (Расширения): Самолет | Эти две функции идентичны, используйте одну из них. Android XR (Расширения): Plane включен, чтобы разработчики могли использовать функции Android XR (Расширения): Object Tracking и Persistent Hawkers без зависимости от пакета Unity OpenXR Android XR. В будущем Android XR (Расширения): Plane будет удалён в пользу Android XR: AR Anchor. | |
Н/Д | Android XR (расширения): Отслеживание объектов | Эта функция обеспечивает поддержку обнаружения и отслеживания объектов в физической среде и используется в сочетании с библиотекой эталонных объектов. | |
Android XR: дополненная реальность (AR Face)
| Android XR: отслеживание лица
| Поддержка глаз аватара реализована через функцию Android XR: AR Face. Доступ к выражению лица пользователя осуществляется через функцию Android XR: Face Tracking. Эти две функции можно использовать одновременно. | |
Android XR: AR Raycast
| Н/Д | Эта функция позволяет вам проложить луч и рассчитать пересечение между этим лучом и отслеживаемыми плоскостями или отслеживаемыми глубинами, обнаруженными в физической среде. | |
Android XR: Якорь дополненной реальности | Android XR (Расширения): Якорь
| Обе функции поддерживают пространственные и плоские якоря; используйте одну из них. Для постоянных якорей используйте Android XR (Расширения): Anchor. В будущем Android XR (Расширения): Anchor будет удалён, а все функции Anchor будут доступны в Android XR: AR Anchor. | |
Android XR: AR-окклюзия
| Н/Д | Окклюзия позволяет контенту смешанной реальности в вашем приложении казаться скрытым или частично затененным объектами в физической среде. | |
Показатели производительности | Показатели производительности Android XR | Н/Д | Используйте эту функцию для доступа к показателям производительности устройств Android XR. |
Поддержка композиционного слоя (требуются плагин OpenXR и композиционный слой XR) | Android XR: сквозной композиционный слой
| Используйте поддержку композиционного слоя Unity для создания базовых композиционных слоев (например, четырёхугольника, цилиндра, проекции). Android XR: сквозной композиционный слой можно использовать для создания сквозного слоя с пользовательской сеткой, считывая данные из GameObject Unity. | |
Фовеальный рендеринг (требуется плагин OpenXR)
| Фовеация (устаревшая) | Фовеальный рендеринг позволяет ускорить рендеринг за счёт снижения разрешения областей, находящихся в зоне периферийного зрения пользователя. Функция фовеального рендеринга Unity поддерживается только в приложениях, использующих URP и Vulkan. Функция Foveation (устаревшая) в расширениях Android XR для Unity также поддерживает встроенный конвейер рендеринга и OpenGL ES. Мы рекомендуем использовать фовеальный рендеринг Unity по возможности и отмечаем, что при сборке для Android XR рекомендуется использовать как URP, так и Vulkan. | |
Н/Д | Android XR: неограниченное пространство ссылок | Эта функция устанавливает режим начала отслеживания XRInputSubsystem на Unbounded . Значение Unbounded указывает, что XRInputSubsystem отслеживает все устройства ввода относительно мировой привязки, которая может изменяться. | |
Н/Д | Режим смешивания среды | Эта функция позволяет вам установить режим смешивания среды XR , который управляет тем, как виртуальные изображения смешиваются с реальной средой при включении сквозной передачи. |
Ввод и взаимодействие
Android XR поддерживает многомодальный естественный ввод.
Помимо отслеживания рук и глаз, поддерживаются также периферийные устройства, такие как 6DoF-контроллеры, мышь и физическая клавиатура. Это означает, что приложения для Android XR, как ожидается, будут поддерживать взаимодействие с руками, и нельзя утверждать, что все устройства будут оснащены контроллерами.
Профили взаимодействия
Unity использует профили взаимодействия для управления взаимодействием вашего XR-приложения с различными XR-устройствами и платформами. Эти профили определяют ожидаемые входные и выходные данные для различных конфигураций оборудования, обеспечивая совместимость и единообразную функциональность на различных платформах. Включая профили взаимодействия, вы можете гарантировать корректную работу вашего XR-приложения с различными устройствами, согласованное сопоставление входных данных и доступ к определённым функциям XR. Чтобы настроить профиль взаимодействия:
- Откройте окно «Настройки проекта» (меню: Правка > Настройки проекта ).
- Нажмите «Управление подключаемыми модулями XR» , чтобы развернуть раздел подключаемых модулей (при необходимости).
- Выберите OpenXR в списке плагинов XR.
- В разделе «Профили взаимодействия» нажмите кнопку + , чтобы добавить профиль.
- Выберите из списка профиль для добавления.
Взаимодействие рук
Взаимодействие с помощью руки ( XR_EXT_hand_interaction
) обеспечивается плагином OpenXR , и вы можете реализовать макет устройства <HandInteraction>
в системе ввода Unity, включив профиль взаимодействия с рукой . Используйте этот профиль взаимодействия для ввода рукой, поддерживаемого четырьмя позами действий, определенными в OpenXR: «щипок», «тычок», «прицеливание» и «хват». Если вам требуются дополнительные функции взаимодействия с рукой или отслеживания руки, обратитесь к разделу «Руки XR» на этой странице.
Взаимодействие взгляда
Взаимодействие взгляда ( XR_EXT_eye_gaze_interaction
) обеспечивается плагином OpenXR, и вы можете использовать этот макет для получения данных о положении глаз (положении и повороте), возвращаемых расширением. Подробнее о взаимодействии взгляда см. в руководстве по вводу OpenXR .
Взаимодействие с контроллером
Android XR поддерживает профиль Oculus Touch Controller для контроллеров с шестью степенями свободы (6DoF). Оба профиля предоставляются плагином OpenXR.
Взаимодействие с мышью
Профиль взаимодействия с мышью Android XR ( XR_ANDROID_mouse_interaction
) предоставляется расширениями Android XR для Unity. Он предоставляет макет устройства <AndroidXRMouse>
в системе ввода Unity .
Взаимодействие с позой ладони
Плагин OpenXR поддерживает взаимодействие с позой ладони ( XR_EXT_palm_pose
), которое предоставляет макет <PalmPose>
в системе ввода Unity . Поза ладони не является альтернативой расширениям или пакетам, отслеживающим положение руки в более сложных сценариях; вместо этого её можно использовать для размещения визуального контента, специфичного для приложения, например, изображений аватара. Поза ладони включает в себя как положение ладони, так и её ориентацию.
XR Руки
Пакет XR Hands позволяет получать доступ к данным отслеживания рук с помощью XR_EXT_hand_tracking
и XR_FB_hand_tracking_aim
, а также предоставляет оболочку для преобразования данных о суставах кисти из отслеживания во входные позы. Чтобы использовать функции пакета XR Hands, включите функции Hand Tracking Subsystem и Meta Hand Tracking Aim OpenXR .
Пакет XR hands может быть полезен, если вам нужны более подробные данные о позе руки или суставах руки или когда вам нужно работать с пользовательскими жестами.
Более подробную информацию см. в документации Unity по настройке XR Hands в вашем проекте.
Выберите способ нанесения изображения на руки
Android XR поддерживает два способа рендеринга рук: сетка руки и готовый визуализатор.
Сетка для рук
Пакет Android XR Unity содержит функцию Hand Mesh, которая обеспечивает доступ к XR_ANDROID_hand_mesh extension
. Функция Hand Mesh предоставляет сетки для рук пользователя. Сетка руки содержит вершины треугольников, представляющих геометрию руки. Эта функция предназначена для создания персонализированной сетки, представляющей реальную геометрию рук пользователя для визуализации.
Сборный XR Hands
Пакет XR Hands содержит пример, называемый Hands visualizer , который содержит полностью оснащенные левую и правую руки для визуализации соответствующего контексту представления рук пользователя.
Системные жесты
В Android XR предусмотрен системный жест, позволяющий открыть меню, позволяющее вернуться назад, открыть панель запуска или просмотреть список запущенных приложений. Пользователь может активировать это системное меню, сжав пальцы доминирующей рукой.
Когда пользователь взаимодействует с системным навигационным меню, приложение реагирует только на события отслеживания положения головы. Пакет XR Hands может определять, когда пользователь выполняет определённые действия, например, взаимодействует с системным навигационным меню. Проверка AimFlags
, SystemGesture
и DominantHand
позволяет определить, когда выполняется это системное действие. Подробнее об AimFlags
см. в документации Unity по Enum MetaAimFlags .
Набор инструментов для взаимодействия XR
Пакет XR Interaction Toolkit — это высокоуровневая компонентная система взаимодействия для создания VR- и AR-приложений. Он предоставляет фреймворк, позволяющий осуществлять взаимодействие с 3D- и UI-объектами через события ввода Unity. Он поддерживает такие задачи взаимодействия, как тактильная и визуальная обратная связь, а также локомоции.
OpenXR™ и логотип OpenXR являются товарными знаками компании Khronos Group Inc. и зарегистрированы в качестве товарных знаков в Китае, Европейском Союзе, Японии и Великобритании.