OpenXR

OpenXR-logo

OpenXR is een open, gratis API-standaard van Khronos,die engines native toegang biedt tot een reeks apparaten in mixed reality spectrum.

U kunt ontwikkelen met behulp van OpenXR op een HoloLens 2 of Windows Mixed Reality in immersieve VR-headset op het bureaublad. Als u geen toegang hebt tot een headset, kunt u in plaats daarvan de HoloLens 2 Emulator of Windows Mixed Reality Simulator gebruiken.

Waarom OpenXR?

Met OpenXR kunt u engines bouwen die zijn gericht op zowel holografische apparaten, zoals HoloLens 2, als in immersieve VR-apparaten, zoals Windows Mixed Reality headsets voor desktop-pc's. Met OpenXR kunt u code schrijven zodra deze vervolgens overdraagbaar is 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 houdingsvoorspelling, frametijd en ruimtelijke invoer. U moet een engine bouwen die zowel op holografische als in immersieve apparaten kan worden gericht.

Raadpleeg de OpenXR 1.0-specificatie, API-verwijzingen snelzoekgids voor meer informatie over de OpenXR-API. Zie de Khronos OpenXR-pagina voor meer informatie.

Als u zich wilt richten op de volledige functieset van HoloLens 2, gebruikt u ook leverancierspecifieke OpenXR-extensies die aanvullende functies buiten de OpenXR 1.0-kern mogelijk maken, zoals handtracking, oogtracking, ruimtelijke toewijzing en ruimtelijke ankers. Zie de sectie Roadmap hieronder over de extensies die later dit jaar beschikbaar komen voor meer informatie.

OpenXR is zelf geen mixed reality engine. In plaats daarvan stelt OpenXR engines zoals Unity en Unreal in staat om draagbare code te schrijven zodra deze toegang heeft tot de systeemeigen platformfuncties van het holografische of ingebouwde apparaat van de gebruiker, ongeacht de leverancier die dat platform heeft gebouwd.

Roadmap

De OpenXR-specificatie definieert een uitbreidingsmechanisme waarmee runtime-implementaties extra functionaliteit beschikbaar kunnen maken buiten de kernfuncties die zijn gedefinieerd in de OpenXR 1.0-basisspecificatie.

Er zijn drie soorten OpenXR-extensies:

  • Leveranciersextensies (bijvoorbeeld ): hiermee kunt u innovatie per leverancier in hardware- of softwarefuncties mogelijk maken. Elke runtimeleverancier kan op elk moment een leverancierextensie introduceren en verzenden.
    • Experimentele leveranciersextensies (bijvoorbeeld ): er wordt een voorbeeld van experimentele leveranciersextensies weergegeven om feedback te verzamelen. MSFT_preview extensies zijn alleen voor apparaten van ontwikkelaars en worden verwijderd wanneer de echte extensie wordt geleverd. Als u mee wilt experimenteren, kunt u preview-extensies inschakelen op uw ontwikkelaarsapparaat.
  • Extensies voor meerdere leveranciers: extensies voor meerdere leveranciers die meerdere bedrijven definiëren en implementeren. Groepen geïnteresseerde bedrijven kunnen EXT-extensies op elk moment introduceren.
  • Officiële extensies: Officiële Khronos-extensies die zijn uitgebreid als onderdeel van een kernspecificatie. KHR-extensies vallen onder dezelfde licentie als de kernspecificatie zelf.

De Windows Mixed Reality OpenXR Runtime ondersteunt een set extensies en die de volledige MSFTEXT set HoloLens 2-functies naar OpenXR-toepassingen brengt:

Functiegebied Beschikbaarheid van extensies
Systemen en sessies Specificatie van OpenXR 1.0-kern:
XrInstance, XrSystemId, XrSession
Referentieruimten (weergave, lokaal, fase) Specificatie van OpenXR 1.0-kern:
XrSpace
Configuraties weergeven (mono, stereo) Specificatie van OpenXR 1.0-kern:
XrView...
Wisselingsketensframe timing Specificatie van OpenXR 1.0-kern:
XrSwapchain... + xrWaitFrame
Samenstellingslagen
(projectie, quad)
Specificatie van OpenXR 1.0-kern:
XrCompositionLayer... + xrEndFrame
Invoer en haptics Specificatie van OpenXR 1.0-kern:
XrAction...
Direct3D 11-integratie Officiële extensie uitgebracht:
XR_KHR_D3D11_enable
Direct3D 12-integratie Officiële extensie uitgebracht:
XR_KHR_D3D12_enable
Niet-gebonden referentieruimte
(ervaringen op wereldschaal)
extensie uitgebracht:
XR_MSFT_unbounded_reference_space
Ruimtelijke ankers

extensie uitgebracht:
XR_MSFT_spatial_anchor

extensie in preview-runtime 107:
XR_MSFT_spatial_anchor_persistence_preview

Handinteractie
(houding van de onderdruk/doel, tikken in de lucht, begrijpen)

HoloLens 2 alleen

extensie uitgebracht:
XR_MSFT_hand_interaction
Handgedeseratie + hand-mesh

HoloLens 2 alleen

extensie uitgebracht:
XR_EXT_hand_tracking

extensie uitgebracht:
XR_MSFT_hand_tracking_mesh
Oogcontact

HoloLens 2 alleen

