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 de fournisseur expérimentales (par exemple,
- 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 |
Espace de référence illimité (expériences à l’échelle mondiale) |
MSFT extension publiée :XR_MSFT_unbounded_reference_space |
Ancres spatiales |
|
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 |
|
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 )) |
|
Autres extensions inter-fournisseurs | Extensions officielles
|
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 ?
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 :