Создавайте приложения с поддерживаемыми расширениями OpenXR

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

Android XR поддерживает OpenXR через спецификацию OpenXR 1.1 и длинный список расширений сторонних поставщиков. Используя эти расширения, вы получаете привычный опыт при разработке для XR. Для некоторых из этих возможностей требуются динамические разрешения Android. Если вы хотите создавать приложения непосредственно на основе OpenXR API, нужные заголовочные файлы можно найти в репозитории jetpack-xr-natives.

Расширения поставщика Android XR

Название расширения

Описание

Версия Spatial API

XR_ANDROID_anchor_sharing_export

Якоря, созданные приложением с помощью XR_ANDROID_trackables, XR_EXT_spatial_anchor и XR_ANDROID_spatial_anchor_space, привязаны к определенному сеансу и поэтому не видны другим приложениям. Это расширение позволяет приложениям делиться привязками с другими запущенными приложениями.

Разрешения: SCENE_UNDERSTANDING_COARSE.

v1

XR_ANDROID_body_tracking

Использует инверсную кинематику для определения положения тела на основе положения головы и рук.

Разрешения: BODY_TRACKING.

Версия 2

XR_ANDROID_composition_layer_passthrough_mesh

Для устройств, поддерживающих несколько режимов смешивания.

Разрешения: SCENE_UNDERSTANDING_COARSE.

v1

XR_ANDROID_depth_texture

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

Разрешения: SCENE_UNDERSTANDING_FINE.

v1

XR_ANDROID_device_anchor_persistence

Это расширение позволяет приложению сохраняться.

Разрешения: SCENE_UNDERSTANDING_COARSE.

v1

XR_ANDROID_enumerate_system_extension_properties

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

Версия 3

XR_ANDROID_eye_tracking

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

Разрешения: EYE_TRACKING_FINE.

v1

XR_ANDROID_face_tracking

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

Разрешения: FACE_TRACKING.

v1

XR_ANDROID_face_tracking_data_source

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

Разрешения: FACE_TRACKING, RECORD_AUDIO.

Версия 3

XR_ANDROID_geospatial

Это расширение обеспечивает геопространственное отслеживание для Google Geospatial API.

Разрешения: ACCESS_FINE_LOCATION.

Версия 4

XR_ANDROID_geospatial_anchor

Это расширение предоставляет геопространственные и наземные привязки, которые размещаются в пространстве относительно Земли на заданной широте, долготе и высоте.

Разрешения: ACCESS_FINE_LOCATION.

Версия 4

XR_ANDROID_global_passthrough_dimming

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

Версия 4

XR_ANDROID_google_cloud_auth

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

Версия 4

XR_ANDROID_hand_mesh

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

Разрешения: HAND_TRACKING.

v1

XR_ANDROID_light_estimation

Это расширение позволяет приложению запрашивать данные об освещении в реальном мире вокруг гарнитуры.

Разрешения: SCENE_UNDERSTANDING_COARSE.

v1

XR_ANDROID_light_estimation_cubemap

Оно основано на базовом расширении XR_ANDROID_light_estimation.

Разрешения: SCENE_UNDERSTANDING_FINE.

Версия 3

XR_ANDROID_mouse_interaction

Это расширение предоставляет XrPath для получения данных от мыши и определяет одну часто используемую позу действия для профилей мыши пользователя, включая как мыши, так и сенсорные панели.

v1

XR_ANDROID_passthrough_camera_state

Сквозной камере может потребоваться время на запуск, поэтому она может быть доступна не сразу.

v1

XR_ANDROID_performance_metrics

Это расширение предоставляет API для перечисления и запроса различных счетчиков показателей эффективности текущего XR-устройства.

v1

XR_ANDROID_raycast

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

Разрешения: SCENE_UNDERSTANDING_COARSE.

v1

XR_ANDROID_recommended_resolution

Это расширение позволяет среде выполнения уведомлять приложение об изменении рекомендуемого разрешения.

v1

XR_ANDROID_recommended_settings

Среда пользователя по умолчанию может находиться в различных состояниях, которые определяются сочетанием режима смешивания и модальности ввода.

v1

XR_ANDROID_scene_meshing

Это расширение предназначено для предоставления сеток, которые приблизительно представляют физические объекты в среде пользователя.

Разрешения: SCENE_UNDERSTANDING_FINE.