extensie uitgebracht:
XR_EXT_eye_gaze_interaction
Vastleggen in mixed reality
(derde render van PV-camera)

HoloLens 2 alleen

uitgebrachte extensies:
XR_MSFT_secondary_view_configuration
XR_MSFT_first_person_observer
Interop met andere Mixed Reality SDK's
(bijvoorbeeld QR)

extensie uitgebracht:
XR_MSFT_spatial_graph_bridge

extensie uitgebracht in runtime 105:
XR_MSFT_perception_anchor_interop

Interop met UWP CoreWindow API
(bijvoorbeeld voor toetsenbord/muis)
extensie uitgebracht in runtime 103:
XR_MSFT_holographic_window_attachment
Interactieprofielen voor bewegingscontrollers
(Samsung Hado en HP- En HP-hp-versie G2)
extensies uitgebracht in runtime 103:
XR_EXT_samsung_odyssey_controller
XR_EXT_hp_mixed_reality_controller
Modellen voor het renderen van bewegingscontrollers extensie uitgebracht in runtime 104:
XR_MSFT_controller_model
Scène-inzicht (vlakken, meshes)

HoloLens 2 alleen

extensie uitgebracht in runtime 106:
XR_MSFT_scene_understanding
XR_MSFT_scene_understanding_serialization

Reprojectiemodi voor de samenstellingslaag
(reprojection auto-planar or orientation-only)
extensie uitgebracht in runtime 106:
XR_MSFT_composition_layer_reprojection
Andere extensies voor meerdere leveranciers

Officiële 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

uitgebrachte extensies:
XR_EXT_win32_appcontainer_compatible
XR_EXT_debug_utils

Hoewel sommige van deze extensies kunnen worden gebruikt als leverancierspecifieke extensies, werken Microsoft en andere MSFT OpenXR-runtimeleveranciers samen om verschillende leveranciers of extensies te ontwerpen voor veel van deze EXTKHR functiegebieden. Extensies van verschillende leveranciers zorgen ervoor dat de code die u schrijft voor deze functies overdraagbaar is voor runtimeleveranciers, zoals de kernspecificatie al heeft.

Waar kunt u OpenXR gebruiken?

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

Minecraft nieuwe RenderDragon-engine heeft de VR-ondersteuning voor desktops 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 in de volledige breedte van PC VR, met inbegrip van de nieuwe Unity G2-headsetvan HP. Met OpenXR wordt de CROSS-vendor VR-ondersteuning voor de verzending van belangrijke titels mogelijk gemaakt, zoals Minecraft en Microsoft Flight Simulator! Zie de opmerkingen bij de release voor meer informatie over HoloLens (eerste generatie).

Lees verder voor meer informatie over hoe u aan de slag kunt gaan met OpenXR in Unity, De Engine van Unity of uw eigen engine.

OpenXR in Unity

Microsoft's huidige aanbevolen Unity-configuratie voor HoloLens 2 en Windows Mixed Reality-ontwikkeling is Unity 2020.3 LTS met de meest recente Mixed Reality OpenXR-invoegvoeghoek. Deze invoegtekst bevat ondersteuning voor de OpenXR-extensies die de volledige mogelijkheden van HoloLens 2- en Windows Mixed Reality headsetsbelichten, waaronder hand-/oogtracking, ruimtelijke ankers en HP- En Hp-hp-controllers voor de M2. MRTK-Unity ondersteuning voor OpenXR vanaf MRTK 2.7. Zie Choosing a Unity version and XR plugin(Een Unity-versie en XR-invoegversie 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 in een Unity 2019-app richt op de nieuwe HPTarget G2-controller, bekijkt u onze HP-invoer docs voor De hp-versie G2.

Vanaf Unity 2021.2is OpenXR de enige ondersteunde Unity-back-en-HoloLens 2 en Windows Mixed Reality headsets.

OpenXR in Unreal Engine

Unreal Engine 4.23 was de eerste belangrijke release van de game-engine voor het verzenden van preview-ondersteuning voor OpenXR 1.0! Ondersteuning voor HoloLens 2, Windows Mixed Reality en andere DESKTOP VR-headsets is nu beschikbaar in Reality Engine 4.26via de ingebouwde OpenXR-ondersteuning van De engine van Unreal Engine. Unreal Engine 4.26 biedt ook ondersteuning voor de Microsoft OpenXR-extensie-invoegvoegfunctie, waardoor handinteractie en ONDERSTEUNING voor HP Interaction G2-controller mogelijk worden, waardoor de volledige functieset van HoloLens 2 en Windows Mixed Reality headsets wordt belicht. Unreal Engine 4.26 is nu beschikbaar op epic Games Launcher,met ondersteuning MRTK-Unreal 0.12 voor OpenXR-projecten.

OpenXR voor native ontwikkeling

U kunt ontwikkelen met behulp van OpenXR op een HoloLens 2 of Windows Mixed Reality in immersieve VR-headset op het bureaublad. Als u geen toegang hebt tot een headset, kunt u in plaats daarvan de HoloLens 2 Emulator of Windows Mixed Reality Simulator gebruiken.

Zie Aan de slag met OpenXR-ontwikkelingom te beginnen met het ontwikkelen van OpenXR-toepassingen voor HoloLens 2 of Windows Mixed Reality VR-headsets.

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

Zie ook