PCVR

Überblick

Bei Standalone-Geräten erfolgt das gesamte Rendering und die Verarbeitung auf dem Headset selbst. Bei nicht eigenständigen Geräten, die auch als PCVR bezeichnet werden, erfolgt das gesamte Rendering und der Großteil der damit verbundenen Verarbeitung auf einem Computer, der entweder über ein physisches Kabel oder drahtlos mit dem Headset verbunden ist.

Für Entwickler kann die Arbeit in einer PCVR-basierten Umgebung einfacher und produktiver sein als die kontinuierliche Bereitstellung und Prüfung auf einem eigenständigen VR-Gerät. Dies liegt daran, dass die Methoden und Werkzeuge für Entwicklung, Tests, Debugging und Profiling größtenteils dieselben sind wie bei normalen Windows- oder Linux-Desktop-Anwendungen, was die VR-Anwendung immer noch ist, auch wenn sie auf dem Desktop nichts auf dem Bildschirm darstellt.

Für Endbenutzer kann die Einrichtung und Ausführung von PCVR jedoch komplizierter sein als die einfache Installation der Anwendung auf einem Standalone-Gerät.

Bei Geräten, bei denen beide Ansätze möglich sind (z. B. dem Meta Quest 3), kann es für die Produktivität nützlich sein, beide zu kombinieren. Verwenden Sie PCVR (oder sogar den Meta XR Simulator) während der Entwicklung, wenn dies sinnvoll ist, aber konzentrieren Sie sich auf die eigenständige (Android-)Version für AR-Funktionen und für die endgültige Auslieferung an die Endbenutzer.

Hinweis: Die Leistungsaspekte der Ausführung derselben Qt-Anwendung unter Android im Standalone-Modus und unter Windows im PCVR-Modus können sehr unterschiedlich sein, da sie auf einer völlig anderen CPU, GPU und einem anderen Software-Stack ausgeführt werden. Performance-Profiling-Schlussfolgerungen sollten immer durch natives Ausführen in der entsprechenden Umgebung und Profiling mit plattformspezifischen Tools gezogen werden.

Was die Eingabe betrifft, so werden die Daten vom Controller des Headsets über die OpenXR-API an die auf dem PC laufende Anwendung geliefert, nicht anders als bei Anwendungen, die direkt auf dem Headset laufen. Darüber hinaus kann die Anwendung für weitere Eingabemethoden auf Peripheriegeräte zurückgreifen, die an den PC angeschlossen sind. Dies sollte jedoch sorgfältig abgewogen werden, da die Verwendung von Tastatur- oder Mauseingaben eine Reihe potenzieller Fallstricke birgt.

Weitere Überlegungen

Bei PCVR hängen Qualität und Leistung stark von den Fähigkeiten des Host-PCs ab, aber auch die Streaming-Technologie und damit verbundene Faktoren wie die Bandbreite des drahtlosen Netzwerks können die Ergebnisse beeinflussen. Das bedeutet auch, dass das visuelle Erlebnis bei verschiedenen Durchläufen und in verschiedenen Umgebungen variieren kann, insbesondere wenn drahtloses Streaming verwendet wird.

Einige Funktionen stehen möglicherweise nicht zur Verfügung oder sind im Vergleich zu Standalone-Geräten eingeschränkt, insbesondere im Zusammenhang mit AR. Nehmen wir zum Beispiel Passthrough. Im Standalone-Modus haben die Anwendung und der zugrundeliegende Software-Stack einfachen Zugriff auf den Kamera-Feed des Headsets. Beim Streaming von einem entfernten Computer kann Passthrough teuer werden und eine Menge zusätzlicher Datenübertragungen zum PC erfordern. Daher ist es nicht ungewöhnlich, dass AR- und raumbezogene Funktionen in PCVR-Systemen nicht verfügbar sind.

Im PCVR-Ökosystem gibt es mehrere Lösungen, die eine OpenXR-Implementierung und kabelgebundenes oder drahtloses Streaming bieten, wobei die Verfügbarkeit je nach verwendetem Gerät variiert. Einige Laufzeiten sind an eine bestimmte Streaming-Lösung gebunden, und jede von ihnen kann einen anderen Satz von Funktionen bieten.

Auch die Unterstützung für 3D-APIs variiert. Im Allgemeinen kann man davon ausgehen, dass Direct 3D 11, Direct 3D 12 und Vulkan von allen OpenXR-Implementierungen unter Windows unterstützt werden. OpenGL-Unterstützung ist selten und wurde von Qt nicht mit PCVR getestet.

Hinweis: Die Verwendung von Direct 3D 11 wird nicht empfohlen, da wichtige Funktionen wie Multiview Rendering mit dieser API nicht unterstützt werden. Bevorzugen Sie stattdessen Direct 3D 12.

Das Ändern der verwendeten 3D-API unterscheidet sich nicht von jeder Qt Quick oder Qt Quick 3D Anwendung: Setzen Sie die Umgebungsvariable QSG_RHI_BACKEND (zum Beispiel auf d3d12) oder rufen Sie QQuickWindow::setGraphicsApi() auf.

Auswahl der OpenXR-Implementierung

Mit dem standardmäßigen Khronos OpenXR-Lader gibt es mehrere Möglichkeiten, die zu ladende Implementierung zu ändern:

  • Setzen Sie die Umgebungsvariable XR_RUNTIME_JSON. Die Einstellung XR_RUNTIME_JSON=c:\MetaXRSimulator\meta_openxr_simulator.json bewirkt beispielsweise, dass die anschließend gestartete Qt Quick 3D Xr-Anwendung die OpenXR-Implementierung des Meta XR Simulators auswählt.
  • Alternativ kann die Einstellung auch über die Registrierung dauerhaft vorgenommen werden. (unter Windows) Überprüfen/ändern Sie den Wert von ActiveRuntime unter Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenXR\1
  • Einige Streaming-Lösungen können Optionen in ihren Einstellungen haben, um die Verwendung einer bestimmten OpenXR-Implementierung zu erzwingen.

Drahtlose Streaming-Lösungen für das Meta Quest 3

Tabellen der getesteten Konfigurationen

Meta Quest 3

  • Kabelgebundene Verbindung (USB-C), Oculus OpenXR-Runtime
  • Kabelgebundene Verbindung (USB-C), SteamVR OpenXR-Laufzeitumgebung
  • Drahtlose Verbindung über AirLink, Oculus OpenXR-Laufzeit
  • Drahtlose Verbindung über AirLink, SteamVR OpenXR-Laufzeit
  • Drahtlose Verbindung über SteamLink, SteamVR OpenXR-Laufzeit
  • Drahtlose Verbindung über Virtual Desktop, SteamVR OpenXR-Laufzeit
  • Drahtlose Verbindung über Virtual Desktop, VDXR OpenXR-Laufzeit

Speziell

  • Meta XR Simulator (nur Windows; macOS wurde von Qt vorerst nicht getestet)

Weitere Lektüre

Diese Seite kann unmöglich auf alle Details, Konfigurationsprobleme und Möglichkeiten rund um PCVR eingehen. Für eine gute Zusammenfassung und Einführung in das Thema Streaming und OpenXR-Implementierungen empfiehlt sich ein Blick in das VDXR-Wiki.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.