OpenXR

Logo OpenXR

OpenXR est une norme d’API libre de redevances ouverte de Khronos, qui fournit aux moteurs un accès natif à une gamme d’appareils dans le spectre de la réalité mixte.

Vous pouvez développer à l’aide d’OpenXR sur un HoloLens 2 ou Windows Mixed Reality casque vr immersif sur le bureau. Si vous n’avez pas accès à un casque, vous pouvez utiliser l’émulateur HoloLens 2 ou le simulateur de Windows Mixed Reality à la place.

Pourquoi OpenXR ?

Avec OpenXR, vous pouvez créer des moteurs qui ciblent à la fois les appareils holographiques, comme les HoloLens 2, et les appareils de réalité virtuelle immersifs, comme les casques Windows Mixed Reality pour les PC de bureau. OpenXR vous permet d’écrire du code une fois qui est ensuite portable sur un large éventail de plateformes matérielles.

L’API OpenXR utilise un chargeur pour connecter votre application directement à la prise en charge de la plateforme native de votre casque. Les utilisateurs finaux bénéficient de performances maximales et d’une latence minimale, qu’ils utilisent un Windows Mixed Reality ou tout autre casque.

Qu’est-ce que OpenXR ?

L’API OpenXR fournit les fonctionnalités principales de prédiction de pose, de minutage des images et d’entrée spatiale dont vous aurez besoin pour créer un moteur qui peut cibler des appareils holographiques et immersifs.

Pour en savoir plus sur l’API OpenXR, consultez la spécification OpenXR 1.0, les informations de référence sur l’API et le guide de référence rapide. Pour plus d’informations, consultez la page Khronos OpenXR.

Pour cibler l’ensemble de fonctionnalités complètes de HoloLens 2, vous utiliserez également des extensions OpenXR inter-fournisseurs et spécifiques au fournisseur qui permettent des fonctionnalités supplémentaires au-delà du cœur OpenXR 1.0, telles que le suivi des mains articulé, le suivi oculaire, le mappage spatial et les ancres spatiales. Pour plus d’informations, consultez la section Feuille de route ci-dessous sur les extensions à venir plus tard cette année.

OpenXR n’est pas lui-même un moteur de réalité mixte. Au lieu de cela, OpenXR permet aux moteurs comme Unity et Unreal d’écrire du code portable une fois qui peut ensuite accéder aux fonctionnalités de plateforme natives de l’appareil holographique ou immersif de l’utilisateur, quel que soit le fournisseur qui a créé cette plateforme.

Feuille de route

La spécification OpenXR définit un mécanisme d’extension qui permet aux implémenteurs du runtime d’exposer des fonctionnalités supplémentaires au-delà des fonctionnalités principales définies dans la spécification OpenXR 1.0 de base.

Il existe trois types d’extensions OpenXR :

  • Extensions de fournisseur (par exemple, XR_MSFT_...) : permet l’innovation par fournisseur dans les fonctionnalités matérielles ou logicielles. N’importe quel fournisseur d’exécution peut introduire et livrer une extension de fournisseur à tout moment.
    • Extensions de fournisseur expérimentales (par exemple, XR_MSFTX_...) : extensions de fournisseur expérimentales en préversion pour recueillir des commentaires. XR_MSFTX_... les extensions sont destinées uniquement aux appareils de développement et seront supprimées lorsque l’extension réelle sera fournie. Pour les tester, vous pouvez activer les extensions en préversion sur votre appareil de développeur.
  • Extensions inter-fournisseurs EXT : extensions inter-fournisseurs que plusieurs entreprises définissent et implémentent. Les groupes d’entreprises intéressées peuvent introduire des extensions EXT à tout moment.
  • Extensions officielles KHR : extensions officielles de Khronos ratifiées dans le cadre d’une version de spécifications de base. Les extensions KHR sont couvertes par la même licence que la spécification de base elle-même.

Le runtime OpenXR Windows Mixed Reality prend en charge un ensemble d’extensions MSFT et EXT qui apporte l’ensemble complet de fonctionnalités HoloLens 2 aux applications OpenXR :

