В этом руководстве представлен обзор разработки с помощью 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 содержит информацию о:
- Плагины поставщика 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, которые можно включить с помощью пакета Unity XR Plug-in Management. Менеджер подключаемых модулей 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 предназначен для разработчиков, которые хотят создавать приложения 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 | Варианты использования и ожидаемое поведение |
---|---|---|---|
Android XR: сеанс дополненной реальности
| Android XR (расширения): управление сеансами
| Чтобы использовать функции любого пакета, необходимо включить функцию сеанса 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
| 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: Passthrough Composition Layer можно использовать для создания сквозного слоя с пользовательской сеткой, считывающей данные из Unity GameObject . | |
Фовеатный рендеринг (требуется плагин OpenXR)
| Фовация (Наследие) | Foveated рендеринг позволяет ускорить рендеринг за счет снижения разрешения областей в периферийном зрении пользователя. Функция фовеатного рендеринга Unity поддерживается только для приложений, использующих URP и Vulkan. Функция Foveation (Legacy) в расширениях 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 , и вы можете
Взаимодействие взгляда и взгляда
Взаимодействие взгляда ( 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. Он поддерживает задачи взаимодействия, включая тактильную обратную связь, визуальную обратную связь и передвижение.
,В этом руководстве представлен обзор разработки с помощью 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 содержит информацию о:
- Плагины поставщика 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, которые можно включить с помощью пакета Unity XR Plug-in Management. Менеджер подключаемых модулей 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 предназначен для разработчиков, которые хотят создавать приложения 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 | Варианты использования и ожидаемое поведение |
---|---|---|---|
Android XR: сеанс дополненной реальности
| Android XR (расширения): управление сеансами
| Чтобы использовать функции любого пакета, необходимо включить функцию сеанса 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
| 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: Passthrough Composition Layer можно использовать для создания сквозного слоя с пользовательской сеткой, считывающей данные из Unity GameObject . | |
Фовеатный рендеринг (требуется плагин OpenXR)
| Фовация (Наследие) | Foveated рендеринг позволяет ускорить рендеринг за счет снижения разрешения областей в периферийном зрении пользователя. Функция фовеатного рендеринга Unity поддерживается только для приложений, использующих URP и Vulkan. Функция Foveation (Legacy) в расширениях 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 , и вы можете
Взаимодействие взгляда и взгляда
Взаимодействие взгляда ( 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. Он поддерживает задачи взаимодействия, включая тактильную обратную связь, визуальную обратную связь и передвижение.
,В этом руководстве представлен обзор разработки с помощью 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 содержит информацию о:
- Плагины поставщика 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, которые можно включить с помощью пакета Unity XR Plug-in Management. Менеджер подключаемых модулей 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 предназначен для разработчиков, которые хотят создать опыт AR или смешанной реальности. Он предоставляет интерфейс для функций AR, но не реализует какие -либо функции. Пакет Unity OpenXR Android XR предоставляет реализацию. Чтобы начать с этого пакета, просмотрите руководство по пакетированию, которое содержит руководство по началу работы.
Расширения Android XR для Unity
Расширения Android XR для Unity дополняют пакет Unity OpenXR Android XR, и он включает в себя дополнительные функции, которые помогут вам создать захватывающий опыт. Его можно использовать в одиночку или вместе с пакетом Unity OpenXR Android XR.
Чтобы начать работу с этим пакетом, следуйте нашему руководству по настройке проектов или QuickStart для импорта расширений Android XR для Unity .
Особенности и соображения совместимости
В следующей таблице описываются функции, поддерживаемые пакетом Unity OpenXR: Android XR и пакетом Android XR для Unity, и его можно использовать для определения того, какой пакет содержит необходимые функции, и любые соображения совместимости.
Особенность | Unity OpenXR: Android XR String String | Android XR расширения для единичной строки функции | Варианты использования и ожидаемое поведение |
---|---|---|---|
Android XR: AR Session
| Android XR (расширения): управление сеансами
| Чтобы использовать функции из любого пакета, вы должны включить функцию сеанса AR для этого пакета. Вы можете включить оба набора функций одновременно; Индивидуальные функции будут справляться с конфликтами соответственно. | |
н/д | н/д | Отслеживание устройства используется для отслеживания положения и вращения устройства в физическом пространстве. Xr Origin GameObject автоматически обрабатывает отслеживание и преобразование устройств в систему координат Unity с помощью компонента xrorigin и иерархии GameObject с помощью камеры и TrackedPosedRiver . | |
Android XR: AR Camera | н/д | Эта функция обеспечивает поддержку оценки света и полноэкранного прохождения. | |
Android XR: AR Плана | Android XR (расширения): плоскость | Эти две особенности идентичны; Используйте один или другой. Android XR (расширения): плоскость включена таким образом, чтобы разработчики могли использовать Android XR (расширения): отслеживание объектов и постоянные якоря функции без необходимости зависимости от Unity OpenXR Android XR. В будущем Android XR (расширения): плоскость будет удалена в пользу Android XR: AR Anchor. | |
н/д | Android XR (расширения): отслеживание объектов | Эта функция обеспечивает поддержку для обнаружения и отслеживания объектов в физической среде, используемой в сочетании с библиотекой эталонных объектов. | |
Android XR: AR Face
| Android XR: отслеживание лица
| Поддержка Avatar Eyes предоставляется через функцию Android XR: AR Face. Доступ к выражению лица пользователя через функцию Android XR: отслеживание лица. Эти две функции могут быть использованы вместе, при желании. | |
Android XR: Ar Raycast
| н/д | Эта функция позволяет вам разыграть луч и рассчитать пересечение между этими лучами и плоскостью или отслеживаниями глубины, которые обнаруживаются в физической среде. | |
Android XR: AR Anchor | Android XR (расширения): якорь
| Обе функции включают в себя поддержку пространственных якорей и самолетов; Используйте ту или иную функцию. Для постоянных якорей используйте Android XR (расширения): якорь. В будущем Android XR (расширения): якорь будет удален, и все якоря будут быть в Android XR: AR Anchor. | |
Android XR: AR окклюзия
| н/д | Окклюзия позволяет контенту смешанной реальности в вашем приложении выглядеть скрытым или частично скрытым за объектами в физической среде. | |
Показатели производительности | Метрики Android XR Performance | н/д | Используйте эту функцию для доступа к показателям производительности для устройств Android XR. |
Поддержка композиции (плагин OpenXR и xr состав требует) требуется) | Android xr: проходной композиционный слой
| Используйте поддержку уровня композиции Unity для создания основных слоев композиции (например, Quad, цилиндр, проекция). Android XR: слой композиции PassThorough может использоваться для создания прохождения слоя с помощью пользовательской сетки, чтения из GameObject Unity. | |
Foveated рендеринг (требуется плагин OpenXR)
| Фовиация (наследие) | Пекациональный рендеринг позволяет ускорить рендеринг путем снижения разрешения областей в периферийном зрении пользователя. Функция рендеринга Unity Foveated поддерживается только для приложений с использованием URP и Vulkan. Функция Fovation (Legacy) в расширениях Android XR для Unity также поддерживает встроенный рендеринг и OpenGL ES. Мы рекомендуем использовать функцию рендеринга Unity, когда это возможно, и отметим, что при строительстве для Android XR рекомендуется как URP, так и вулкан. | |
н/д | Android XR: неограниченное справочное пространство | Эта функция устанавливает режим отслеживания xrinptsubsystem для неограниченного . Unbounded указывает, что XrinputSubSystem отслеживает все входные данные по отношению к мировому якору, который может измениться. | |
н/д | Режим смешивания среды | Эта функция позволяет установить режим смешивания среды 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 для контроллеров 6DOF. Оба эти профиля предоставляются плагином OpenXR.
Мышиное взаимодействие
Профиль взаимодействия мыши Android XR ( XR_ANDROID_mouse_interaction
) предоставляется расширениями Android XR для Unity. Он обнажает макет устройства <AndroidXRMouse>
в системе ввода Unity .
Взаимодействие Palm Pose
Плагин OpenXR обеспечивает поддержку взаимодействия Palm Pose ( XR_EXT_palm_pose
), которое обнажает макет <PalmPose>
в системе ввода Unity . Поза Palm не предназначена для того, чтобы быть альтернативой расширениям или пакетам, которые выполняют отслеживание рук для более сложных вариантов использования; Вместо этого его можно использовать для размещения визуального контента для конкретного приложения, такого как визуальные эффекты аватара. Поза ладонь состоит как из положения ладонь, так и из ориентации.
Xr руки
Пакет xr Hands позволяет получить доступ к данным отслеживания рук ( XR_EXT_hand_tracking
и XR_FB_hand_tracking_aim
) и обеспечивает обертку для преобразования данных ручного соединения из ручного отслеживания в позы ввода. Чтобы использовать функции, предоставляемые пакетом Hard Hands, включите подсистему для отслеживания рук и Meta Hand Laking AIM OpenXR .
Пакет xr Hands может быть полезен, если вам нужно больше гранулированной позы рук или ручных соединений или когда вам нужно работать с пользовательскими жестами.
Для получения более подробной информации см. Документацию Unity для настройки рук XR в вашем проекте
Выберите способ отобрать руки
Android XR поддерживает два способа рендеринга рук: ручная сетка и визуализатор Prefab.
Ручная сетка
Пакет Android XR Unity содержит функцию ручной сетки, которая обеспечивает доступ к XR_ANDROID_hand_mesh extension
. Функция ручной сетки предоставляет сетки для рук пользователя. Ручная сетка содержит вершины треугольников, которые представляют геометрию руки. Эта функция предназначена для использования для обеспечения персонализированной сетки, представляющей реальную геометрию рук пользователя для визуализации.
Xr руки Prefab
Пакет xr Hands содержит образец визуализатора под названием «Руки» , который содержит полностью сфальсифицированные левые и правые руки для того, чтобы отобразить контекстное представление рук пользователя.
Системные жесты
Android XR включает в себя системный жест, чтобы открыть меню для пользователей, чтобы вернуться назад, открыть пусковую установку или получить обзор в настоящее время запущенных приложений. Пользователь может активировать это системное меню, используя доминирующую руку.
Когда пользователь взаимодействует с меню системной навигации, приложение будет отвечать только на события отслеживания голов. Пакет xr Hands может обнаружить, когда пользователь выполняет конкретные действия, такие как взаимодействие с этим меню навигации системы. Проверка на Aimflags SystemGesture и DominanThand даст вам знать, когда будет выполнено это системное действие. Для получения дополнительной информации о AIMFLAGS см. В документации Unity Metaaimflags .
Xr взаимодействие инструментарий
Пакет инструментов для взаимодействия XR представляет собой высокоуровневую систему взаимодействия на основе компонентов для создания виртуальной и AR. Он обеспечивает структуру, которая предоставляет 3D и пользовательские взаимодействия доступными от событий ввода Unity. Он поддерживает задачи взаимодействия, включая тактичную обратную связь, визуальную обратную связь и локомоцию.