Разработка с помощью OpenXR

Поддерживаемые XR-устройства
Это руководство поможет вам создавать продукты для таких XR-устройств.
XR-шлемы
Проводные XR-очки

 

Текстовый логотип OpenXR

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. и зарегистрированными в Великобритании, Европейском союзе, Китае и Японии.