Domaine de fonctionnalité Disponibilité des extensions
Systèmes + sessions Spécification de base OpenXR 1.0 :
XrInstance, XrSystemId, XrSession
Espaces de référence (vue, local, étape) Spécification de base OpenXR 1.0 :
XrSpace
Configurations d’affichage (mono, stéréo) Spécification de base OpenXR 1.0 :
XrView...
Swapchains + Minutage des images Spécification de base OpenXR 1.0 :
XrSwapchain... + xrWaitFrame
Couches de composition
(projection, quad)
Spécification de base OpenXR 1.0 :
XrCompositionLayer... + xrEndFrame
Entrée et haptique Spécification de base OpenXR 1.0 :
XrAction...
Intégration direct3D 11/12 Extensions officielles KHR publiées :
XR_KHR_D3D11_enable
XR_KHR_D3D12_enable
Espace de référence illimité
(expériences à l’échelle mondiale)
MSFT extension publiée :
XR_MSFT_unbounded_reference_space
Ancres spatiales

MSFT extension publiée :
XR_MSFT_spatial_anchor

MSFT extension publiée dans le runtime 108:(HoloLens 2 uniquement)
XR_MSFT_spatial_anchor_persistence

Interaction de la main
(poignée/pose de but, air-tap, saisie)

HoloLens 2 uniquement

MSFT extension publiée :
XR_MSFT_hand_interaction
Articulation de la main + maillage de la main

HoloLens 2 uniquement

EXT extension publiée :
XR_EXT_hand_tracking

MSFT extension publiée :
XR_MSFT_hand_tracking_mesh

Regard de l’œil

HoloLens 2 uniquement

EXT extension publiée :
XR_EXT_eye_gaze_interaction
capture Mixed Reality
(troisième rendu de la caméra PV)

HoloLens 2 uniquement

MSFT extensions publiées :
XR_MSFT_secondary_view_configuration
XR_MSFT_first_person_observer
Profils d’interaction du contrôleur de mouvement
(Samsung Odyssey et HP Reverb G2)
MSFT extensions publiées dans le runtime 103 :
XR_EXT_samsung_odyssey_controller
XR_EXT_hp_mixed_reality_controller
Modèles de rendu du contrôleur de mouvement MSFT extension publiée dans le runtime 104 :
XR_MSFT_controller_model
Compréhension des scènes (plans, maillages)

HoloLens 2 uniquement

MSFT extension publiée dans le runtime 106 :
XR_MSFT_scene_understanding
XR_MSFT_scene_understanding_serialization
Modes de reprojection de couche de composition
(reprojection automatiquement planaire ou orientation uniquement)
MSFT extension publiée dans le runtime 106 :
XR_MSFT_composition_layer_reprojection
Interopérabilité avec d’autres sdk Mixed Reality
(par exemple, QR)
MSFT extension publiée :
XR_MSFT_spatial_graph_bridge
Interopérabilité avec l’API UWP CoreWindow
(par exemple, pour le clavier/la souris)
MSFT extension publiée dans le runtime 103 :
XR_MSFT_holographic_window_attachment
Interopérabilité avec les API WinRT héritées Mixed Reality
(par exemple, SpatialAnchorTransferManager))

MSFT extension publiée dans le runtime 105 :
XR_MSFT_perception_anchor_interop

Autres extensions inter-fournisseurs

Extensions officielles KHR publiées :
XR_KHR_composition_layer_depth
XR_KHR_visibility_mask
XR_KHR_win32_convert_performance_counter_time
XR_KHR_composition_layer_color_scale_bias

EXT extensions publiées :
XR_EXT_win32_appcontainer_compatible
XR_EXT_debug_utils

