Разработчики из компании Collabora представили (https://www.collabora.com/news-and-blog/news-and-events/movi...) проект xrdesktop (https://gitlab.freedesktop.org/xrdesktop/xrdesktop), в рамках которого при поддержке компании Valve развивается библиотека с элементами для взаимодействия с традиционными рабочими столами внутри трёхмерных окружений, формируемых при использовании 3D-очков и шлемов виртуальной реальности. Код библиотеки написан на языке Си и распространяется (https://gitlab.freedesktop.org/xrdesktop/xrdesktop) под лицензией MIT. Готовые сборки подготовлены (https://gitlab.freedesktop.org/xrdesktop/xrdesktop/wikis/howto) для Arch Linux (https://aur.archlinux.org/packages/xrdesktop-git) и Ubuntu 19.04/18.04 (https://launchpad.net/~xrdesktophttps://launchpad.net/~xrdes...).В настоящее время для Linux уже имеются средства для прямого вывода на шлемы виртуальной реальности (Vulkan-расширения VK_EXT_acquire_xlib_display для X11 и VK_EXT_acquire_wl_display для Wayland), но отсутствуют поддержка на уровне корректной отрисовки окон в 3D-пространстве и синхронизации частоты обновления экрана. Целью проекта xrdesktop является разработка методов, которые позволят использовать в виртуальных окружениях классические интерфейсы, ориентированные на вывод на двухмерном экране и управление при помощи клавиатуры и мыши.
В xrdesktop продвигается идея интеграции в существующие десктоп-окружения без необходимости запуска отдельного специализированного композитного менеджера 3D-шлемов и позволяя использовать со шлемами уже имеющиеся пользовательские конфигурации, используемые с обычным монитором. Компоненты xrdesktop расширяют имеющиеся оконные и композитные менеджеры возможностями для использования runtime систем виртуальной реальности для отрисовки окон и рабочего стола в трехмерных виртуальных окружениях.
Архитектура проекта подразумевает возможность интеграции с любыми рабочими столами, но на текущем этапе разработки компоненты для поддержки шлемов виртуальной реальности реализованы для 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 (https://gitlab.freedesktop.org/xrdesktop/gulkan) - glib-обвязка для Vulkan, предоставляющая классы для обработки устройств, шейдеров и инициализации текстур из памяти или DMA-буферов;
- gxr (https://gitlab.freedesktop.org/xrdesktop/gxr) - API для абстрагирования программных интерфейсов для разработки приложений виртуальной реальности. В настоящее время поддерживается только OpenVR, но в ближайшее время будет добавлена и поддержка стандарта OpenXR;
- libinputsynth (https://gitlab.freedesktop.org/xrdesktop/libinputsynth) - библиотека для синтеза событий ввода, таких как движение мыши, клики и нажатия клавиш, реализованная в форме бэкендов для xdo, xi2 и Clutter;
- xrdesktop (https://gitlab.freedesktop.org/xrdesktop/xrdesktop) - библиотека для управления окнами в 3D-окружении, набор сопутствующих виджетов и бэкенды для отрисовки сцены;
- kwin-effect-xrdesktop (https://gitlab.freedesktop.org/xrdesktop/kwin-effect-xrdesktop) и kdeplasma-applets-xrdesktop (https://gitlab.freedesktop.org/xrdesktop/kdeplasma-applets-x...) - плагин к KWin для интеграции с KDE и Plasma-апплет для перевода KWin в режим вывода на 3D-шлем;
- gnome-shell patchset (https://gitlab.freedesktop.org/xrdesktop/gnome-shell) и gnome-shell-extension-xrdesktop (https://gitlab.freedesktop.org/xrdesktop/gnome-shell-extensi...) - набор патчей к GNOME Shell для интеграции поддержки xrdesktop и дополнение для переключения вывода на 3D-шлем в GNOME Shell.
Проектом поддерживается несколько методов организации взаимодействия с рабочим столом и окнами в виртуальном окружении для захвата окон, масштабирования, перемещения, вращения, наложения на сферу, закрепления и скрытия окон, использования управляющего меню и одновременного управления двумя руками с использованием нескольких контроллеров.
URL: https://www.collabora.com/news-and-blog/news-and-events/movi...
Новость: https://www.opennet.ru/opennews/art.shtml?num=51199