OpenXR

OpenXR-logotyp

OpenXR är en öppen royaltyfri API-standard från Khronos, som ger motorer intern åtkomst till en rad olika enheter i spektrumet för mixad verklighet.

Du kan utveckla med OpenXR på ett HoloLens 2- eller Windows Mixed Reality integrerande VR-headset på skrivbordet. Om du inte har tillgång till ett headset kan du använda HoloLens 2-emulatorn eller Windows Mixed Reality simulatorn i stället.

Varför OpenXR?

Med OpenXR kan du skapa motorer som riktar sig till både holografiska enheter, till exempel HoloLens 2, och integrerande VR-enheter, till exempel Windows Mixed Reality headset för stationära datorer. Med OpenXR kan du skriva kod när den sedan är portabel på en mängd olika maskinvaruplattformar.

OpenXR-API:et använder en inläsare för att ansluta ditt program direkt till headsetets inbyggda plattformsstöd. Slutanvändarna får maximal prestanda och minsta svarstid, oavsett om de använder ett Windows Mixed Reality eller något annat headset.

Vad är OpenXR?

OpenXR-API:et tillhandahåller grundläggande attitydförutsägelse, bildrutetid och spatiala indatafunktioner som du behöver för att skapa en motor som kan rikta sig till både holografiska och integrerande enheter.

Om du vill veta mer om OpenXR-API:et kan du ta en titt på OpenXR 1.0-specifikationen, API-referensen och snabbreferensguiden. Mer information finns på sidan för Khronos OpenXR.

För att rikta in dig på den fullständiga funktionsuppsättningen för HoloLens 2 använder du även openxr-tillägg som är specifika för flera leverantörer och som möjliggör ytterligare funktioner utöver OpenXR 1.0-kärnan, till exempel artikulerad handspårning, ögonspårning, rumslig mappning och spatiala fästpunkter. Mer information finns i avsnittet Översikt nedan om de tillägg som kommer senare i år.

OpenXR är inte i sig en mixed reality-motor. I stället gör OpenXR det möjligt för motorer som Unity och Unreal att skriva portabel kod en gång som sedan kan komma åt de inbyggda plattformsfunktionerna i användarens holografiska eller integrerande enhet, oavsett vilken leverantör som har skapat plattformen.

Översikt

OpenXR-specifikationen definierar en tilläggsmekanism som gör det möjligt för körningsimplementerare att exponera ytterligare funktioner utöver de kärnfunktioner som definieras i basspecifikationen för OpenXR 1.0.

Det finns tre typer av OpenXR-tillägg:

  • Leverantörstillägg (till exempel MSFT): Möjliggör innovation per leverantör i maskinvaru- eller programvarufunktioner. Alla körningsleverantörer kan när som helst introducera och leverera ett leverantörstillägg.
    • Experimentella leverantörstillägg (till exempel MSFT_preview): Experimentella leverantörstillägg som förhandsgranskas för att samla in feedback. MSFT_preview tillägg gäller endast för utvecklarenheter och tas bort när det verkliga tillägget levereras. Om du vill experimentera med dem kan du aktivera förhandsgranskningstillägg på din utvecklarenhet.
  • Tillägg mellan leverantörer EXT : Tillägg mellan leverantörer som flera företag definierar och implementerar. Grupper av intresserade företag kan när som helst införa EXT-tillägg.
  • Officiella KHR tillägg: Officiella Khronos-tillägg som ratificeras som en del av en grundläggande specifikationsutgåva. KHR-tillägg omfattas av samma licens som själva kärnspecifikationen.

Windows Mixed Reality OpenXR Runtime stöder en uppsättning MSFT och EXT tillägg som ger en fullständig uppsättning HoloLens 2-funktioner till OpenXR-program:

Funktionsområde Tilläggstillgänglighet
System + sessioner OpenXR 1.0 Core Spec:
XrInstance, XrSystemId, XrSession
Referensutrymmen (vy, lokal, fas) OpenXR 1.0 Core Spec:
XrSpace
Visa konfigurationer (mono, stereo) OpenXR 1.0 Core Spec:
XrView...
Växlingskedjor + tidsinställning för bildruta OpenXR 1.0 Core Spec:
XrSwapchain... + xrWaitFrame
Sammansättningslager
(projektion, quad)
OpenXR 1.0 Core Spec:
XrCompositionLayer... + xrEndFrame
Indata och haptics OpenXR 1.0 Core Spec:
XrAction...
Direct3D 11/12-integrering Officiella KHR tillägg har släppts:
XR_KHR_D3D11_enable
XR_KHR_D3D12_enable
Obundet referensutrymme
(upplevelser i världsskala)
MSFT tillägget har släppts:
XR_MSFT_unbounded_reference_space
Rumsliga fästpunkter

MSFT tillägget har släppts:
XR_MSFT_spatial_anchor

MSFT tillägget släpptes i runtime 108:(endast HoloLens 2)
XR_MSFT_spatial_anchor_persistence

Handinteraktion
(grepp/målställning, luftkran, grepp)

Endast HoloLens 2

MSFT tillägget har släppts:
XR_MSFT_hand_interaction
Handartikulation + handnät

Endast HoloLens 2

EXT tillägget har släppts:
XR_EXT_hand_tracking

MSFT tillägget har släppts:
XR_MSFT_hand_tracking_mesh

Ögonöga

Endast HoloLens 2

EXT tillägget har släppts:
XR_EXT_eye_gaze_interaction
Mixed Reality Capture
(tredje återgivningen från PV-kameran)

Endast HoloLens 2

