OpenXR

OpenXR-logo

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.
  • 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
XR_KHR_D3D12_enable
Niet-afhankelijke referentieruimte
(ervaringen van wereldschaal)
MSFT extensie uitgebracht:
XR_MSFT_unbounded_reference_space
Ruimtelijke ankers

MSFT extensie uitgebracht:
XR_MSFT_spatial_anchor

MSFT extensie uitgebracht in runtime 108:(alleen HoloLens 2)
XR_MSFT_spatial_anchor_persistence

Handinteractie
(greep/doelhouding, luchttikken, grijpen)

alleen HoloLens 2

MSFT extensie uitgebracht:
XR_MSFT_hand_interaction
Hand articulatie + hand gaas

alleen HoloLens 2

EXT extensie uitgebracht:
XR_EXT_hand_tracking

MSFT extensie uitgebracht:
XR_MSFT_hand_tracking_mesh

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

MSFT extensie uitgebracht in runtime 105:
XR_MSFT_perception_anchor_interop

Andere extensies voor meerdere leveranciers

Officiële KHR extensies uitgebracht:
XR_KHR_composition_layer_depth
XR_KHR_visibility_mask
XR_KHR_win32_convert_performance_counter_time
XR_KHR_composition_layer_color_scale_bias

EXT extensies uitgebracht:
XR_EXT_win32_appcontainer_compatible
XR_EXT_debug_utils

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?

Schermopname van Minecraft die wordt afgespeeld door een gebruiker die een mixed reality-headset draagt

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:

Zie ook