OpenXR
OpenXR ist ein offener lizenzfreier API-Standard von Khronos und bietet Engines nativen Zugriff auf eine Reihe von Geräten über das Mixed Reality-Spektrum hinweg.
Sie können openXR auf einem immersiven VR-Headset von HoloLens 2 oder Windows Mixed Reality auf dem Desktop entwickeln. 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 als auch HoloLens 2 und immersive VR-Geräte wie Windows Mixed Reality-Headsets für Desktop-PCs ansprechen. Mit OpenXR können Sie Code schreiben, sobald dies dann auf einer Vielzahl von Hardwareplattformen portierbar ist.
Die OpenXR-API verwendet ein Ladeprogramm, um Ihre Anwendung direkt mit der systemeigenen 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 wichtigsten Funktionen für Posenvorhersage, Frameanzeige und räumliche Eingabefunktionen, die Sie zum Erstellen eines Moduls benötigen, das sowohl holografische als auch immersive Geräte ansprechen kann.
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.
Um den vollständigen Featuresatz von HoloLens 2 zu erreichen, verwenden Sie auch anbieterübergreifende und herstellerspezifische OpenXR-Erweiterungen. Diese ermöglichen Features wie artikulierte Handverfolgung, Eye Tracking, räumliche Zuordnung und räumliche Verankerungen. Weitere Informationen finden Sie im Abschnitt "Roadmap" zu den Erweiterungen, die später in diesem Jahr verfügbar sind.
OpenXR ist nicht selbst ein Mixed Reality-Modul. Stattdessen ermöglicht OpenXR Engines wie Unity und Unreal, tragbaren Code einmal zu schreiben, der dann auf die systemeigenen 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 Laufzeitimplementierer andere 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 in Hardware- oder Softwarefeatures. Jeder Laufzeitanbieter kann jederzeit eine Anbietererweiterung einführen und versenden. - Experimentelle Anbietererweiterungen (z. B
XR_MSFTX_...
.): Experimentelle Anbietererweiterungen, die in der Vorschau angezeigt werden, um Feedback zu sammeln.XR_MSFTX_...
Erweiterungen sind nur für Entwicklergeräte vorgesehen und werden entfernt, wenn die echte Erweiterung ausgeliefert wird. Um mit ihnen 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 Erweiterungen: Offizielle
KHR
Khronos-Erweiterungen wurden als Teil einer Kernspezifikationsversion ratifiziert. KHR-Erweiterungen werden von derselben Lizenz wie die Kernspezifikation selbst abgedeckt.
Die Windows Mixed Reality OpenXR-Runtime unterstützt eine Reihe von MSFT
Und EXT
Erweiterungen, die den vollständigen Satz von HoloLens 2-Features für OpenXR-Anwendungen bereitstellen:
Funktionsbereich | Verfügbarkeit der Erweiterung |
---|---|
Systeme + Sitzungen | OpenXR 1.0-Kernspezifikation:XrInstance , XrSystemId XrSession |
Referenzplätze (Ansicht, Lokal, Stufe) | OpenXR 1.0-Kernspezifikation:XrSpace |
Ansichtskonfigurationen (Mono, Stereo) | OpenXR 1.0-Kernspezifikation:XrView... |
Swapchains-Frameanzeigedauer + | 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 |
Ungebundenes Referenzbereich (weltweit skaliert Erfahrungen) |
MSFT Erweiterung veröffentlicht:XR_MSFT_unbounded_reference_space |
Raumanker |
|
Handinteraktion (Griff-/Ziel-Pose, Luftzapfen, Greifen) Nur HoloLens 2 |
MSFT Erweiterung veröffentlicht:XR_MSFT_hand_interaction |
Handartikulation + Handgitter Nur HoloLens 2 |
|
Anvisieren mit den 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 |
Interaktionsprofile für Bewegungscontroller (Samsung Odyssey und HP Reverb G2) |
MSFT In Runtime 103 veröffentlichte Erweiterungen:XR_EXT_samsung_odyssey_controller XR_EXT_hp_mixed_reality_controller |
Rendermodelle des Bewegungscontrollers | MSFT erweiterung veröffentlicht in Runtime 104:XR_MSFT_controller_model |
Szenenverständnis (Ebenen, Gitter) Nur HoloLens 2 |
MSFT In Laufzeit 106 veröffentlichte Erweiterung:XR_MSFT_scene_understanding XR_MSFT_scene_understanding_serialization |
Szenenmarkierung (QR-Codes) Nur HoloLens 2 |
MSFT In Laufzeit 113 veröffentlichte Erweiterung: XR_MSFT_scene_marker |
Neuprojektionsmodi für Kompositionsebenen (automatisch planar oder ausrichtungsgeschützte Neuprojektion) |
MSFT In Laufzeit 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 der UWP CoreWindow-API (z. B. für Tastatur/Maus) |
MSFT erweiterung veröffentlicht in Runtime 103:XR_MSFT_holographic_window_attachment |
Interoperabilität mit älteren Mixed Reality-WinRT-APIs (z. B SpatialAnchorTransferManager . )) |
|
Weitere anbieterübergreifende Erweiterungen | Offizielle
|
Während einige dieser Erweiterungen als anbieterspezifische MSFT
Erweiterungen beginnen können, arbeiten Microsoft und andere OpenXR-Laufzeitanbieter zusammen, um anbieterübergreifende EXT
oder KHR
Erweiterungen für viele dieser Featurebereiche zu entwerfen. Anbieterübergreifende Erweiterungen machen den Code, den Sie für diese Features für alle Laufzeitanbieter portierbar machen, wie bei der Kernspezifikation.
Wo können Sie OpenXR verwenden?
Minecrafts neues RenderDragon-Modul hat seine Desktop-VR-Unterstützung mit OpenXR erstellt!
Microsoft arbeitet mit Unity und Epic Games zusammen, um sicherzustellen, dass die Zukunft von Mixed Reality offen ist, nicht nur für HoloLens 2, sondern über die gesamte Breite des PC VR, einschließlich des neuen Reverb G2-Headsets von HP. OpenXR unterstützt den anbieterübergreifenden VR-Support für den heutigen Hauptversand von Titeln wie Minecraft und Microsoft Flight Simulator! Weitere Informationen zur Entwicklung für HoloLens (1. Generation) finden Sie in den Versionshinweisen.
Um zu erfahren, wie Sie mit OpenXR in Unity, Unreal Engine oder Ihrem eigenen Modul beginnen können, lesen Sie weiter!
OpenXR in Unity
Die aktuelle empfohlene Unity-Konfiguration für HoloLens 2 und die Windows Mixed Reality-Entwicklung ist Unity 2020.3 LTS mit dem Mixed Reality OpenXR-Plug-In. Dieses Plug-In enthält Unterstützung für die OpenXR-Erweiterungen, die die vollständigen Funktionen von HoloLens 2- und Windows Mixed Reality-Headsets unterstützen, einschließlich Hand-/Eye-Tracking, räumliche Verankerungen 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 älteren WinRT-API-Back-End verwenden. Wenn Sie auf den neuen HP Reverb G2-Controller in einer Unity 2019-App abzielen, lesen Sie unsere HP Reverb G2-Eingabedokumente.
Ab Unity 2021.3 LTS ist OpenXR das einzige unterstützte Unity-Back-End für HoloLens 2- und Windows Mixed Reality-Headsets.
OpenXR im Unreal Engine
Unreal Engine 4.23 war die erste hauptversion der Game-Engine, um Vorschauunterstützung für OpenXR 1.0 zu versenden! Jetzt ist in Unreal Engine 4.26 Unterstützung für HoloLens 2, Windows Mixed Reality und andere Desktop-VR-Headsets über die integrierte OpenXR-Unterstützung von Unreal Engine verfügbar. Unreal Engine 4.26 unterstützt auch das OpenXR-Erweiterungs-Plug-In von Microsoft. Dies ermöglicht die Handinteraktion und hp Reverb G2-Controllerunterstützung, die vollständige Feature-Set von HoloLens 2- und Windows Mixed Reality-Headsets zu beleuchten. Unreal Engine 4.26 ist heute auf dem Epic Games Launcher verfügbar, mit MRTK-Unreal 0.12 unterstützende OpenXR-Projekte.
OpenXR für systemeigene Entwicklung
Sie können openXR auf einem immersiven VR-Headset von HoloLens 2 oder Windows Mixed Reality auf dem Desktop entwickeln. 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 in den ersten Schritten 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 exemplarischen Vorgehensweisenvideo: