Créer des applications avec des extensions OpenXR compatibles

Appareils XR concernés
Ces conseils vous aideront à créer des expériences pour ces types d'appareils XR.
Casques XR
Lunettes XR filaires

Android XR est compatible avec OpenXR via la spécification OpenXR 1.1 et une longue liste d'extensions de fournisseurs tiers. Ces extensions vous offrent une expérience familière lorsque vous développez pour XR. Certaines de ces fonctionnalités nécessitent des autorisations d'exécution Android. Si vous souhaitez créer directement des applications sur les API OpenXR, vous trouverez les fichiers d'en-tête requis dans le dépôt jetpack-xr-natives.

Extensions de fournisseur Android XR

Nom d'extension

Description

Version de l'API Spatial

XR_ANDROID_anchor_sharing_export

Les ancres créées par une application via XR_ANDROID_trackables, XR_EXT_spatial_anchor et XR_ANDROID_spatial_anchor_space sont liées à une session spécifique et ne sont donc pas visibles par les autres applications. Cette extension permet aux applications de partager des ancres avec d'autres applications en cours d'exécution.

v1

XR_ANDROID_body_tracking

Utilise l'IK pour déterminer la position du corps en fonction de la position de la tête et des mains.

Autorisations : Body Tracking

v2

XR_ANDROID_composition_layer_passthrough_mesh

Pour les appareils compatibles avec plusieurs modes de fusion de l'environnement.

Autorisations : SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_depth_texture

Cette extension permet à l'application de demander des cartes de profondeur de l'environnement réel autour du casque et d'interroger les résolutions de profondeur compatibles lors de la création.

Autorisations : SCENE_UNDERSTANDING_FINE

v1

XR_ANDROID_device_anchor_persistence

Cette extension permet à l'application de persister.

Autorisations : SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_enumerate_system_extension_properties

Cette extension permet aux applications de déterminer quelles extensions sont compatibles avec la configuration système actuelle.

v3

XR_ANDROID_eye_tracking

Cette extension permet aux applications d'obtenir la position et l'orientation des yeux de l'utilisateur, ainsi que l'état du suivi oculaire.

Autorisations : EYE_TRACKING_FINE

v1

XR_ANDROID_face_tracking

Cette extension permet aux applications d'obtenir les pondérations des formes de mélange et d'afficher les expressions faciales dans les expériences XR.

Autorisations : FACE_TRACKING

v1

XR_ANDROID_face_tracking_data_source

Cette extension permet aux applications d'obtenir des données de suivi du visage à partir de plusieurs sources de données.

Autorisations : FACE_TRACKING, RECORD_AUDIO

v3

XR_ANDROID_hand_mesh

Cette extension permet d'utiliser les entrées de suivi des mains représentées sous la forme d'un maillage dynamique des mains.

Autorisations : HAND_TRACKING

v1

XR_ANDROID_light_estimation

Cette extension permet à l'application de demander des données représentant l'éclairage de l'environnement réel autour du casque.

Autorisations : SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_light_estimation_cubemap

Cette extension s'appuie sur l'extension XR_ANDROID_light_estimation de base.

Autorisations : SCENE_UNDERSTANDING_FINE

v3

XR_ANDROID_mouse_interaction

Cette extension fournit un XrPath pour obtenir l'entrée de la souris et définit une pose d'action couramment utilisée pour les profils de souris utilisateur, y compris les souris et les pavés tactiles.

v1

XR_ANDROID_passthrough_camera_state

Le démarrage de la caméra de transmission peut prendre du temps et elle peut ne pas être immédiatement disponible.

v1

XR_ANDROID_performance_metrics

Cette extension fournit des API permettant d'énumérer et d'interroger différents compteurs de métriques de performances de l'appareil XR actuel.

v1

XR_ANDROID_raycast

Cette extension permet à l'application d'effectuer des raycasts sur les éléments détectables de l'environnement.

Autorisations : SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_recommended_resolution

Cette extension permet au runtime d'informer l'application lorsque la résolution recommandée change.

v1

XR_ANDROID_recommended_settings

L'environnement par défaut de l'utilisateur peut se trouver dans différents états en combinant un mode de fusion et une modalité d'entrée.

v1

XR_ANDROID_scene_meshing

Cette extension est destinée à fournir des maillages qui représentent approximativement les objets physiques dans l'environnement de l'utilisateur.

v1

XR_ANDROID_spatial_anchor_space

La fonction xrCreateSpatialAnchorEXT définie dans l'extension XR_EXT_spatial_anchor permet aux applications de créer des ancres spatiales avec un handle XrSpatialEntityEXT pour les représenter.

En revanche, cette extension crée une ancre spatiale représentée par un handle XrSpace.

