Проект xrdesktop для використання GNOME та KDE у шоломах віртуальної реальності

Розробники з компанії Collabora представили проект xrdesktop, в рамках якого за підтримки компанії Valve розвивається бібліотека з елементами для взаємодії з традиційними робочими столами всередині тривимірних оточень, що формуються під час використання 3D-окулярів та шоломів віртуальної реальності. Код бібліотеки написаний мовою Сі та поширюється під ліцензією MIT. Готові зборки підготовлено для Arch Linux и Ubuntu 19.04 / 18.04.

В даний час для Linux вже є засоби для прямого виведення на шоломи віртуальної реальності (Vulkan-розширення VK_EXT_acquire_xlib_display для X11 і VK_EXT_acquire_wl_display для Wayland), але відсутні підтримка на рівні коректного відтворення вікон в 3D. Метою проекту xrdesktop є розробка методів, які дозволять використовувати у віртуальних оточеннях класичні інтерфейси, орієнтовані на виведення на двовимірному екрані та керування за допомогою клавіатури та миші.

Проект xrdesktop для використання GNOME та KDE у шоломах віртуальної реальності

Компоненти xrdesktop розширюють наявні віконні та композитні менеджери можливостями для використання runtime систем віртуальної реальності для малювання вікон та робочого столу у тривимірних віртуальних оточеннях. У xrdesktop просувається ідея інтеграції в існуючі десктоп-оточення без необхідності запуску окремого спеціалізованого композитного менеджера і дозволяючи використовувати з 3D-шоломами вже наявні конфігурації користувача, що використовуються зі звичайним монітором.

Архітектура проекту передбачає можливість інтеграції з будь-якими робочими столами, але на поточному етапі розробки компоненти підтримки шоломів віртуальної реальності реалізовані для KDE і GNOME. Для KDE підтримка 3D-шоломів реалізована через Compiz-подібний плагін, а для GNOME через набір пачтів до GNOME Shell. Зазначені компоненти дзеркалують існуючі вікна у віртуальне оточення 3D-шоломів у формі окремої сцени або в оверлейному режимі, при якому вікна робочого столу можуть накладатися на інші запущені програми віртуальної реальності.

Крім механізмів відтворення в xrdesktop надаються компоненти для забезпечення навігації та введення за допомогою спеціалізованих просторових контролерів, таких як Valve Index та VIVE Wand. Xrdesktop на основі інформації від VR-контролерів генерує звичайні події введення, симулюючи використання клавіатури та миші.

До складу xrdesktop входить декілька бібліотек, що формують текстури вікон для VR runtime за допомогою OpenVR, а також заснована на API система рендерингу повноцінного робочого столу у 3D-оточенні. Оскільки xrdesktop не надає власного віконного менеджера, потрібне проведення роботи з інтеграції з існуючими віконними менеджерами (xrdesktop може бути портований для будь-якого віконного менеджера X11 або Wayland). На стороні графічних драйверів для роботи потрібен драйвер з підтримкою API Vulkan та розширення VK_KHR_external_memory extension.

Проект xrdesktop для використання GNOME та KDE у шоломах віртуальної реальності

Основні складові xrdesktop:

  • gulkan glib-обв'язка для Vulkan, що надає класи для обробки пристроїв, шейдерів та ініціалізації текстур із пам'яті або DMA-буферів;
  • gxr - API для абстрагування програмних інтерфейсів для розробки програм віртуальної реальності. В даний час підтримується лише OpenVR, але найближчим часом буде додано і підтримку стандарту OpenXR;
  • libinputsynth - бібліотека для синтезу подій введення, таких як рух миші, кліки та натискання клавіш, реалізована у формі бекендів для xdo, xi2 та Clutter;
  • xrdesktop - бібліотека для керування вікнами в 3D-оточенні, набір супутніх віджетів та бекенди для малювання сцени;
  • kwin-effect-xrdesktop и kdeplasma-applets-xrdesktop — плагін до KWin для інтеграції з KDE та Plasma-аплет для переведення KWin у режим виведення на 3D-шолом;
  • gnome-shell patchset и gnome-shell-extension-xrdesktop - Набір патчів до GNOME Shell для інтеграції підтримки xrdesktop і додаток для перемикання виведення на 3D-шолом у GNOME Shell.

Проектом підтримується кілька методів організації взаємодії з робочим столом та вікнами у віртуальному оточенні, які можуть застосовуватися для захоплення вікон, масштабування, переміщення, обертання, накладання на сферу, закріплення та приховування вікон, використання керуючого меню та одночасного керування двома руками з використанням кількох контролерів.

Джерело: opennet.ru

Додати коментар або відгук