В этом руководстве представлен обзор разработки приложений для Android XR с использованием Unity. 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 Extensions for 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 Extensions для 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 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: AR Face
| Android XR: Отслеживание лица
| Поддержка глаз аватара обеспечивается функцией Android XR: AR Face. Доступ к мимике пользователя осуществляется с помощью функции Android XR: Face Tracking. Эти две функции можно использовать совместно. | |
Android XR: AR Raycast
| Н/Д | Эта функция позволяет проецировать луч и вычислять точку пересечения этого луча с плоскостными или глубинными объектами, обнаруженными в физической среде. | |
Android XR: AR Anchor | Android XR (Расширения): Якорь
| Обе функции поддерживают пространственные и плоские якоря; используйте ту или другую. Для постоянных якорей используйте Android XR (Extensions): Anchor. В будущем Android XR (Extensions): Anchor будет удален, и все функции Anchor будут включены в Android XR: AR Anchor. | |
Android XR: Затенение в дополненной реальности
| Н/Д | Функция окклюзии позволяет контенту смешанной реальности в вашем приложении отображаться скрытым или частично скрытым за объектами в физической среде. | |
Показатели эффективности | Показатели производительности Android XR | Н/Д | Используйте эту функцию для доступа к показателям производительности устройств Android XR. |
Поддержка слоя композиции (требуются плагин OpenXR и слой композиции XR). | Android XR: Сквозной слой композиции
| Используйте поддержку слоев композиции Unity для создания базовых слоев композиции (например, четырехугольник, цилиндр, проекция). В Android XR слой композиции Passthrough можно использовать для создания слоя сквозной композиции с пользовательской сеткой, считывающей данные из объекта GameObject Unity. | |
Фовеальная визуализация (требуется плагин OpenXR)
| Фовеация (наследие) | Фовеальный рендеринг позволяет ускорить рендеринг за счет снижения разрешения областей в периферийном зрении пользователя. Функция фовеального рендеринга в Unity поддерживается только для приложений, использующих URP и Vulkan. Функция фовеального рендеринга (устаревшая) в расширениях Android XR для Unity также поддерживает встроенный конвейер рендеринга и OpenGL ES. Мы рекомендуем использовать функцию фовеального рендеринга Unity, когда это возможно, и отмечаем, что при сборке для Android XR рекомендуется использовать как URP, так и Vulkan. | |
Н/Д | Android XR: Неограниченное эталонное пространство | Эта функция устанавливает режим отслеживания XRInputSubsystem в значение Unbounded . Unbounded означает, что XRInputSubsystem отслеживает все InputDevices относительно мировой привязки, которая может изменяться. | |
Н/Д | Режим смешивания окружения | Эта функция позволяет установить режим смешивания XR-среды , который управляет тем, как виртуальные изображения смешиваются с реальной средой при включенной функции сквозной передачи. |
Ввод и взаимодействие
Android XR поддерживает многорежимный естественный ввод.
Помимо отслеживания движений рук и глаз, поддерживаются также периферийные устройства, такие как 6-степенные контроллеры, мышь и физическая клавиатура. Это означает, что приложения для 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 для контроллеров с 6 степенями свободы. Оба профиля предоставляются плагином 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, включите функции OpenXR Hand Tracking Subsystem и Meta Hand Tracking Aim .
Пакет XR Hands может быть полезен, если вам нужны более точные данные о положении или суставах кисти, или когда необходимо работать с пользовательскими жестами.
Для получения более подробной информации см. документацию Unity по настройке XR Hands в вашем проекте.
Достоверные области отслеживания лиц
Расширение XR_ANDROID_face_tracking предоставляет значения достоверности для трех областей лица: верхней левой, верхней правой и нижней части. Эти значения, варьирующиеся от 0 (отсутствие достоверности) до 1 (наивысшая достоверность), указывают на точность отслеживания лица для каждой области.
Вы можете использовать эти значения достоверности для постепенного отключения морфингов или применения визуальных фильтров (например, размытия) к соответствующей области лица. Для базового отключения морфингов в соответствующей области лица.
Нижняя часть лица включает в себя все, что находится под глазами, в том числе рот, подбородок, щеки и нос. Две верхние области включают в себя область глаз и бровей с левой и правой сторон лица.
Следующий фрагмент кода на C# демонстрирует, как получить доступ к данным о степени достоверности и использовать их в скрипте Unity:
using UnityEngine;
using Google.XR.Extensions;
public class FaceTrackingConfidence : MonoBehaviour
{
void Update()
{
if (!XRFaceTrackingFeature.IsFaceTrackingExtensionEnabled.HasValue)
{
DebugTextTopCenter.text = "XrInstance hasn't been initialized.";
return;
}
else if (!XRFaceTrackingFeature.IsFaceTrackingExtensionEnabled.Value)
{
DebugTextTopCenter.text = "XR_ANDROID_face_tracking is not enabled.";
return;
}
for (int x = 0; x < _faceManager.Face.ConfidenceRegions.Length; x++)
{
switch (x)
{
case (int)XRFaceConfidenceRegion.Lower:
regionText = "Bottom";
break;
case (int)XRFaceConfidenceRegion.LeftUpper:
regionText = DebugTextConfidenceLeft;
break;
case (int)XRFaceConfidenceRegion.RightUpper:
regionText = DebugTextConfidenceRight;
break;
}
}
}
Для получения более подробной информации см. документацию по расширениям Android XR для Unity .
Выберите способ изображения рук.
Android XR поддерживает два способа отображения рук: сетку руки и визуализатор префабов.
Ручная сетка
Пакет Android XR Unity содержит функцию Hand Mesh, которая обеспечивает доступ к XR_ANDROID_hand_mesh extension . Функция Hand Mesh предоставляет сетки для рук пользователя. Сетка руки содержит вершины треугольников, которые представляют геометрию руки. Эта функция предназначена для предоставления персонализированной сетки, представляющей реальную геометрию рук пользователя для визуализации.
XR Hands prefab
Пакет XR Hands содержит пример под названием Hands visualizer , который включает в себя полностью анимированные левую и правую руки для рендеринга контекстно-соответствующего изображения рук пользователя.
Системные жесты
В Android XR реализована функция системного жеста для открытия меню, позволяющая пользователям вернуться назад, открыть панель запуска или получить обзор запущенных приложений. Пользователь может активировать это системное меню, используя жест «щипка» доминирующей рукой.
Когда пользователь взаимодействует с системным навигационным меню, приложение реагирует только на события отслеживания движений головы. Пакет XR Hands может определять, когда пользователь выполняет определенные действия, например, взаимодействует с этим системным навигационным меню. Проверка параметров AimFlags , SystemGesture и DominantHand позволяет узнать, когда выполняется это системное действие. Для получения дополнительной информации об AimFlags обратитесь к документации Unity по перечислению MetaAimFlags .
Набор инструментов для взаимодействия с XR
Пакет XR Interaction Toolkit — это высокоуровневая компонентно-ориентированная система взаимодействия для создания VR и AR-приложений. Он предоставляет фреймворк, позволяющий осуществлять 3D-взаимодействие и взаимодействие с пользовательским интерфейсом на основе входных событий Unity. Он поддерживает задачи взаимодействия, включая тактильную обратную связь, визуальную обратную связь и перемещение.
OpenXR™ и логотип OpenXR являются товарными знаками, принадлежащими компании The Khronos Group Inc. и зарегистрированными в качестве товарных знаков в Китае, Европейском Союзе, Японии и Соединенном Королевстве.