Autorisations : SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_spatial_annotation_tracking

Cette extension fournit la fonctionnalité de suivi des annotations pour l'extension XR_EXT_spatial_entity afin de suivre différentes annotations dans la scène. Elle permet aux applications de superposer des éléments sur des objets physiques ou virtuels définis par des références d'exécution.

Autorisations : SCENE_UNDERSTANDING_FINE

v3

XR_ANDROID_spatial_component_subsumed_by

Cette extension s'appuie sur XR_EXT_spatial_entity et fournit un nouveau composant pour XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT afin d'exposer le XrSpatialEntityIdEXT qui englobe l'entité actuelle.

Autorisations : SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_spatial_discovery_raycast

Cette extension s'appuie sur XR_EXT_spatial_entity et fournit une fonctionnalité de raycast pour les capacités spatiales existantes.

Autorisations : SCENE_UNDERSTANDING_FINE

v3

XR_ANDROID_spatial_entity_bound_anchor

Cette extension permet aux applications de créer des ancres et de les associer à des entités spatiales.

Autorisations : SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_spatial_object_tracking

Cette extension s'appuie sur XR_EXT_spatial_entity et définit une capacité spatiale permettant de suivre un ensemble d'objets physiques prédéfinis sans nécessiter d'ensemble de données d'entrée de l'application.

Autorisations : SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_trackables

Cette extension permet à l'application d'accéder aux éléments suivables de l'environnement physique.

Autorisations : SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_trackables_image

Cette extension permet de suivre les images planes spécifiées par des ensembles d'images de référence d'entrée.

Autorisations : SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_trackables_marker

Cette extension permet le suivi des marqueurs physiques.

Autorisations : SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_trackables_object

Cette extension permet le suivi des objets physiques.

Autorisations : SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_trackables_qr_code

Cette extension permet le suivi des codes QR physiques et le décodage des données des codes QR.

Autorisations : SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_unbounded_reference_space

Cette extension permet aux applications de créer un espace de référence XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID.

v1

Extensions tierces

Nom d'extension

Description

Version de l'API Spatial

XR_MND_headless

Certaines applications peuvent avoir besoin d'accéder aux périphériques d'interaction XR sans présenter de contenu d'image sur l'écran ou les écrans.

v1

XR_KHR_binding_modification

Cette extension ajoute une structure facultative qui peut être incluse dans la chaîne XrInteractionProfileSuggestedBinding::next transmise à xrSuggestInteractionProfileBindings pour spécifier des informations supplémentaires permettant de modifier le comportement de liaison par défaut.

v1

XR_EXT_debug_utils

En raison de la nature de l'interface OpenXR, très peu d'informations sur les erreurs sont disponibles pour le développeur et l'application.

v1

XR_EXT_hand_tracking

Cette extension permet aux applications de localiser les articulations individuelles des entrées de suivi des mains.

Autorisations : HAND_TRACKING

v1

XR_EXT_performance_settings

Cette extension définit une API permettant à l'application de fournir des indications de performances au moteur d'exécution et à ce dernier d'envoyer des notifications liées aux performances à l'application. Cela permet aux deux parties de trouver un compromis approprié entre les performances requises du processeur et du GPU, la durabilité thermique et une bonne expérience utilisateur constante tout au long de la session.

v1

XR_FB_display_refresh_rate

Sur les plates-formes qui permettent d'ajuster dynamiquement la fréquence d'actualisation de l'écran.

v1

XR_FB_swapchain_update_state

Cette extension permet à l'application de modifier et d'interroger un état mutable spécifique associé à une chaîne d'échange.

v1

XR_FB_foveation

Dans le contexte de la XR, la fovéation est une technique de rendu qui permet d'afficher la zone d'une image proche du point focal ou de la fovéa de l'œil à une résolution plus élevée que les zones périphériques.

v1

XR_FB_foveation_configuration

Sur les casques Facebook, les développeurs peuvent créer des profils de fovéation générés par le runtime pour les propriétés optiques et les performances.

v1

XR_FB_foveation_vulkan

L'API graphique Vulkan nécessite qu'une image soit appliquée à la chaîne d'échange pour appliquer un motif de fovéation.

v1

XR_FB_space_warp

Cette extension permet d'activer la technologie Space Warp dans l'application.

v1

XR_KHR_opengl_es_enable

Cette extension doit être fournie par les environnements d'exécution compatibles avec les applications utilisant les API OpenGL ES pour le rendu.

v1

XR_KHR_android_create_instance

Lorsque l'application crée un objet XrInstance sur les systèmes Android.

v1

XR_KHR_android_surface_swapchain

Une activité courante dans la XR consiste à afficher un flux d'images.

v1

XR_KHR_android_thread_settings

