Разработка с помощью Unity для Android XR

В этом руководстве представлен обзор разработки с помощью 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 , которые помогут вам быстро приступить к работе. При создании приложений с помощью Unity для Android XR мы рекомендуем Universal Render Pipeline (URP) в качестве конвейера рендеринга и Vulkan в качестве графического API. Эти функции позволяют вам воспользоваться некоторыми новыми графическими функциями Unity, которые поддерживаются только Vulkan. Дополнительные сведения о настройке этих параметров см. в руководстве по настройке проекта .

Основы Unity XR

Если вы новичок в Unity или разработке XR, вы можете обратиться к руководству Unity XR, чтобы понять основные концепции и рабочие процессы XR. Руководство XR содержит информацию о:

Разработка и публикация приложений для Android

Unity предоставляет подробную документацию по разработке, сборке и публикации для Android, охватывающую такие темы, как разрешения Android в Unity , настройки сборки Android , создание приложения для Android и доставка в Google Play .

Пакеты Unity для Android XR

Существует два пакета, которые обеспечивают поддержку создания приложений Unity для Android XR. Оба этих пакета являются подключаемыми модулями поставщика XR, которые можно включить с помощью пакета Unity XR Plug-in Management. Менеджер подключаемых модулей XR добавляет настройки проекта для управления и предоставления помощи по загрузке, инициализации, настройкам и поддержке сборки подключаемых модулей XR. Чтобы ваше приложение могло выполнять функции OpenXR во время выполнения, в проекте эти функции должны быть включены через диспетчер подключаемых модулей.

На этом изображении показан пример того, как вы можете включить эти группы функций через редактор Unity.

Пример экрана управления плагином Unity XR

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 for Unity. Ее можно использовать для определения того, какой пакет содержит нужные вам функции, а также для определения любых соображений совместимости.

Особенность

Unity OpenXR: строка функции Android XR

Строка функций расширений Android XR для Unity

Варианты использования и ожидаемое поведение

AR-сессия

Android XR: сеанс дополненной реальности

  • Настройки функции включают оптимизацию сброса буфера (Vulkan).

Android XR (расширения): управление сеансами

  • Настройки функций включают субдискретизацию (Vulkan) и URP SpaceWarp (Vulkan).

Чтобы использовать функции любого пакета, необходимо включить функцию сеанса AR для этого пакета. Вы можете включить оба набора функций одновременно; отдельные функции будут соответствующим образом обрабатывать конфликты.

Отслеживание устройств

н/д

н/д

Отслеживание устройства используется для отслеживания положения и вращения устройства в физическом пространстве. XR Origin GameObject автоматически обрабатывает отслеживание устройств и преобразует отслеживаемые объекты в систему координат Unity через свой компонент XROrigin и иерархию GameObject с помощью Camera и TrackedPoseDriver .

Камера

Android XR: AR-камера

н/д

Эта функция обеспечивает поддержку оценки освещенности и полноэкранного перехода.

Обнаружение самолетов

Android XR: Самолет в дополненной реальности

Android XR (расширения): самолет

Эти две функции идентичны; используйте тот или иной. Android XR (расширения): включен Plane, чтобы разработчики могли использовать функции Android XR (расширения): отслеживание объектов и постоянные привязки без необходимости зависеть от пакета Unity OpenXR Android XR. В будущем Android XR (Расширения): Plane будет удален в пользу Android XR: AR Anchor.

Отслеживание объектов

н/д

Android XR (расширения): отслеживание объектов

Эта функция обеспечивает поддержку обнаружения и отслеживания объектов в физической среде, используемую в сочетании с эталонной библиотекой объектов.

Отслеживание лица

Android XR: AR Face

  • Только XR_ANDROID_avatar_eyes
  • Нет отслеживания лица

Android XR: отслеживание лиц

  • XR_ANDROID_face_tracking

Поддержка глаз аватара обеспечивается с помощью функции 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: сквозной композиционный слой

  • XR_ANDROID_composition_layer_passthrough_mesh

Используйте поддержку слоев композиции Unity для создания базовых слоев композиции (например, четырехугольника, цилиндра, проекции). Android XR: Passthrough Composition Layer можно использовать для создания сквозного слоя с пользовательской сеткой, считывающей данные из Unity GameObject .

