OpenXR

OpenXR-Logo

OpenXR ist ein offener lizenzfreier API-Standard von Khronos, der Engines nativen Zugriff auf eine Reihe von Geräten im Mixed Reality-Spektrum bietet.

Sie können die Entwicklung mit OpenXR auf einem HoloLens 2 oder Windows Mixed Reality immersiven VR-Headsets auf dem Desktop durchführen. Wenn Sie keinen Zugriff auf ein Headset haben, können Sie stattdessen den HoloLens 2 Emulator oder den Windows Mixed Reality Simulator verwenden.

Warum OpenXR?

Mit OpenXR können Sie Engines erstellen, die sowohl holografische Geräte wie HoloLens 2 als auch immersive VR-Geräte wie Windows Mixed Reality Headsets für Desktop-PCs verwenden. Mit OpenXR können Sie Code schreiben, der dann über eine Vielzahl von Hardwareplattformen portierbar ist.

Die OpenXR-API verwendet einen Ladeprogramm, um Ihre Anwendung direkt mit der nativen Plattformunterstützung Ihres Headsets zu verbinden. Endbenutzer erhalten maximale Leistung und minimale Latenz, unabhängig davon, ob sie ein Windows Mixed Reality oder ein anderes Headset verwenden.

Was ist OpenXR?

Die OpenXR-API bietet die Kernfunktionen für Posenvorhersage, Frame-Timing und räumliche Eingabefunktionen, die Sie benötigen, um eine Engine zu erstellen, die sowohl holografische als auch immersive Geräte verwenden kann.

Weitere Informationen zur OpenXR-API finden Sie in der OpenXR 1.0-Spezifikation, api-Referenz und Kurzübersicht. Weitere Informationen finden Sie auf der Seite Khronos OpenXR.

Sie verwenden auch hersteller- und herstellerspezifische OpenXR-Erweiterungen, die zusätzliche Features über den OpenXR 1.0-Kern hinaus ermöglichen, wie z. B. artikuliertes Handtracking, Eyetracking, Räumliche Zuordnung und Raumanker, um den vollständigen Funktionsumfang der HoloLens 2 als Ziel zu verwenden. Weitere Informationen finden Sie weiter unten im Abschnitt Roadmap zu den Erweiterungen, die später in diesem Jahr verfügbar sind.

OpenXR ist selbst keine Mixed Reality-Engine. Stattdessen ermöglicht OpenXR Engines wie Unity und Unreal, portablen Code zu schreiben, der dann auf die nativen Plattformfeatures des holografischen oder immersiven Geräts des Benutzers zugreifen kann, unabhängig davon, welcher Anbieter diese Plattform erstellt hat.

Roadmap

Die OpenXR-Spezifikation definiert einen Erweiterungsmechanismus, mit dem Laufzeitimplementieren zusätzliche Funktionen verfügbar machen können, die über die kernfeatures hinausgehen, die in der OpenXR 1.0-Basisspezifikation definiert sind.

Es gibt drei Arten von OpenXR-Erweiterungen:

  • Anbietererweiterungen (z. B. XR_MSFT_...): Ermöglicht herstellerspezifische Innovationen bei Hardware- oder Softwarefeatures. Jeder Laufzeitanbieter kann jederzeit eine Anbietererweiterung einführen und versenden.
    • Experimentelle Anbietererweiterungen (z. B XR_MSFTX_.... ): Experimentelle Anbietererweiterungen werden in der Vorschau angezeigt, um Feedback zu sammeln. XR_MSFTX_... Erweiterungen sind nur für Entwicklergeräte vorgesehen und werden entfernt, wenn die echte Erweiterung ausgeliefert wird. Um damit zu experimentieren, können Sie Vorschauerweiterungen auf Ihrem Entwicklergerät aktivieren.
  • Anbieterübergreifende EXT Erweiterungen: Anbieterübergreifende Erweiterungen, die von mehreren Unternehmen definiert und implementiert werden. Gruppen interessierter Unternehmen können EXT-Erweiterungen jederzeit einführen.
  • Offizielle KHR Erweiterungen: Offizielle Khronos-Erweiterungen, die als Teil einer Kernspezifikationsversion ratifiziert wurden. KHR-Erweiterungen werden von derselben Lizenz wie die Kernspezifikation selbst abgedeckt.

Die Windows Mixed Reality OpenXR Runtime unterstützt eine Reihe von MSFT Erweiterungen undEXT, die den vollständigen Satz von HoloLens 2 Features für OpenXR-Anwendungen bereitstellen:

