Android XR поддерживает приложения, созданные с помощью OpenXR, благодаря поддержке спецификации OpenXR 1.1 и некоторых расширений поставщиков. OpenXR – это открытый стандарт, который позволяет создавать интерактивный контент с эффектом присутствия, используя общий набор API для широкого спектра XR-устройств.
Функции
Android XR поддерживает функции, которые позволяют создавать приложения, использующие все преимущества уникальных возможностей XR-устройств, с помощью OpenXR. Эти функции включают в себя следующее.
- Фреймворк Spatial Entity
- Единая основа для понимания сцен и пространственного мышления. Позволяет приложениям обнаруживать, запрашивать и отслеживать физические пространственные объекты в среде (включая плоскости, 3D-сетки, ограничивающие рамки, изображения, маркеры и аннотации), фильтровать обнаружение с помощью пространственных границ, запрашивать архетипы объектов, создавать пространственные привязки, прикрепленные к объектам, выполнять пространственные объекты и сетку raycasting, а также сохранять пространственные объекты в сеансах приложения.
- Пространственные контейнеры
- Кросс-платформенный API пространственных окон (
XR_EXT_spatial_containerиXR_EXT_spatial_container_self_rendering), который позволяет приложениям создавать и отображать 3D-контейнеры (как ограниченные, так и иммерсивные) с помощью цепочек буферов OpenXR и слоев композиции. Благодаря этому пользователи могут взаимодействовать с несколькими пространственными контейнерами одновременно. - Геопространственные якоря
- Позволяет приложениям отслеживать позы относительно Земли с помощью сервиса визуального позиционирования (VPS) и GPS от Google, выполнять аутентификацию в сервисах Google Cloud и размещать геопространственные привязки и привязки к поверхности на определенных широтах, долготах и высотах.
- Отслеживаемые объекты
- Поддерживает распознавание плоскостей – способность идентифицировать и отслеживать плоские поверхности в окружающей среде, что позволяет размещать виртуальные объекты относительно реального мира, и якоря – виртуальные опорные точки, которые можно прикреплять к объектам или местам реального мира, чтобы виртуальный контент оставался точно позиционированным и ориентированным, даже когда пользователь перемещается.
- Трассировка лучей
- Метод, используемый для определения точки пересечения виртуального луча с объектами или сетками мира в сцене. Он упрощает взаимодействие, например выбор виртуальных элементов и манипулирование ими.
- Сохранение якорей
- Возможность сохранять и восстанавливать привязки в разных сеансах, что позволяет размещать виртуальный контент в среде на постоянной основе.
- Отслеживание объектов
- Возможность отслеживать мышь, клавиатуру и другие физические объекты в реальном мире.
- Отслеживание изображений и маркеров
- Возможность обнаруживать и отслеживать плоские референсные изображения и физические маркеры (например, AprilTags и ArUco) в окружающей среде.
- Отслеживание QR-кодов
- Возможность отслеживать QR-коды в физической среде и декодировать их данные.
- Текстуры глубины
- Генерировать карты глубины, которые содержат информацию о расстоянии между камерой и объектами в сцене. Это позволяет создавать более реалистичные эффекты окклюзии и взаимодействия.
- Прозрачная
- Возможность объединять видео с камеры и виртуальный контент, создавая смешанную реальность, в которой физический и цифровой миры плавно переходят друг в друга.
- Глобальное затемнение в прозрачном режиме
- Позволяет приложениям задавать и запрашивать глобальный уровень затемнения сквозной передачи, чтобы смешивать виртуальный контент с физической средой, и получать события при изменении уровня затемнения.
- Растушевка области просмотра
- Показывает размытую область по периметру, применяемую средой выполнения, чтобы приложения могли размещать элементы интерфейса в безопасной области, не затронутой размытием.
- Создание сетки сцены
- Возможность получить 3D-сетку окружения, которую можно использовать для физики, окклюзии и других взаимодействий с учетом мира.
- Сквозная передача композиционного слоя
- Позволяет вырезать многоугольник из сквозного композиционного слоя. Это можно использовать, чтобы добавлять в сцену объекты из реального мира.
- Отслеживание лиц
- Возможность отслеживать черты лица пользователя по визуальным и аудиоданным, чтобы создавать более реалистичные и выразительные аватары и виртуальных персонажей.
- Отслеживание взгляда
- Предоставляет данные о положении и направлении взгляда пользователя, чтобы сделать взгляд аватара более реалистичным.
- Отслеживание рук
- Возможность отслеживать положение и движение рук пользователя.
- Сетка руки
- Точное представление рук пользователя в виде низкополигональной сетки. Оптимизировано для доставки с платформы в приложение, чтобы обеспечить максимальную производительность. Это альтернатива другим расширениям, в которых используются поза привязки и веса смешивания.
- Движения тела
- Оценивает положение и пропорции суставов пользователя на основе данных отслеживания головы и рук.
- Оценка освещенности
- Используется для моделей освещения (включая направленное, окружающее, сферические гармоники и освещение кубической карты), чтобы соответствовать реальным условиям освещения пользователя.
Поддерживаемые устройства ввода
Android XR также поддерживает следующие устройства ввода.
- Взаимодействие с помощью рук
- Распознавание определенных жестов, таких как сведение пальцев, смахивание и указание, что позволяет пользователям взаимодействовать с виртуальными объектами с помощью жестов и движений рук.
- Взаимодействие с помощью отслеживания глаз
- Возможность отслеживать движения глаз пользователя, чтобы он мог выбирать виртуальные объекты и взаимодействовать с ними с помощью взгляда.
- Контроллеры движения с шестью степенями свободы
- Возможность отслеживать положение и перемещение контроллеров, а также привязывать кнопки и крестовину к действиям или событиям наведения в приложении.
- Взаимодействие с мышью
- Возможность взаимодействовать с объектами в трехмерном пространстве с помощью указателя мыши.
Поддерживаемые функции для повышения эффективности
Android XR поддерживает следующие функции, связанные с производительностью.
- Фовеация с отслеживанием взгляда
- Приложение сможет показывать контент в более высоком разрешении только в точке фокусировки взгляда.
- Искривление пространства
- Использует векторы скорости и информацию о текстуре глубины для создания промежуточных кадров, что эффективно повышает частоту кадров, необходимую для погружения пользователей в ваш контент.
- Синтез кадров
- Использует векторы движения и данные кадров, предоставленные приложением, для синтеза промежуточных кадров, что повышает плавность изображения и частоту кадров.
- Показатели эффективности
- Предоставляет показатели производительности Android XR во время работы текущего устройства XR, компоновщика и приложения XR. Сюда входит время формирования кадра ЦП и графическим процессором, использование графического процессора, частота ЦП, количество кадров в секунду и другие данные.
Полный список поддерживаемых функций и расширений можно найти в обзоре функций OpenXR.
Поддерживаемые системы
Для разработки OpenXR с Android XR поддерживаются следующие движки.
Unity
Поддержка Unity в Android XR, основанная на OpenXR, позволяет разработчикам создавать контент с помощью Unity 6. Подробнее о том, как создавать XR-приложения с помощью Unity, рассказывается в обзоре Unity.
Unreal Engine
Unreal Engine поддерживает Android XR через стандарт OpenXR, что позволяет использовать стандартные инструменты и рабочие процессы в Unreal Engine 5. Подробнее о создании XR-приложений с помощью Unreal Engine рассказывается в обзоре Unreal Engine.
Godot
Godot поддерживает Android XR благодаря интеграции с OpenXR, что позволяет создавать и экспортировать приложения XR для Android, используя стандартный рабочий процесс Godot. Подробнее о том, как создавать XR-приложения с помощью Godot, рассказывается в обзоре Godot.
OpenXR™ и логотип OpenXR являются товарными знаками, принадлежащими The Khronos Group Inc. и зарегистрированными в Великобритании, Европейском союзе, Китае и Японии.