Bien que certaines de ces extensions puissent commencer par des extensions spécifiques MSFT au fournisseur, Microsoft et d’autres fournisseurs de runtime OpenXR travaillent ensemble pour concevoir des extensions ou KHR des extensions inter-fournisseurs EXT pour la plupart de ces domaines de fonctionnalités. Les extensions inter-fournisseurs rendent le code que vous écrivez pour ces fonctionnalités portable entre les fournisseurs d’exécution, comme avec la spécification de base.

Où pouvez-vous utiliser OpenXR ?

Capture d’écran de Minecraft lu par un utilisateur portant un casque de réalité mixte

Le nouveau moteur RenderDragon de Minecraft a créé sa prise en charge vr de bureau à l’aide d’OpenXR!

Microsoft a travaillé avec Unity et Epic Games pour s’assurer que l’avenir de la réalité mixte est ouvert, non seulement pour HoloLens 2, mais sur toute l’étendue de PC VR, y compris le nouveau casque Reverb G2 de HP. OpenXR alimente la prise en charge de vr inter-fournisseurs pour les titres majeurs expédiés aujourd’hui, tels que Minecraft et Microsoft Flight Simulator ! Pour plus d’informations sur le développement pour HoloLens (1ère génération), consultez les notes de publication.

Pour savoir comment vous pouvez commencer à utiliser OpenXR dans Unity, Unreal Engine ou votre propre moteur, lisez la suite !

OpenXR dans Unity

La configuration Unity recommandée actuelle de Microsoft pour le développement HoloLens 2 et Windows Mixed Reality est Unity 2020.3 LTS avec le plug-in OpenXR Mixed Reality. Ce plug-in prend en charge les extensions OpenXR qui éclairent toutes les fonctionnalités des casques HoloLens 2 et Windows Mixed Reality, y compris le suivi des mains et des yeux, les ancres spatiales et les contrôleurs HP Reverb G2. MRTK-Unity prend en charge OpenXR à partir de MRTK 2.7. Pour plus d’informations sur la prise en main d’Unity 2020 et d’OpenXR, consultez Choix d’une version Unity et d’un plug-in XR.

Si vous développez pour HoloLens (1ère génération), vous devez continuer à utiliser Unity 2019.4 LTS avec le back-end d’API WinRT hérité. Si vous ciblez le nouveau contrôleur HP Reverb G2 dans une application Unity 2019, consultez notre documentation d’entrée HP Reverb G2.

À compter d’Unity 2021.3 LTS, OpenXR sera le seul back-end Unity pris en charge pour le ciblage des casques HoloLens 2 et Windows Mixed Reality.

OpenXR dans Unreal Engine

Unreal Engine 4.23 a été la première version majeure du moteur de jeu à fournir la prise en charge de la préversion pour OpenXR 1.0 ! Désormais, dans Unreal Engine 4.26, la prise en charge de HoloLens 2, de Windows Mixed Reality et d’autres casques VR de bureau est disponible via la prise en charge intégrée d’OpenXR d’Unreal Engine. Unreal Engine 4.26 prend également en charge le plug-in d’extension OpenXR de Microsoft, ce qui permet l’interaction manuelle et la prise en charge du contrôleur HP Reverb G2, en activant l’ensemble complet des fonctionnalités de HoloLens 2 et de casques Windows Mixed Reality. Unreal Engine 4.26 est disponible aujourd’hui sur le lanceur Epic Games, avec MRTK-Unreal 0.12 prenant en charge les projets OpenXR.

OpenXR pour le développement natif

Vous pouvez développer à l’aide d’OpenXR sur un HoloLens 2 ou Windows Mixed Reality casque vr immersif sur le bureau. Si vous n’avez pas accès à un casque, vous pouvez utiliser l’émulateur HoloLens 2 ou le simulateur de Windows Mixed Reality à la place.

Pour commencer à développer des applications OpenXR pour HoloLens 2 ou Windows Mixed Reality casques VR, découvrez comment commencer à utiliser le développement OpenXR.

Pour une visite guidée de tous les principaux composants de l’API OpenXR, ainsi que des exemples d’applications réelles utilisant OpenXR aujourd’hui, regardez cette vidéo pas à pas de 60 minutes :

Voir aussi