Featurebereich Verfügbarkeit von Erweiterungen
Systeme + Sitzungen OpenXR 1.0-Kernspezifikation:
XrInstance, XrSystemId, XrSession
Referenzräume (Ansicht, lokal, Phase) OpenXR 1.0-Kernspezifikation:
XrSpace
Ansichtskonfigurationen (Mono, Stereo) OpenXR 1.0-Kernspezifikation:
XrView...
Swapchains + Frame-Timing OpenXR 1.0-Kernspezifikation:
XrSwapchain... + xrWaitFrame
Kompositionsebenen
(Projektion, Quad)
OpenXR 1.0-Kernspezifikation:
XrCompositionLayer... + xrEndFrame
Eingabe und Haptik OpenXR 1.0-Kernspezifikation:
XrAction...
Direct3D 11/12-Integration Offizielle KHR Erweiterungen veröffentlicht:
XR_KHR_D3D11_enable
XR_KHR_D3D12_enable
Nicht gebundener Verweisbereich
(Erfahrungen auf Weltniveau)
MSFT Erweiterung veröffentlicht:
XR_MSFT_unbounded_reference_space
Raumanker

MSFT Erweiterung veröffentlicht:
XR_MSFT_spatial_anchor

MSFT Erweiterung veröffentlicht in Runtime 108:(nur HoloLens 2)
XR_MSFT_spatial_anchor_persistence

Handinteraktion
(Griff-/Zielhaltung, Luftzapfen, Greifen)

Nur HoloLens 2

MSFT Erweiterung veröffentlicht:
XR_MSFT_hand_interaction
Handartikulation + Handgitter

Nur HoloLens 2

EXT Erweiterung veröffentlicht:
XR_EXT_hand_tracking

MSFT Erweiterung veröffentlicht:
XR_MSFT_hand_tracking_mesh

Blick auf die Augen

Nur HoloLens 2

EXT Erweiterung veröffentlicht:
XR_EXT_eye_gaze_interaction
Mixed Reality Capture
(Drittes Rendern von PV-Kamera)

Nur HoloLens 2

MSFT Veröffentlichte Erweiterungen:
XR_MSFT_secondary_view_configuration
XR_MSFT_first_person_observer
Bewegungscontrollerinteraktionsprofile
(Samsung Odyssey und HP Reverb G2)
MSFT In Runtime 103 veröffentlichte Erweiterungen:
XR_EXT_samsung_odyssey_controller
XR_EXT_hp_mixed_reality_controller
Motion Controller-Rendermodelle MSFT In Runtime 104 veröffentlichte Erweiterung:
XR_MSFT_controller_model
Szenenverständnis (Ebenen, Gitter)

Nur HoloLens 2

MSFT In Runtime 106 veröffentlichte Erweiterung:
XR_MSFT_scene_understanding
XR_MSFT_scene_understanding_serialization
Modi für die Neuprojektion von Kompositionsebenen
(automatische planare oder nur ausrichtungsbasierte Neuprojektion)
MSFT In Runtime 106 veröffentlichte Erweiterung:
XR_MSFT_composition_layer_reprojection
Interoperabilität mit anderen Mixed Reality SDKs
(z. B. QR)
MSFT Erweiterung veröffentlicht:
XR_MSFT_spatial_graph_bridge
Interoperabilität mit UWP CoreWindow-API
(z. B. für Tastatur/Maus)
MSFT In Runtime 103 veröffentlichte Erweiterung:
XR_MSFT_holographic_window_attachment
Interoperabilität mit Legacy-Mixed Reality WinRT-APIs
(z. B. SpatialAnchorTransferManager))

MSFT In Runtime 105 veröffentlichte Erweiterung:
XR_MSFT_perception_anchor_interop

Andere anbieterübergreifende Erweiterungen

Offizielle KHR Erweiterungen veröffentlicht:
XR_KHR_composition_layer_depth
XR_KHR_visibility_mask
XR_KHR_win32_convert_performance_counter_time
XR_KHR_composition_layer_color_scale_bias

EXT Veröffentlichte Erweiterungen:
XR_EXT_win32_appcontainer_compatible
XR_EXT_debug_utils

