প্রোহোস্টার > Блог > ইন্টারনেট খবর > ভার্চুয়াল রিয়েলিটি হেডসেটে জিনোম এবং কেডিই ব্যবহারের জন্য xrdesktop প্রকল্প
ভার্চুয়াল রিয়েলিটি হেডসেটে জিনোম এবং কেডিই ব্যবহারের জন্য xrdesktop প্রকল্প
Разработчики из компании Collabora উপস্থাপিত প্রকল্প xrdesktop, в рамках которого при поддержке компании Valve развивается библиотека с элементами для взаимодействия с традиционными рабочими столами внутри трёхмерных окружений, формируемых при использовании 3D-очков и шлемов виртуальной реальности. Код библиотеки написан на языке Си и দ্বারা বিতরণ এমআইটি লাইসেন্সের অধীনে। রেডিমেড অ্যাসেম্বলি প্রস্তুত থেকে আর্কিটেকচার লিনাক্স и উবুন্টু 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-окружении, набор сопутствующих виджетов и бэкенды для отрисовки сцены;
Проектом поддерживается несколько методов организации взаимодействия с рабочим столом и окнами в виртуальном окружении, которые могут применяться для захвата окон, масштабирования, перемещения, вращения, наложения на сферу, закрепления и скрытия окон, использования управляющего меню и одновременного управления двумя руками с использованием нескольких контроллеров.