В этом руководстве представлен обзор разработки с помощью 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, вы можете обратиться к руководству Unity XR, чтобы понять основные концепции и рабочие процессы XR. Руководство XR содержит информацию о:
- Плагины поставщика XR , включая Unity OpenXR: Android XR и расширения Android XR для Unity
- Пакеты поддержки XR для добавления дополнительных функций на уровне приложений
- Руководство по архитектуре XR , описывающее технологический стек Unity XR и подсистемы XR
- Настройка проекта XR
- Создание и запуск приложений XR
- Руководство по графике XR , включая Universal Render Pipeline, стереорендеринг, фовеальный рендеринг, области многовидового рендеринга и синхронизацию кадров VR
- Аудиогид XR , включая поддержку аудиопространственных преобразователей
Разработка и публикация приложений для Android
Unity предоставляет подробную документацию по разработке, сборке и публикации для Android, охватывающую такие темы, как разрешения Android в Unity , параметры сборки Android , сборка приложения для Android и отправка в Google Play .
Пакеты Unity для Android XR
Есть два пакета, которые обеспечивают поддержку для создания приложений Unity для Android XR. Оба этих пакета являются подключаемыми модулями XR-провайдера, которые можно включить с помощью пакета управления подключаемыми модулями XR Unity. Менеджер подключаемых модулей XR добавляет Project Settings для управления и предоставления помощи с загрузкой, инициализацией, настройками и поддержкой сборки для подключаемых модулей 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 предназначен для разработчиков, которые хотят создавать AR или смешанную реальность. Он предоставляет интерфейс для функций AR, но сам не реализует никаких функций. Пакет 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 GameObject автоматически обрабатывает отслеживание устройства и преобразует отслеживаемые объекты в систему координат Unity через свой компонент XROrigin и иерархию GameObject с Camera и TrackedPoseDriver . | |
Android XR: Камера дополненной реальности | н/д | Эта функция обеспечивает поддержку оценки освещенности и полноэкранной передачи. | |
Android XR: Самолет дополненной реальности | Android XR (Расширения): Самолет | Эти две функции идентичны; используйте одну или другую. Android XR (Extensions): Plane включен, чтобы разработчики могли использовать функции Android XR (Extensions): Object Tracking и persistent anchors без необходимости иметь зависимость от пакета Unity OpenXR Android XR. В будущем Android XR (Extensions): Plane будет удален в пользу Android XR: AR Anchor. | |
н/д | Android XR (Расширения): Отслеживание объектов | Эта функция обеспечивает поддержку обнаружения и отслеживания объектов в физической среде и используется в сочетании с библиотекой эталонных объектов. | |
Android XR: дополненная реальность
| 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. |
Поддержка Composition Layer (требуются плагин OpenXR и XR Composition Layer) | Android XR: сквозной композиционный слой
| Используйте поддержку Composition Layer в Unity для создания базовых композиционных слоев (например, четырехугольник, цилиндр, проекция). Android XR: Passthrough Composition Layer можно использовать для создания passthrough слоя с пользовательской сеткой, считывая данные из GameObject Unity. | |
Фовеальная визуализация (требуется плагин OpenXR)
| Фовеация (устаревшая) | Фовеальный рендеринг позволяет ускорить рендеринг за счет снижения разрешения областей в периферийном зрении пользователя. Функция фовеального рендеринга Unity поддерживается только для приложений, использующих URP и Vulkan. Функция Foveation (Legacy) в расширениях Android XR для Unity также поддерживает встроенный конвейер рендеринга и OpenGL ES. Мы рекомендуем использовать функцию фовеального рендеринга Unity, когда это возможно, и отметим, что при сборке для Android XR рекомендуются как URP, так и Vulkan. | |
н/д | Android XR: неограниченное пространство ссылок | Эта функция устанавливает режим начала отслеживания XRInputSubsystem на Unbounded . Unbounded указывает, что XRInputSubsystem отслеживает все InputDevices относительно мирового якоря, который может меняться. | |
н/д | Режим смешивания окружения | Эта функция позволяет вам установить режим смешивания среды XR , который управляет тем, как виртуальные изображения смешиваются с реальной средой при включении сквозной передачи. |
Ввод и взаимодействие
Android XR поддерживает многомодальный естественный ввод.
Помимо отслеживания рук и глаз, также поддерживаются периферийные устройства, такие как контроллеры 6DoF, мышь и физическая клавиатура. Это означает, что приложения для Android XR, как ожидается, будут поддерживать взаимодействие с руками, и нельзя предполагать, что все устройства будут поставляться с контроллерами.
Профили взаимодействия
Unity использует профиль взаимодействия для управления тем, как ваше приложение XR взаимодействует с различными устройствами и платформами XR. Эти профили устанавливают ожидаемые входы и выходы для различных конфигураций оборудования, обеспечивая совместимость и согласованную функциональность на различных платформах. Включая профили взаимодействия, вы можете гарантировать, что ваше приложение XR правильно работает с различными устройствами, поддерживает согласованное сопоставление входов и имеет доступ к определенным функциям XR. Чтобы задать профиль взаимодействия:
- Откройте окно «Настройки проекта» (меню: Правка > Настройки проекта ).
- Нажмите «Управление подключаемыми модулями XR» , чтобы развернуть раздел подключаемых модулей (при необходимости).
- Выберите OpenXR в списке плагинов XR.
- В разделе «Профили взаимодействия» нажмите кнопку «+» , чтобы добавить профиль.
- Выберите из списка профиль для добавления.
Взаимодействие рук
Взаимодействие рук ( XR_EXT_hand_interaction
) обеспечивается плагином OpenXR , и вы можете выставить
Взаимодействие взгляда и глаз
Взаимодействие взгляда ( XR_EXT_eye_gaze_interaction
) обеспечивается плагином OpenXR, и вы можете использовать этот макет для получения данных о положении глаз (положение и поворот), которые возвращает расширение. Подробнее о взаимодействии взгляда читайте в руководстве по вводу OpenXR .
Взаимодействие с контроллером
Android XR поддерживает Oculus Touch Controller Profile для контроллеров 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 Руки сборные
Пакет 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. и зарегистрированы в качестве товарного знака в Китае, Европейском Союзе, Японии и Великобритании.