Während einige dieser Erweiterungen möglicherweise als herstellerspezifische MSFT Erweiterungen beginnen, arbeiten Microsoft und andere OpenXR-Laufzeitanbieter zusammen, um anbieterübergreifende EXT Oder KHR Erweiterungen für viele dieser Featurebereiche zu entwerfen. Durch anbieterübergreifende Erweiterungen wird der Code, den Sie für diese Features schreiben, wie bei der Kernspezifikation von Laufzeitanbietern portierbar.

Wo können Sie OpenXR verwenden?

Screenshot: Spielen von Minecraft durch einen Benutzer, der ein Mixed Reality-Headset trägt

Minecrafts neue RenderDragon-Engine hat seine Desktop-VR-Unterstützung mit OpenXR entwickelt!

Microsoft hat mit Unity und Epic Games zusammengearbeitet, um sicherzustellen, dass die Zukunft von Mixed Reality offen ist, nicht nur für HoloLens 2, sondern über die gesamte Bandbreite der PC-VR, einschließlich des neuen Reverb G2-Headsets von HP. OpenXR unterstützt die anbieterübergreifende VR-Unterstützung für wichtige Titel, die heute geliefert werden, wie Minecraft und Microsoft Flight Simulator! Weitere Informationen zur Entwicklung für HoloLens (1. Generation) finden Sie in den Versionshinweisen.

Lesen Sie weiter, um zu erfahren, wie Sie mit OpenXR in Unity, der Unreal Engine oder Ihrer eigenen Engine beginnen können!

OpenXR in Unity

Die derzeit von Microsoft empfohlene Unity-Konfiguration für HoloLens 2 und Windows Mixed Reality Entwicklung ist Unity 2020.3 LTS mit dem Mixed Reality OpenXR-Plug-In. Dieses Plug-In bietet Unterstützung für die OpenXR-Erweiterungen, die die funktionen von HoloLens 2 und Windows Mixed Reality Headsets ausleuchten, einschließlich Hand-/Augenverfolgung, Raumanker und HP Reverb G2-Controllern. MRTK-Unity unterstützt OpenXR ab MRTK 2.7. Weitere Informationen zu den ersten Schritten mit Unity 2020 und OpenXR finden Sie unter Auswählen einer Unity-Version und eines XR-Plug-Ins.

Wenn Sie für HoloLens (1. Generation) entwickeln, müssen Sie Unity 2019.4 LTS weiterhin mit dem WinRT-API-Legacy-Back-End verwenden. Wenn Sie den neuen HP Reverb G2-Controller in einer Unity 2019-App als Ziel verwenden, lesen Sie unsere HP Reverb G2-Eingabedokumentation.

Ab Unity 2021.3 LTS wird OpenXR das einzige unterstützte Unity-Back-End für HoloLens 2 und Windows Mixed Reality Headsets sein.

OpenXR in der Unreal-Engine

Die Unreal Engine 4.23 war die erste Hauptversion der Spiele-Engine, die Vorschauunterstützung für OpenXR 1.0 geliefert hat! In Der Unreal Engine 4.26 steht jetzt Unterstützung für HoloLens 2, Windows Mixed Reality und andere Desktop-VR-Headsets über die integrierte OpenXR-Unterstützung der Unreal Engine zur Verfügung. Die Unreal Engine 4.26 unterstützt auch das OpenXR-Erweiterungs-Plug-In von Microsoft, das Handinteraktionen und UNTERSTÜTZUNG des HP Reverb G2-Controllers ermöglicht und den gesamten Funktionssatz von HoloLens 2 und Windows Mixed Reality Headsets beleuchtet. Die Unreal Engine 4.26 ist heute im Epic Games Launcher verfügbar, wobei MRTK-Unreal 0.12 OpenXR-Projekte unterstützt.

OpenXR für die native Entwicklung

Sie können die Entwicklung mit OpenXR auf einem HoloLens 2 oder Windows Mixed Reality immersiven VR-Headsets auf dem Desktop durchführen. Wenn Sie keinen Zugriff auf ein Headset haben, können Sie stattdessen den HoloLens 2 Emulator oder den Windows Mixed Reality Simulator verwenden.

Informationen zum Entwickeln von OpenXR-Anwendungen für HoloLens 2 oder Windows Mixed Reality VR-Headsets finden Sie unter Erste Schritte mit der OpenXR-Entwicklung.

Eine Tour durch alle hauptkomponenten der OpenXR-API sowie Beispiele für die realen Anwendungen, die OpenXR heute verwenden, finden Sie in diesem 60-minütigen Video zur exemplarischen Vorgehensweise:

Weitere Informationen