MSFT utgivna tillägg:
XR_MSFT_secondary_view_configuration
XR_MSFT_first_person_observer
Interaktionsprofiler för rörelsekontrollant
(Samsung Odyssey och HP Reverb G2)
MSFT tillägg som släpptes i runtime 103:
XR_EXT_samsung_odyssey_controller
XR_EXT_hp_mixed_reality_controller
Återgivningsmodeller för rörelsestyrenhet MSFT tillägg som släpptes i runtime 104:
XR_MSFT_controller_model
Scentolkning (plan, nät)

Endast HoloLens 2

MSFT tillägget släpptes i runtime 106:
XR_MSFT_scene_understanding
XR_MSFT_scene_understanding_serialization
Återprojektionslägen för sammansättningslager
(återskapande av automatisk plan eller endast orientering)
MSFT tillägget släpptes i runtime 106:
XR_MSFT_composition_layer_reprojection
Interop med andra Mixed Reality SDK:er
(till exempel QR)
MSFT tillägget har släppts:
XR_MSFT_spatial_graph_bridge
Interop med UWP CoreWindow API
(till exempel för tangentbord/mus)
MSFT tillägget släpptes i runtime 103:
XR_MSFT_holographic_window_attachment
Interop med äldre Mixed Reality WinRT-API:er
(till exempel SpatialAnchorTransferManager))

MSFT tillägget släpptes i runtime 105:
XR_MSFT_perception_anchor_interop

Andra tillägg mellan leverantörer

Officiella KHR tillägg har släppts:
XR_KHR_composition_layer_depth
XR_KHR_visibility_mask
XR_KHR_win32_convert_performance_counter_time
XR_KHR_composition_layer_color_scale_bias

EXT utgivna tillägg:
XR_EXT_win32_appcontainer_compatible
XR_EXT_debug_utils

Vissa av dessa tillägg kan börja som leverantörsspecifika MSFT tillägg, men Microsoft och andra OpenXR-körningsleverantörer arbetar tillsammans för att utforma flera leverantörer EXT eller KHR tillägg för många av dessa funktionsområden. Tillägg mellan leverantörer gör koden du skriver för dessa funktioner portabel mellan körningsleverantörer, som med kärnspecifikationen.

Var kan du använda OpenXR?

Skärmbild av Minecraft som spelas upp av en användare som bär ett headset för mixad verklighet

Minecrafts nya RenderDragon-motor har byggt sitt vr-skrivbordsstöd med OpenXR!

Microsoft har arbetat med Unity och Epic Games för att säkerställa att framtiden för mixad verklighet är öppen, inte bara för HoloLens 2, utan över hela bredden av PC VR, inklusive HP:s nya Reverb G2-headset. OpenXR driver vr-stöd mellan leverantörer för större titlar som levereras idag, till exempel Minecraft och Microsoft Flight Simulator! Mer information om hur du utvecklar för HoloLens (första generationen) finns i viktig information.

Läs mer om hur du kommer igång med OpenXR i Unity, Unreal Engine eller din egen motor!

OpenXR i Unity

Microsofts aktuella rekommenderade Unity-konfiguration för HoloLens 2 och Windows Mixed Reality utveckling är Unity 2020.3 LTS med plugin-programmet Mixed Reality OpenXR. Det här plugin-programmet innehåller stöd för OpenXR-tillägg som lyser upp alla funktioner i HoloLens 2 och Windows Mixed Reality headset, inklusive hand-/ögonspårning, spatiala fästpunkter och HP Reverb G2-styrenheter. MRTK-Unity stöder OpenXR från och med MRTK 2.7. Mer information om hur du kommer igång med Unity 2020 och OpenXR finns i Välja en Unity-version och XR-plugin-program.

Om du utvecklar för HoloLens (första generationen) måste du fortsätta använda Unity 2019.4 LTS med den äldre WinRT API-serverdelen. Om du riktar in dig på den nya HP Reverb G2-styrenheten i en Unity 2019-app kan du läsa våra HP Reverb G2-indatadokument.

Från och med Unity 2021.3 LTS är OpenXR den enda Unity-serverdelen som stöds för att rikta in sig på HoloLens 2 och Windows Mixed Reality headset.

OpenXR i Unreal Engine

Unreal Engine 4.23 var den första stora spelmotorn som släpptes för att skicka förhandsversionsstöd för OpenXR 1.0! Nu i Unreal Engine 4.26 finns stöd för HoloLens 2, Windows Mixed Reality och andra stationära VR-headset tillgängliga via Unreal Engine inbyggda OpenXR-stöd. Unreal Engine 4.26 stöder också Microsofts OpenXR-tilläggs-plugin, vilket möjliggör handinteraktion och STÖD för HP Reverb G2-styrenhet, vilket lyser upp den fullständiga funktionsuppsättningen av HoloLens 2- och Windows Mixed Reality headset. Unreal Engine 4.26 finns idag på Epic Games Launcher, med MRTK-Unreal 0.12 som stöd för OpenXR-projekt.

OpenXR för intern utveckling

Du kan utveckla med OpenXR på ett HoloLens 2- eller Windows Mixed Reality uppslukande VR-headset på skrivbordet. Om du inte har åtkomst till ett headset kan du använda HoloLens 2-emulatorn eller Windows Mixed Reality simulatorn i stället.

Om du vill börja utveckla OpenXR-program för HoloLens 2- eller Windows Mixed Reality VR-headset kan du läsa om hur du kommer igång med OpenXR-utveckling.

För en genomgång av alla viktiga komponenter i OpenXR API, tillsammans med exempel på verkliga program som använder OpenXR idag, kan du titta på den här 60-minuters genomgångsvideon:

Se även