Pour que la XR soit confortable, il est important que les applications fournissent des frames rapidement et de manière cohérente.

v1

XR_KHR_composition_layer_color_scale_bias

L'échelle de couleurs et le biais sont appliqués à la couleur d'un calque lors de la composition, après sa conversion en représentation alpha prémultipliée.

v1

XR_KHR_composition_layer_cube

Cette extension ajoute un type de calque supplémentaire qui permet d'échantillonner directement à partir de cubemaps.

v1

XR_KHR_composition_layer_cylinder

Cette extension ajoute un type de calque supplémentaire où le moteur d'exécution XR doit mapper une texture provenant d'une chaîne d'échange sur l'intérieur d'une section de cylindre. On peut l'imaginer de la même manière qu'un écran de télévision incurvé vu par un spectateur.

v1

XR_KHR_composition_layer_depth

Cette extension définit un type de calque supplémentaire qui permet aux applications d'envoyer des images de profondeur en plus des images couleur dans les calques de projection.

v1

XR_KHR_composition_layer_equirect

Cette extension ajoute un type de calque supplémentaire où le moteur d'exécution XR doit mapper une image codée équirectangulaire provenant d'une chaîne d'échange sur l'intérieur d'une sphère.

v1

XR_KHR_composition_layer_equirect2

Cette extension ajoute un type de calque supplémentaire où le moteur d'exécution XR doit mapper une image codée équirectangulaire provenant d'une chaîne d'échange sur l'intérieur d'une sphère.

Cette extension utilise une paramétrisation différente, plus conforme à la formulation de XR_KHR_composition_layer_cylinder, mais est fonctionnellement équivalente à XR_KHR_composition_layer_equirect.

v1

XR_KHR_convert_timespec_time

Cette extension fournit deux fonctions permettant de convertir le temps monotone timespec en XrTime.

v1

XR_KHR_vulkan_enable

Cette extension permet d'utiliser l'API graphique Vulkan dans un environnement d'exécution OpenXR.

v1

XR_KHR_vulkan_enable2

Cette extension permet d'utiliser l'API graphique Vulkan dans un environnement d'exécution OpenXR.

v1

XR_KHR_loader_init

Sur certaines plates-formes, le chargeur doit être initialisé avec des paramètres spécifiques à la plate-forme avant que le chargement puisse avoir lieu.

v1

XR_KHR_loader_init_android

Sur Android, certaines implémentations de chargeur nécessitent que l'application fournisse des informations supplémentaires lors de l'initialisation.

v1

XR_KHR_swapchain_usage_input_attachment_bit

Cette extension permet à une application de spécifier que les images de la chaîne d'échange doivent être créées de manière à pouvoir être utilisées comme pièces jointes d'entrée. Au moment de la rédaction de cet article, ce bit n'affecte que les chaînes d'échange Vulkan.

v1

XR_EXT_dpad_binding

Cette extension permet à l'application de lier une ou plusieurs actions numériques à un trackpad ou à un thumbstick comme s'il s'agissait d'un pavé directionnel en définissant des chemins de composants supplémentaires pour suggérer des liaisons.

v1

XR_EXT_uuid

Cette extension définit un identifiant unique universel qui suit la RFC 4122.

v1

XR_FB_composition_layer_depth_test

Cette extension permet la composition de calques testée en profondeur.

v1

XR_EXT_eye_gaze_interaction

Cette extension fournit un XrPath pour obtenir l'entrée du regard à partir d'un appareil de suivi oculaire afin d'activer les interactions du regard.

Autorisations : EYE_TRACKING_FINE

v1

XR_EXT_hand_interaction

Cette extension définit quatre poses d'action couramment utilisées pour tous les profils d'interaction manuelle de l'utilisateur, y compris les appareils de suivi des mains et les manettes de jeu.

v1

XR_KHR_visibility_mask

Cette extension permet de fournir un masque de dessin par vue pour les applications.

v1

XR_META_foveation_eye_tracked

Le rendu fovéal avec suivi du regard affiche une densité de pixels plus faible dans la périphérie du regard de l'utilisateur.

Autorisations : EYE_TRACKING_FINE

v1

XR_FB_hand_tracking_aim

L'extension XR_EXT_hand_tracking fournit une liste de poses des articulations de la main qui représentent la configuration actuelle des mains suivies. Cette extension ajoute une couche de reconnaissance gestuelle utilisée par le système.

Autorisations : HAND_TRACKING

v1

XR_EXT_palm_pose

Cette extension définit un nouvel "identifiant de pose standard" pour les profils d'interaction, nommé "palm_ext".

v1

XR_VARJO_foveated_rendering

Les casques Varjo offrent des écrans à très haute densité de pixels au centre de l'écran.

