ProHoster > Блог > Новини інтернету > Проект xrdesktop для використання GNOME та KDE у шоломах віртуальної реальності
Проект 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 розширюють наявні віконні та композитні менеджери можливостями для використання 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:
gulkan glib-обв'язка для Vulkan, що надає класи для обробки пристроїв, шейдерів та ініціалізації текстур із пам'яті або DMA-буферів;
gxr - API для абстрагування програмних інтерфейсів для розробки програм віртуальної реальності. В даний час підтримується лише OpenVR, але найближчим часом буде додано і підтримку стандарту OpenXR;
libinputsynth - бібліотека для синтезу подій введення, таких як рух миші, кліки та натискання клавіш, реалізована у формі бекендів для xdo, xi2 та Clutter;
xrdesktop - бібліотека для керування вікнами в 3D-оточенні, набір супутніх віджетів та бекенди для малювання сцени;
Проектом підтримується кілька методів організації взаємодії з робочим столом та вікнами у віртуальному оточенні, які можуть застосовуватися для захоплення вікон, масштабування, переміщення, обертання, накладання на сферу, закріплення та приховування вікон, використання керуючого меню та одночасного керування двома руками з використанням кількох контролерів.