OpenXR

Logo 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 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
XR_KHR_D3D12_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

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
(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

EXT extension publiée :
XR_EXT_hand_tracking

MSFT extension publiée :
XR_MSFT_hand_tracking_mesh

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))

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 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 EXTKHR 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 en cours de lecture 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 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 :

Voir aussi