OpenXR
OpenXR is een open royaltyvrije API-standaard van Khronos, die engines systeemeigen toegang biedt tot een reeks apparaten in het mixed reality-spectrum.
U kunt ontwikkelen met OpenXR op een HoloLens 2 of Windows Mixed Reality insluitende VR-headset op het bureaublad. Als u geen toegang hebt tot een headset, kunt u in plaats daarvan de HoloLens 2 Emulator of de Windows Mixed Reality Simulator gebruiken.
Waarom OpenXR?
Met OpenXR kunt u engines bouwen die zijn gericht op zowel holografische apparaten, zoals HoloLens 2, als meeslepende VR-apparaten, zoals Windows Mixed Reality headsets voor desktop-pc's. Met OpenXR kunt u eenmaal code schrijven die vervolgens kan worden overdraagbaar op een breed scala aan hardwareplatforms.
De OpenXR-API maakt gebruik van een loader om uw toepassing rechtstreeks te verbinden met de systeemeigen platformondersteuning van uw headset. Eindgebruikers krijgen maximale prestaties en minimale latentie, ongeacht of ze een Windows Mixed Reality of een andere headset gebruiken.
Wat is OpenXR?
De OpenXR-API biedt de kernfunctionaliteit voor posevoorspelling, frametiming en ruimtelijke invoer die u nodig hebt om een engine te bouwen die zowel holografische als immersive apparaten kan targeten.
Raadpleeg de OpenXR 1.0-specificatie, API-verwijzing en snelzoekgids voor meer informatie over de OpenXR-API. Zie de pagina Khronos OpenXR voor meer informatie.
Als u zich wilt richten op de volledige functieset van HoloLens 2, gebruikt u ook cross-vendor en vendor-specifieke OpenXR-extensies die extra functies mogelijk maken buiten de OpenXR 1.0-kern, zoals gearticuleerde handtracering, oogtracering, ruimtelijke toewijzing en ruimtelijke ankers. Zie de sectie Roadmap hieronder over de uitbreidingen die later dit jaar beschikbaar zijn voor meer informatie.
OpenXR is zelf geen mixed reality-engine. In plaats daarvan stelt OpenXR engines zoals Unity en Unreal in staat om eenmaal draagbare code te schrijven die vervolgens toegang heeft tot de systeemeigen platformfuncties van het holografische of immersive apparaat van de gebruiker, ongeacht de leverancier die dat platform heeft gebouwd.
Roadmap
De OpenXR-specificatie definieert een uitbreidingsmechanisme waarmee runtime-implementeerprogramma's extra functionaliteit kunnen weergeven buiten de kernfuncties die zijn gedefinieerd in de openXR 1.0-basisspecificatie.
Er zijn drie soorten OpenXR-extensies:
- Leveranciersextensies (bijvoorbeeld
XR_MSFT_...
): maakt innovatie per leverancier mogelijk in hardware- of softwarefuncties. Elke runtime-leverancier kan op elk gewenst moment een leverancieruitbreiding introduceren en verzenden.- Experimentele leveranciersextensies (bijvoorbeeld
XR_MSFTX_...
): experimentele leveranciersextensies die worden bekeken om feedback te verzamelen.XR_MSFTX_...
extensies zijn alleen voor apparaten van ontwikkelaars en worden verwijderd wanneer de echte extensie wordt geleverd. Als u ermee wilt experimenteren, kunt u preview-extensies inschakelen op uw apparaat voor ontwikkelaars.
- Experimentele leveranciersextensies (bijvoorbeeld
- Extensies voor meerdere leveranciers
EXT
: extensies voor meerdere leveranciers die door meerdere bedrijven worden gedefinieerd en geïmplementeerd. Groepen geïnteresseerde bedrijven kunnen ext-extensies op elk gewenst moment introduceren. - Officiële
KHR
extensies: Officiële Khronos-extensies geratificeerd als onderdeel van een kernspecificatierelease. KHR-extensies vallen onder dezelfde licentie als de kernspecificatie zelf.
De Windows Mixed Reality OpenXR Runtime ondersteunt een reeks MSFT
extensies en EXT
die de volledige set HoloLens 2 functies naar OpenXR-toepassingen brengt:
Functiegebied | Beschikbaarheid van extensies |
---|---|
Systemen en sessies | Kernspecificaties van OpenXR 1.0:XrInstance , XrSystemId , XrSession |
Referentieruimten (weergave, lokaal, fase) | Kernspecificaties van OpenXR 1.0:XrSpace |
Configuraties weergeven (mono, stereo) | Kernspecificaties van OpenXR 1.0:XrView... |
Swapchains + tijdsinstellingen van frame | Kernspecificaties van OpenXR 1.0:XrSwapchain... + xrWaitFrame |
Samenstellingslagen (projectie, quad) |
Kernspecificaties van OpenXR 1.0:XrCompositionLayer... + xrEndFrame |
Invoer en haptiek | Kernspecificaties van OpenXR 1.0:XrAction... |
Direct3D 11/12-integratie | Officiële KHR extensies uitgebracht:XR_KHR_D3D11_enable |
Niet-afhankelijke referentieruimte (ervaringen van wereldschaal) |
MSFT extensie uitgebracht:XR_MSFT_unbounded_reference_space |
Ruimtelijke ankers |
|
Handinteractie (greep/doelhouding, luchttikken, grijpen) alleen HoloLens 2 |
MSFT extensie uitgebracht:XR_MSFT_hand_interaction |
Hand articulatie + hand gaas alleen HoloLens 2 |
|
Ogen staren alleen HoloLens 2 |
EXT extensie uitgebracht:XR_EXT_eye_gaze_interaction |
Mixed Reality Capture (derde render van PV-camera) alleen HoloLens 2 |
MSFT extensies uitgebracht:XR_MSFT_secondary_view_configuration XR_MSFT_first_person_observer |
Bewegingscontrollerinteractieprofielen (SamsungSee en HP Reverb G2) |
MSFT extensies die zijn uitgebracht in runtime 103:XR_EXT_samsung_odyssey_controller XR_EXT_hp_mixed_reality_controller |
Weergavemodellen voor bewegingscontrollers | MSFT extensie uitgebracht in runtime 104:XR_MSFT_controller_model |
Inzicht in scènes (vlakken, meshes) alleen HoloLens 2 |
MSFT extensie uitgebracht in runtime 106:XR_MSFT_scene_understanding XR_MSFT_scene_understanding_serialization |
Modi voor het opnieuw projecteren van de samenstellingslaag (automatische planaire of alleen afdrukstand opnieuw projecteren) |
MSFT extensie uitgebracht in runtime 106:XR_MSFT_composition_layer_reprojection |
Interoperabiliteit met andere Mixed Reality SDK's (bijvoorbeeld QR) |
MSFT extensie uitgebracht:XR_MSFT_spatial_graph_bridge |
Interoperabiliteit met UWP CoreWindow-API (bijvoorbeeld voor toetsenbord/muis) |
MSFT extensie uitgebracht in runtime 103:XR_MSFT_holographic_window_attachment |
Interoperabiliteit met verouderde Mixed Reality WinRT-API's (bijvoorbeeld SpatialAnchorTransferManager )) |
|
Andere extensies voor meerdere leveranciers | Officiële
|
Hoewel sommige van deze extensies kunnen beginnen als leverancierspecifieke MSFT
extensies, werken Microsoft en andere OpenXR-runtimeleveranciers samen om meerdere leveranciers EXT
of KHR
extensies te ontwerpen voor veel van deze functiegebieden. Extensies tussen leveranciers maken de code die u voor deze functies schrijft draagbaar voor runtime-leveranciers, net als met de kernspecificatie.
Waar kunt u OpenXR gebruiken?
De nieuwe RenderDragon-engine van Minecraft heeft de desktop VR-ondersteuning gebouwd met behulp van OpenXR!
Microsoft werkt samen met Unity en Epic Games om ervoor te zorgen dat de toekomst van mixed reality open is, niet alleen voor HoloLens 2, maar over de volledige breedte van pc VR, waaronder de nieuwe Reverb G2-headset van HP. OpenXR zorgt voor de ondersteuning van VR voor verschillende leveranciers voor grote titels die vandaag worden geleverd, zoals Minecraft en Microsoft Flight Simulator! Zie de opmerkingen bij de release voor meer informatie over het ontwikkelen voor HoloLens (1e generatie).
Lees verder voor meer informatie over hoe u aan de slag kunt gaan met OpenXR in Unity, Unreal Engine of uw eigen engine.
OpenXR in Unity
De huidige aanbevolen Unity-configuratie van Microsoft voor HoloLens 2 en Windows Mixed Reality ontwikkeling is Unity 2020.3 LTS met de Mixed Reality OpenXR-invoegtoepassing. Deze invoegtoepassing bevat ondersteuning voor de OpenXR-extensies die de volledige mogelijkheden van HoloLens 2 en Windows Mixed Reality headsets verlichten, waaronder hand-/oogtracering, ruimtelijke ankers en HP Reverb G2-controllers. MRTK-Unity ondersteunt OpenXR vanaf MRTK 2.7. Zie Een Unity-versie en XR-invoegtoepassing kiezen voor meer informatie over hoe u aan de slag gaat met Unity 2020 en OpenXR.
Als u ontwikkelt voor HoloLens (1e generatie), moet u Unity 2019.4 LTS blijven gebruiken met de verouderde Back-end van de WinRT-API. Als u zich richt op de nieuwe HP Reverb G2-controller in een Unity 2019-app, raadpleegt u onze HP Reverb G2-invoerdocumenten.
Vanaf Unity 2021.3 LTS is OpenXR de enige ondersteunde Unity-back-end voor HoloLens 2 en Windows Mixed Reality headsets.
OpenXR in Unreal Engine
Unreal Engine 4.23 was de eerste grote game engine-release die preview-ondersteuning voor OpenXR 1.0 verzendt. Nu in Unreal Engine 4.26 is ondersteuning voor HoloLens 2, Windows Mixed Reality en andere desktop VR-headsets beschikbaar via de ingebouwde OpenXR-ondersteuning van Unreal Engine. Unreal Engine 4.26 ondersteunt ook de OpenXR-extensieinvoegtoepassing van Microsoft, waardoor handinteractie en HP Reverb G2-controllerondersteuning mogelijk worden, waardoor de volledige functieset van HoloLens 2 en Windows Mixed Reality headsets wordt verlicht. Unreal Engine 4.26 is vandaag beschikbaar op het Epic Games Launcher, met MRTK-Unreal 0.12 die OpenXR-projecten ondersteunt.
OpenXR voor systeemeigen ontwikkeling
U kunt ontwikkelen met OpenXR op een HoloLens 2 of Windows Mixed Reality insluitende VR-headset op het bureaublad. Als u geen toegang hebt tot een headset, kunt u in plaats daarvan de HoloLens 2 Emulator of de Windows Mixed Reality Simulator gebruiken.
Als u wilt beginnen met het ontwikkelen van OpenXR-toepassingen voor HoloLens 2 of Windows Mixed Reality VR-headsets, raadpleegt u Aan de slag met OpenXR-ontwikkeling.
Bekijk deze stapsgewijze video van 60 minuten voor een rondleiding door alle belangrijke onderdelen van de OpenXR-API, samen met voorbeelden van de toepassingen in de praktijk die Vandaag openXR gebruiken: