Delen via


OpenXR

OpenXR-logo

OpenXR is een open royaltyvrije API-standaard van Khronos en biedt engines systeemeigen toegang tot een scala aan apparaten in het mixed reality-spectrum.

U kunt ontwikkelen met behulp van OpenXR op een HoloLens 2- of Windows Mixed Reality immersive 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 zich richten op zowel holografische apparaten, zoals HoloLens 2 als insluitende VR-apparaten, zoals Windows Mixed Reality-headsets voor desktop-pc's. Met OpenXR kunt u code schrijven zodra deze vervolgens overdraagbaar is over een breed scala aan hardwareplatforms.

De OpenXR-API maakt gebruik van een laadprogramma 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 kernvoorspelling, frametijd en ruimtelijke invoerfunctionaliteit die u nodig hebt om een engine te bouwen die zowel holografische als insluitende apparaten kan worden gericht.

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 openXR-extensies voor meerdere leveranciers en leveranciers. Deze bieden functies zoals gearticuleerde handtracking, oogtracking, ruimtelijke toewijzing en ruimtelijke ankers. Zie de sectie Roadmap 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 insluitende apparaat van de gebruiker, ongeacht de leverancier die dat platform heeft gebouwd.

Roadmap

De OpenXR-specificatie definieert een uitbreidingsmechanisme waarmee runtime-implementers andere functionaliteit kunnen weergeven dan de kernfuncties die zijn gedefinieerd in de basisspecificatie van OpenXR 1.0.

Er zijn drie soorten OpenXR-extensies:

  • Uitbreidingen van leveranciers (bijvoorbeeld XR_MSFT_...): maakt innovatie per leverancier mogelijk in hardware- of softwarefuncties. Elke runtimeleverancier kan op elk gewenst moment een leverancierextensie introduceren en verzenden.
  • Experimentele uitbreidingen van leveranciers (bijvoorbeeld XR_MSFTX_...): Experimentele leveranciersextensies die worden bekeken om feedback te verzamelen. XR_MSFTX_... extensies zijn alleen voor ontwikkelaarsapparaten en worden verwijderd wanneer de echte extensie wordt verzonden. Als u hiermee wilt experimenteren, kunt u preview-extensies inschakelen op uw apparaat voor ontwikkelaars.
  • Uitbreidingen van meerdere leveranciers EXT : extensies van meerdere leveranciers die meerdere bedrijven definiëren en implementeren. Groepen geïnteresseerde bedrijven kunnen op elk gewenst moment EXT-extensies introduceren.
  • Officiële KHR uitbreidingen: officiële Khronos-extensies die zijn geratificeerd als onderdeel van een kernspecificatierelease. KHR-extensies worden gedekt door dezelfde licentie als de kernspecificatie zelf.

De Windows Mixed Reality OpenXR Runtime ondersteunt een set MSFT en EXT extensies waarmee de volledige set HoloLens 2-functies wordt geleverd aan OpenXR-toepassingen:

Functiegebied Beschikbaarheid van extensies
Systemen en sessies OpenXR 1.0-kernspecificatie:
XrInstance, , XrSystemIdXrSession
Referentieruimten (weergave, lokaal, fase) OpenXR 1.0-kernspecificatie:
XrSpace
Configuraties weergeven (mono, stereo) OpenXR 1.0-kernspecificatie:
XrView...
Frametijd voor wisselhangers + OpenXR 1.0-kernspecificatie:
XrSwapchain... + xrWaitFrame
Samenstellingslagen
(projectie, quad)
OpenXR 1.0-kernspecificatie:
XrCompositionLayer... + xrEndFrame
Invoer en haptiek OpenXR 1.0-kernspecificatie:
XrAction...
Direct3D 11/12-integratie Officiële KHR extensies uitgebracht:
XR_KHR_D3D11_enable
XR_KHR_D3D12_enable
Niet-afhankelijke verwijzingsruimte
(ervaringen op 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
(grip/doelhouding, luchtkraan, greep)

Alleen HoloLens 2

MSFT extensie uitgebracht:
XR_MSFT_hand_interaction
Handtekening + handmesje

Alleen HoloLens 2

EXT extensie uitgebracht:
XR_EXT_hand_tracking

MSFT extensie uitgebracht:
XR_MSFT_hand_tracking_mesh

Oogklikken

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
Interactieprofielen voor bewegingscontroller
(Samsung Odyssey en HP Reverb G2)
MSFT extensies die zijn uitgebracht in runtime 103:
XR_EXT_samsung_odyssey_controller
XR_EXT_hp_mixed_reality_controller
Animatiecontroller-rendermodellen MSFT extensie uitgebracht in runtime 104:
XR_MSFT_controller_model
Scène-begrip (vliegtuigen, meshes)

Alleen HoloLens 2

MSFT extensie uitgebracht in runtime 106:
XR_MSFT_scene_understanding
XR_MSFT_scene_understanding_serialization
Scènemarkering (QR-codes)

Alleen HoloLens 2

MSFT extensie uitgebracht in runtime 113:
XR_MSFT_scene_marker
Reprojectiemodi voor samenstellingslaag
(automatisch plannen 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 uitbreidingen 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 van meerdere leveranciers maken de code die u schrijft voor deze functies die overdraagbaar zijn voor runtimeleveranciers, net als bij 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 zijn 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 voor de volledige breedte van PC VR, waaronder de nieuwe Reverb G2-headset van HP. OpenXR biedt de ondersteuning van vr-leveranciers voor grote titels die vandaag nog worden verzonden, zoals Minecraft en Microsoft Flight Simulator! Zie de releaseopmerkingen voor meer informatie over ontwikkelen voor HoloLens (1e generatie).

Lees verder voor meer informatie over hoe u aan de slag kunt 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 waarmee de volledige mogelijkheden van HoloLens 2- en Windows Mixed Reality-headsets worden verlicht, waaronder hand-/oogtracking, 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 WinRT API-back-end. 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 het richten op HoloLens 2- en Windows Mixed Reality-headsets.

OpenXR in Unreal Engine

Unreal Engine 4.23 was de eerste grote game-enginerelease voor het verzenden van preview-ondersteuning voor OpenXR 1.0! Nu in Unreal Engine 4.26 is ondersteuning voor HoloLens 2, Windows Mixed Reality en andere VR-desktop-headsets beschikbaar via de ingebouwde OpenXR-ondersteuning van Unreal Engine. Unreal Engine 4.26 ondersteunt ook de OpenXR-extensieinvoegtoepassing van Microsoft. Dit maakt handinteractie en HP Reverb G2-controllerondersteuning mogelijk, waardoor de volledige functieset van HoloLens 2- en Windows Mixed Reality-headsets wordt verlicht. Unreal Engine 4.26 is vandaag beschikbaar op de Epic Games Launcher, met MRTK-Unreal 0.12 die OpenXR-projecten ondersteunen.

OpenXR voor systeemeigen ontwikkeling

U kunt ontwikkelen met behulp van OpenXR op een HoloLens 2- of Windows Mixed Reality immersive 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 OpenXR-toepassingen voor HoloLens 2- of Windows Mixed Reality VR-headsets wilt gaan ontwikkelen, raadpleegt u hoe u aan de slag gaat met OpenXR-ontwikkeling.

Bekijk deze video van 60 minuten voor een rondleiding door alle belangrijke onderdelen van de OpenXR-API, samen met voorbeelden van de echte toepassingen met behulp van OpenXR:

Zie ook