v1

XR_ANDROID_spatial_anchor_space

Функция xrCreateSpatialAnchorEXT, определенная в расширении XR_EXT_spatial_anchor, позволяет приложениям создавать пространственные привязки с дескриптором XrSpatialEntityEXT.

В отличие от него, это расширение создает пространственный якорь, который представлен дескриптором XrSpace.

Разрешения: SCENE_UNDERSTANDING_COARSE.

Версия 3

XR_ANDROID_spatial_annotation_tracking

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

Разрешения: SCENE_UNDERSTANDING_FINE.

Версия 3

XR_ANDROID_spatial_component_subsumed_by

Это расширение основано на XR_EXT_spatial_entity и предоставляет новый компонент для XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT, чтобы показать XrSpatialEntityIdEXT, который включает текущий объект.

Разрешения: SCENE_UNDERSTANDING_COARSE.

Версия 3

XR_ANDROID_spatial_discovery_bounds

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

Разрешения: SCENE_UNDERSTANDING_COARSE.

Версия 4

XR_ANDROID_spatial_discovery_raycast

Это расширение основано на XR_EXT_spatial_entity и предоставляет функцию трассировки лучей для существующих пространственных возможностей.

Разрешения: SCENE_UNDERSTANDING_FINE.

Версия 3

XR_ANDROID_spatial_entity_bound_anchor

Это расширение позволяет приложениям создавать и прикреплять привязки к пространственным объектам.

Разрешения: SCENE_UNDERSTANDING_COARSE.

Версия 3

XR_ANDROID_spatial_object_tracking

Это расширение основано на XR_EXT_spatial_entity и определяет пространственную возможность отслеживания набора предопределенных физических объектов без необходимости ввода набора данных из приложения.

Разрешения: SCENE_UNDERSTANDING_COARSE.

Версия 3

XR_ANDROID_trackables

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

Разрешения: SCENE_UNDERSTANDING_COARSE.

v1

XR_ANDROID_trackables_image

Это расширение позволяет отслеживать плоские изображения, заданные наборами входных референсных изображений.

Разрешения: SCENE_UNDERSTANDING_COARSE.

Версия 3

XR_ANDROID_trackables_marker

Это расширение позволяет отслеживать физические маркеры.

Разрешения: SCENE_UNDERSTANDING_COARSE.

v1

XR_ANDROID_trackables_object

Это расширение позволяет отслеживать физические объекты.

Разрешения: SCENE_UNDERSTANDING_COARSE.

v1

XR_ANDROID_trackables_qr_code

Это расширение позволяет отслеживать физические QR-коды и декодировать данные QR-кодов.

Разрешения: SCENE_UNDERSTANDING_COARSE.

v1

XR_ANDROID_unbounded_reference_space

Это расширение позволяет приложениям создавать опорное пространство XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID.

v1

XR_ANDROID_viewport_feathering

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

Версия 4

Сторонние расширения

Название расширения

Описание

Версия Spatial API

XR_MND_headless

Некоторым приложениям может потребоваться доступ к устройствам взаимодействия XR без показа изображений на дисплее или дисплеях.

v1

XR_KHR_binding_modification

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

v1

XR_EXT_debug_utils

Из-за особенностей интерфейса OpenXR разработчику и приложению доступно очень мало информации об ошибках.

v1

XR_EXT_hand_tracking

Это расширение позволяет приложениям определять отдельные суставы при отслеживании рук.

Разрешения: HAND_TRACKING.

v1

XR_EXT_performance_settings

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

v1

XR_FB_display_refresh_rate

На платформах, которые поддерживают динамическую настройку частоты обновления экрана.

v1

XR_FB_swapchain_update_state

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

v1

XR_FB_foveation

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

v1

XR_FB_foveation_configuration

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

v1

XR_FB_foveation_vulkan

Для применения шаблона фовеации графическому API Vulkan требуется изображение, которое будет применено к цепочке буферов.

v1

XR_FB_space_warp

Это расширение позволяет включить в приложении технологию Space Warp.

v1

XR_KHR_opengl_es_enable

Это расширение должно предоставляться средами выполнения, поддерживающими приложения, которые используют API OpenGL ES для рендеринга.

v1

XR_KHR_android_create_instance

Когда приложение создает объект XrInstance в системе Android.

