Entwickler von Collabora Projekt , in dessen Rahmen mit Unterstützung von Valve eine Bibliothek entwickelt wird, die Elemente zur Interaktion mit traditionellen Desktop-Umgebungen in dreidimensionalen Räumen bereitstellt, die bei der Verwendung von 3D-Brillen und Virtual-Reality-Headsets entstehen. Der Code der Bibliothek ist in C geschrieben und unter der MIT-Lizenz verfügbar. Fertige Builds für und .
Derzeit stehen für Linux bereits Mittel zur direkten Ausgabe auf Virtual-Reality-Headsets zur Verfügung (Vulkan-Erweiterungen VK_EXT_acquire_xlib_display für X11 und VK_EXT_acquire_wl_display für Wayland), jedoch fehlen die Unterstützung für die korrekte Darstellung von Fenstern im 3D-Raum und die Synchronisierung der Bildwiederholfrequenz. Ziel des Projekts xrdesktop ist es, Methoden zu entwickeln, die es ermöglichen, klassische Benutzeroberflächen, die für die Anzeige auf einem zweidimensionalen Bildschirm ausgelegt sind und die Steuerung über Tastatur und Maus erfordern, in virtuellen Umgebungen zu verwenden.
Die Komponenten von xrdesktop erweitern bestehende Fenster- und Kompositormanagementsysteme um Funktionen zur Nutzung von Laufzeitsystemen für virtuelle Realität, um Fenster und Desktops in dreidimensionalen virtuellen Umgebungen darzustellen. Bei xrdesktop wird die Idee gefördert, sich in bestehende Desktop-Umgebungen zu integrieren, ohne einen separaten spezialisierten Kompositorman ager starten zu müssen, und ermöglicht es, bereits vorhandene Benutzerkonfigurationen, die mit einem herkömmlichen Monitor verwendet werden, mit 3D-Headsets zu nutzen.
Die Architektur des Projekts sieht die Möglichkeit der Integration mit beliebigen Desktop-Umgebungen vor, jedoch sind in der aktuellen Entwicklungsphase Komponenten zur Unterstützung von Virtual-Reality-Headsets nur für KDE und GNOME implementiert. Für KDE wird die Unterstützung von 3D-Headsets über ein Compiz-ähnliches Plugin realisiert, während sie für GNOME über eine Sammlung von Patches für GNOME Shell umgesetzt wird. Die genannten Komponenten spiegeln bestehende Fenster in die virtuelle Umgebung der 3D-Headsets entweder in Form einer separaten Szene oder im Overlay-Modus wider, bei dem Desktop-Fenster sich über andere gestartete Anwendungen der virtuellen Realität legen können.
Neben den Rendering-Mechanismen bietet xrdesktop Komponenten für die Navigation und Eingabe mit speziellen Spatial Controllern wie Valve Index und VIVE Wand. Basierend auf Informationen von VR-Controllern generiert xrdesktop Standard-Eingabeereignisse und simuliert die Nutzung von Tastatur und Maus.
xrdesktop umfasst mehrere Bibliotheken, die Texturen für das VR-Runtime mittels OpenVR erstellen, sowie ein API-basiertes Rendering-System für einen vollständigen Desktop in einer 3D-Umgebung. Da xrdesktop keinen eigenen Fenster-Manager zur Verfügung stellt, ist es notwendig, die Integration mit bestehenden Fenster-Managern vorzunehmen (xrdesktop kann für jeden X11- oder Wayland-Fenster-Manager portiert werden). Auf der Seite der Grafikkartentreiber wird ein Treiber benötigt, der API Vulkan und die Erweiterung VK_KHR_external_memory unterstützt.
Die Hauptbestandteile von xrdesktop:
- — eine glib-Bindung für Vulkan, die Klassen zur Verarbeitung von Geräten, Shadern und zur Initialisierung von Texturen aus dem Speicher oder DMA-Puffern bereitstellt;
- — API zur Abstraktion von Programmierschnittstellen für die Entwicklung von Anwendungen für virtuelle Realität. Derzeit wird nur OpenVR unterstützt, aber in naher Zukunft wird auch die Unterstützung des OpenXR-Standards hinzugefügt;
- — eine Bibliothek zur Synthese von Eingabeveranstaltungen wie Mausbewegungen, Klicks und Tasteneingaben, implementiert in Form von Backends für xdo, xi2 und Clutter;
- — eine Bibliothek zur Verwaltung von Fenstern in einer 3D-Umgebung, ein Satz begleitender Widgets und Backends zur Darstellung der Szene;
- und — ein Plugin für KWin zur Integration mit KDE und einem Plasma-Applet, um KWin in den Rendering-Modus auf einem 3D-Headset zu versetzen;
- und — eine Sammlung von Patches für GNOME Shell zur Integration der Unterstützung für xrdesktop und einer Ergänzung zum Umschalten der Ausgabe auf ein 3D-Headset in GNOME Shell.
Das Projekt unterstützt verschiedene Methoden zur Organisation der Interaktion mit dem Desktop und Fenstern in einer virtuellen Umgebung. Diese Methoden können verwendet werden, um Fenster zu erfassen, zu skalieren, zu verschieben, zu drehen, Überlagerungen zu erstellen, Fenster zu fixieren oder auszublenden, ein Steuerungsmenü zu verwenden und gleichzeitig mit zwei Händen über mehrere Controller zu steuern.








Quelle: opennet.ru