Autorisations : EYE_TRACKING_FINE

v1

XR_VARJO_quad_views

Cette extension ajoute un nouveau type de configuration de vue : XR_VIEW_CONFIGURATION_TYPE_PRIMARY_QUAD_VARJO à XrViewConfigurationType, qui peut être renvoyé par xrEnumerateViewConfigurations pour indiquer que le runtime est compatible avec quatre fenêtres d'affichage.

v1

XR_META_vulkan_swapchain_create_info

À l'aide de cette extension, une application basée sur Vulkan peut transmettre des VkImageCreateFlags ou VkImageUsageFlags supplémentaires en chaînant une structure XrVulkanSwapchainCreateInfoMETA à XrSwapchainCreateInfo lors de l'appel de xrCreateSwapchain.

v1

XR_FB_hand_tracking_mesh

L'extension XR_EXT_hand_tracking fournit une liste de poses des articulations de la main, mais aucun mécanisme pour afficher un maillage de main animé.

Autorisations : HAND_TRACKING

v1

XR_FB_composition_layer_image_layout

Cette extension ne définit pas de nouveau type de couche de composition.

v1

XR_KHR_maintenance1

XR_KHR_maintenance1 ajoute un ensemble de fonctionnalités mineures qui ont été intentionnellement omises ou oubliées dans la version OpenXR 1.0 d'origine.

v1

XR_FB_composition_layer_settings

Cette extension permet aux applications de demander l'utilisation d'options de traitement telles que l'amélioration de la netteté ou le suréchantillonnage sur une couche de composition.

v1

XR_KHR_locate_spaces

Cette extension introduit la fonction xrLocateSpacesKHR.

v1

XR_EXT_local_floor

La spécification OpenXR de base contient deux types d'espaces de référence verrouillés sur le monde XrSpace dans XrReferenceSpaceType.

v1

XR_EXT_spatial_marker_tracking

Cette extension s'appuie sur XR_EXT_spatial_entity et permet aux applications de détecter et de suivre les marqueurs dans leur environnement.

Autorisations : SCENE_UNDERSTANDING_COARSE

v1

XR_EXT_spatial_persistence

Cette extension permet aux applications de découvrir et de corréler des entités spatiales dans les sessions d'application.

Autorisations : SCENE_UNDERSTANDING_COARSE

v1

XR_EXT_spatial_anchor

Cette extension s'appuie sur XR_EXT_spatial_entity et permet aux applications de créer des ancres spatiales.

Autorisations : SCENE_UNDERSTANDING_COARSE

v1

XR_EXT_spatial_plane_tracking

Cette extension s'appuie sur XR_EXT_spatial_entity et définit la capacité spatiale de suivi des plans pour le framework d'entités spatiales.

v1

XR_EXT_spatial_entity

Cette extension présente les concepts et les bases de la compréhension des scènes et du raisonnement spatial dans OpenXR.

v1

XR_EXT_future

Dans les systèmes de réalité étendue, certaines opérations sont de longue durée et ne se terminent pas raisonnablement dans une boucle de frame normale.

v1

XR_FB_color_space

Les appareils XR peuvent utiliser un espace colorimétrique différent de celui de nombreux écrans utilisés pour le développement.

v1

XR_EXT_composition_layer_inverted_alpha

Cette extension fournit un indicateur qui, lorsqu'il est appliqué à un calque de composition, inverse l'interprétation de la valeur alpha dans les images de la chaîne d'échange du calque.

v1

XR_EXT_frame_synthesis

Cette extension permet d'activer la synthèse de frames sur les applications en fonction des données fournies par l'application.

v3

XR_QCOM_trackables_image_operations

Fournit des opérations de suivi d'images Qualcomm pour les éléments à suivre.

v3

XR_QCOM_trackables_qr_code_operations

Fournit des opérations de suivi des codes QR Qualcomm pour les éléments à suivre.

v3

XR_EXT_user_presence

Cette extension introduit un nouvel événement pour notifier lorsque le système détecte un changement de présence de l'utilisateur.

v3

XR_KHR_extended_struct_name_lengths

Cette extension augmente la taille maximale des noms de structures et fournit une nouvelle fonction pour accéder à ces nouveaux noms étendus.

v3

XR_EXT_interaction_profile_battery_state_display

XR_EXT_interaction_profile_battery_state_display fournit aux applications un mécanisme permettant d'interroger l'environnement d'exécution pour obtenir des informations sur l'état de la batterie des appareils utilisés avec les profils d'interaction.

v3


OpenXR™ et le logo OpenXR sont des marques déposées appartenant à The Khronos Group Inc. et sont enregistrées en tant que marques déposées en Chine, dans l'Union européenne, au Japon et au Royaume-Uni.