OpenXR
OpenXR est une norme d’API libre de droits ouverte de Khronos, qui fournit aux moteurs un accès natif à une gamme d’appareils à travers le spectre de 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 VR immersifs, comme Windows Mixed Reality casques pour pc de bureau. OpenXR vous permet d’écrire du code une fois qu’il 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, case activée la spécification OpenXR 1.0, la référence d’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 de HoloLens 2, vous utiliserez également des extensions OpenXR inter-fournisseurs et spécifiques au fournisseur qui permettent d’autres fonctionnalités au-delà du cœur d’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 une fois du code portable qui peut ensuite accéder aux fonctionnalités de la plateforme native 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 d’exécution 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_...
) : active l’innovation par fournisseur dans les fonctionnalités matérielles ou logicielles. N’importe quel fournisseur d’exécution peut introduire et expédier une extension de fournisseur à tout moment.- Extensions de fournisseur expérimentales (par exemple,
XR_MSFTX_...
) : les 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 est livrée. 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 spec de base. Les extensions KHR sont couvertes par la même licence que la spécification principale 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 principale OpenXR 1.0 :XrInstance , XrSystemId , XrSession |
Espaces de référence (vue, local, étape) | Spécification principale OpenXR 1.0 :XrSpace |
Configurations d’affichage (mono, stéréo) | Spécification principale OpenXR 1.0 :XrView... |
Permutationchains + minutage des images | Spécification principale OpenXR 1.0 :XrSwapchain... + xrWaitFrame |
Couches de composition (projection, quad) |
Spécification principale OpenXR 1.0 :XrCompositionLayer... + xrEndFrame |
Entrée et haptique | Spécification principale OpenXR 1.0 :XrAction... |
Intégration de Direct3D 11/12 | Extensions officielles KHR publiées :XR_KHR_D3D11_enable |
Espace de référence non délimité (expériences à l’échelle mondiale) |
MSFT extension publiée :XR_MSFT_unbounded_reference_space |
Ancres spatiales |
|
Interaction de la main (prise en main/pose de but, air-tap, saisie) HoloLens 2 uniquement |
MSFT extension publiée :XR_MSFT_hand_interaction |
Articulation de la main + maillage de main HoloLens 2 uniquement |
|
Regard HoloLens 2 uniquement |
EXT extension publiée :XR_EXT_eye_gaze_interaction |
capture Mixed Reality (troisième rendu à partir d’une 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 Mixed Reality héritées (par exemple, SpatialAnchorTransferManager )) |
|
Autres extensions inter-fournisseurs | Extensions officielles
|
Bien que certaines de ces extensions puissent commencer en tant qu’extensions spécifiques MSFT
au fournisseur, Microsoft et d’autres fournisseurs de runtime OpenXR travaillent ensemble pour concevoir des extensions ou inter-fournisseurs EXT
KHR
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 luminent 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 qui prend 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, case activée cette vidéo pas à pas de 60 minutes :