Фовеатный рендеринг

Фовеатный рендеринг (требуется плагин OpenXR)

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

Фовация (Наследие)

Фовеатный рендеринг позволяет ускорить рендеринг за счет снижения разрешения областей в периферийном зрении пользователя. Функция фовеатного рендеринга Unity поддерживается только для приложений, использующих URP и Vulkan. Функция Foveation (Legacy) в расширениях Android XR для Unity также поддерживает BiRP и GLES. Мы рекомендуем использовать функцию фовеатного рендеринга Unity, когда это возможно, и обратите внимание, что при сборке для Android XR рекомендуется использовать как URP, так и Vulkan.

Неограниченное ссылочное пространство

н/д

Android XR: неограниченное ссылочное пространство

Эта функция устанавливает для режима источника отслеживания XRInputSubsystem значение Unbounded . Unbounded указывает, что XRInputSubsystem отслеживает все устройства ввода относительно мировой привязки, которая может меняться.

Режим смешивания окружающей среды

н/д

Режим смешивания окружающей среды

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

Ввод и взаимодействие

Android XR поддерживает мультимодальный естественный ввод.

Помимо отслеживания рук и глаз, также поддерживаются периферийные устройства, такие как контроллеры 6DoF, мышь и физическая клавиатура. Это означает, что приложения для Android XR должны поддерживать взаимодействие с руками, и нельзя предполагать, что все устройства будут поставляться с контроллерами.

Профили взаимодействия

Unity использует профиль взаимодействия для управления взаимодействием вашего приложения XR с различными устройствами и платформами XR. Эти профили определяют ожидаемые входы и выходы для различных конфигураций оборудования, обеспечивая совместимость и согласованную функциональность на различных платформах. Включив профили взаимодействия, вы можете гарантировать, что ваше приложение XR правильно работает с различными устройствами, поддерживает согласованное сопоставление входных данных и имеет доступ к определенным функциям XR. Чтобы установить профиль взаимодействия:

  1. Откройте окно «Настройки проекта» (меню: «Правка» > «Настройки проекта» ).
  2. Нажмите «Управление подключаемыми модулями XR», чтобы развернуть раздел подключаемых модулей (при необходимости).
  3. Выберите OpenXR в списке плагинов XR.
  4. В разделе «Профили взаимодействия» нажмите кнопку «+» , чтобы добавить профиль.
  5. Выберите профиль для добавления из списка.

Взаимодействие рук

Взаимодействие руками ( XR_EXT_hand_interaction ) обеспечивается плагином OpenXR , и вы можете макет устройства в системе ввода Unity, включив профиль Hand Interaction Profile . Используйте этот профиль взаимодействия для ввода вручную, поддерживаемого четырьмя позами действий, определенными OpenXR: «щипок», «тычок», «прицеливание» и «захват». Если вам нужна дополнительная функция взаимодействия с руками или отслеживания рук, обратитесь к разделу XR Hands на этой странице.

Взаимодействие взгляда и взгляда

Взаимодействие взгляда ( XR_EXT_eye_gaze_interaction ) обеспечивается плагином OpenXR, и вы можете использовать этот макет для получения данных о положении глаз (положение и поворот), которые возвращает расширение. Подробнее о взаимодействии взгляда читайте в руководстве по вводу OpenXR .

Взаимодействие с контроллером

Android XR поддерживает профиль контроллера Oculus Touch для контроллеров 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, включите подсистему отслеживания рук и функции Meta Hand Tracking Aim OpenXR .

Пример, показывающий, как включить отслеживание рук

Пакет рук XR может быть полезен, если вам нужны более подробные данные о позе рук или суставах рук или когда вам нужно работать с настраиваемыми жестами.

Более подробную информацию о настройке XR Hands в вашем проекте см. в документации Unity.

Выберите способ рендеринга рук

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 — это высокоуровневая система взаимодействия на основе компонентов для создания возможностей виртуальной и дополненной реальности. Он предоставляет платформу, которая делает взаимодействие 3D и пользовательского интерфейса доступным из событий ввода Unity. Он поддерживает задачи взаимодействия, включая тактильную обратную связь, визуальную обратную связь и передвижение.