v1

XR_KHR_android_surface_swapchain

Просмотр потока изображений – распространенное действие в XR.

v1

XR_KHR_android_thread_settings

Чтобы пользователю было комфортно в расширенной реальности, приложения должны быстро и стабильно передавать кадры.

v1

XR_KHR_composition_layer_color_scale_bias

Цветовая шкала и смещение применяются к цвету слоя во время композиции после его преобразования в предварительно умноженное альфа-представление.

v1

XR_KHR_composition_layer_cube

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

v1

XR_KHR_composition_layer_cylinder

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

v1

XR_KHR_composition_layer_depth

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

v1

XR_KHR_composition_layer_equirect

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

v1

XR_KHR_composition_layer_equirect2

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

В этом расширении используется другая параметризация, которая больше соответствует формуле XR_KHR_composition_layer_cylinder, но функционально эквивалентна XR_KHR_composition_layer_equirect.

v1

XR_KHR_convert_timespec_time

Это расширение предоставляет две функции для преобразования монотонного времени timespec в XrTime и наоборот.

v1

XR_KHR_vulkan_enable

Это расширение позволяет использовать Vulkan Graphics API в среде выполнения OpenXR.

v1

XR_KHR_vulkan_enable2

Это расширение позволяет использовать Vulkan Graphics API в среде выполнения OpenXR.

v1

XR_KHR_loader_init

На некоторых платформах перед загрузкой необходимо инициализировать загрузчик с параметрами, зависящими от платформы.

v1

XR_KHR_loader_init_android

В некоторых реализациях загрузчика на Android при инициализации требуется предоставить дополнительную информацию.

v1

XR_KHR_swapchain_usage_input_attachment_bit

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

v1

XR_EXT_dpad_binding

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

v1

XR_EXT_uuid

Это расширение определяет универсальный уникальный идентификатор, соответствующий RFC 4122.

v1

XR_FB_composition_layer_depth_test

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

v1

XR_EXT_eye_gaze_interaction

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

Разрешения: EYE_TRACKING_FINE.

v1

XR_EXT_hand_interaction

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

v1

XR_KHR_visibility_mask

Это расширение позволяет приложениям использовать маску рисования для каждого представления.

v1

XR_META_foveation_eye_tracked

При фовеальной отрисовке с отслеживанием взгляда плотность пикселей на периферии поля зрения пользователя снижается.

Разрешения: EYE_TRACKING_FINE.

v1

XR_FB_hand_tracking_aim

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

Разрешения: HAND_TRACKING.

v1

XR_EXT_palm_pose

Это расширение определяет новый стандартный идентификатор позы для профилей взаимодействия, который называется palm_ext.

v1

XR_VARJO_foveated_rendering

Очки Varjo обеспечивают очень высокую плотность пикселей в центре экрана.

Разрешения: EYE_TRACKING_FINE.

v1

XR_VARJO_quad_views

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

v1

XR_META_vulkan_swapchain_create_info

С помощью этого расширения приложение на основе Vulkan может передавать дополнительные VkImageCreateFlags или VkImageUsageFlags, связывая структуру XrVulkanSwapchainCreateInfoMETA с XrSwapchainCreateInfo при вызове xrCreateSwapchain.

v1

XR_FB_hand_tracking_mesh

Расширение XR_EXT_hand_tracking предоставляет список поз суставов рук, но не механизм для рендеринга сетки руки со скином.

Разрешения: HAND_TRACKING.

v1

XR_FB_composition_layer_image_layout

Это расширение не определяет новый тип слоя композиции.

v1

XR_KHR_maintenance1

XR_KHR_maintenance1 добавляет набор незначительных функций, которые были намеренно исключены или упущены из исходного выпуска OpenXR 1.0.

v1

XR_FB_composition_layer_settings

Это расширение позволяет приложениям запрашивать использование параметров обработки, таких как повышение резкости или суперсемплинг, на слое композиции.

v1

XR_KHR_locate_spaces

Это расширение добавляет функцию xrLocateSpacesKHR.

v1

XR_EXT_local_floor

Основная спецификация OpenXR содержит два типа XrSpace опорного пространства с привязкой к миру в XrReferenceSpaceType.

v1

XR_EXT_spatial_marker_tracking

Это расширение основано на XR_EXT_spatial_entity и позволяет приложениям обнаруживать и отслеживать маркеры в окружающей среде.

Разрешения: SCENE_UNDERSTANDING_COARSE.

v1

XR_EXT_spatial_persistence

Это расширение позволяет приложениям обнаруживать и сопоставлять пространственные объекты в разных сеансах.

Разрешения: SCENE_UNDERSTANDING_COARSE.

v1

XR_EXT_spatial_anchor

Это расширение основано на XR_EXT_spatial_entity и позволяет приложениям создавать пространственные привязки.

Разрешения: SCENE_UNDERSTANDING_COARSE.

v1

XR_EXT_spatial_plane_tracking

Это расширение основано на XR_EXT_spatial_entity и определяет пространственную возможность отслеживания плоскости для фреймворка пространственных объектов.

Разрешения: SCENE_UNDERSTANDING_COARSE.

v1

XR_EXT_spatial_entity

Это расширение содержит концепции и основы для распознавания сцен и пространственного мышления в OpenXR.

v1

XR_EXT_future

В системах расширенной реальности некоторые операции выполняются долго и не могут быть завершены в рамках обычного цикла кадров.

v1

XR_FB_color_space

XR-устройства могут использовать цветовое пространство, отличное от многих мониторов, используемых при разработке.

v1

XR_EXT_composition_layer_inverted_alpha

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

v1

XR_EXT_spatial_entity_archetypes

Функция xrQuerySpatialComponentDataEXT позволяет приложениям запрашивать данные об объектах и компонентах с помощью фильтра типов компонентов, которые должны присутствовать в объекте. Это расширение вводит концепцию архетипов (уникальных комбинаций компонентов), чтобы приложения могли считывать все данные компонентов для всех объектов без дублирования.

Версия 4

XR_EXT_frame_synthesis

Это расширение позволяет включить синтез кадров в приложениях на основе дополнительных данных, предоставляемых приложением.

Версия 3

XR_QCOM_trackables_image_operations

Предоставляет операции отслеживания изображений Qualcomm для отслеживаемых объектов.

Версия 3

XR_QCOM_trackables_qr_code_operations

Предоставляет операции отслеживания QR-кодов Qualcomm для отслеживаемых объектов.

Версия 3

XR_EXT_user_presence

Это расширение добавляет новое событие, которое сообщает, что система обнаружила изменение статуса пользователя.

Версия 3

XR_KHR_extended_struct_name_lengths

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

Версия 3

XR_EXT_hand_tracking_data_source

Это расширение дополняет расширение XR_EXT_hand_tracking.

Версия 4

XR_EXT_spatial_container_self_rendering

Это расширение описывает "самостоятельный рендеринг" в контексте пространственных контейнеров.

Версия 4

XR_EXT_spatial_container

Это расширение определяет новый класс отображаемых объектов.

Версия 4

XR_EXT_spatial_persistence_operations

Это расширение позволяет приложениям сохранять и удалять пространственные объекты в разных сеансах.

Разрешения: SCENE_UNDERSTANDING_COARSE.

v1

XR_EXT_spatial_mesh_tracking

Это расширение основано на XR_EXT_spatial_entity и определяет пространственные возможности для отслеживания треугольной сетки среды.

Разрешения: SCENE_UNDERSTANDING_COARSE.

Версия 4

XR_EXT_spatial_object_tracking

Это расширение основано на XR_EXT_spatial_entity и определяет пространственную возможность для отслеживания набора предопределенных объектов без необходимости ввода набора данных из приложения.

Разрешения: SCENE_UNDERSTANDING_COARSE.

Версия 4

XR_EXT_spatial_image_tracking

Это расширение позволяет отслеживать изображения для расширения XR_EXT_spatial_entity.

Разрешения: SCENE_UNDERSTANDING_COARSE.

Версия 4

XR_EXT_interaction_profile_battery_state_display

XR_EXT_interaction_profile_battery_state_display предоставляет приложениям механизм для запроса у среды выполнения информации о состоянии батареи устройств, используемых с профилями взаимодействия.

Версия 3

XR_FB_composition_layer_secure_content

Это расширение не определяет новый тип слоя композиции.

Версия 4


OpenXR™ и логотип OpenXR являются товарными знаками, принадлежащими The Khronos Group Inc. и зарегистрированными в Великобритании, Европейском союзе, Китае и Японии.