Ang proyektong xrdesktop para sa paggamit ng GNOME at KDE sa mga virtual reality headset

Mga developer mula sa Collabora ipinakita proyekto xrdesktop, kung saan, sa suporta ng Valve, ang isang library ay binuo na may mga elemento para sa pakikipag-ugnayan sa mga tradisyonal na desktop sa loob ng mga three-dimensional na kapaligiran na nilikha gamit ang mga 3D na baso at virtual reality helmet. Ang code ng library ay nakasulat sa C at ipinamahagi ni sa ilalim ng lisensya ng MIT. Mga nakahanda nang pagtitipon nakahanda para sa Arch Linux ΠΈ Ubuntu 19.04 / 18.04.

Sa kasalukuyan, mayroon nang mga tool ang Linux para sa direktang output sa mga virtual reality headset (mga Vulkan extension na VK_EXT_acquire_xlib_display para sa X11 at VK_EXT_acquire_wl_display para sa Wayland), ngunit walang suporta sa antas ng tamang pag-render ng mga bintana sa 3D space at pag-synchronize ng rate ng pag-refresh ng screen. Ang layunin ng proyektong xrdesktop ay bumuo ng mga pamamaraan na magbibigay-daan sa paggamit ng mga klasikong interface na nakatuon sa XNUMXD screen display at keyboard at mouse control sa mga virtual na kapaligiran.

Ang proyektong xrdesktop para sa paggamit ng GNOME at KDE sa mga virtual reality headset

Ang mga bahagi ng xrdesktop ay nagpapalawak ng mga umiiral nang window at composite manager upang gumamit ng mga virtual reality runtime system upang mag-render ng mga bintana at desktop sa mga 3D na virtual na kapaligiran. Itinataguyod ng xrdesktop ang ideya ng pagsasama sa mga umiiral nang desktop environment nang hindi nangangailangan na magpatakbo ng isang hiwalay na dalubhasang composite manager at pinapayagan ang mga umiiral na custom na configuration na ginagamit sa isang regular na monitor na magamit sa mga XNUMXD helmet.

Ang arkitektura ng proyekto ay nagpapahiwatig ng kakayahang magsama sa anumang desktop, ngunit sa kasalukuyang yugto ng pag-unlad, ang mga bahagi upang suportahan ang mga virtual reality headset ay ipinapatupad para sa KDE at GNOME. Para sa KDE, ang suporta para sa mga 3D helmet ay ipinapatupad sa pamamagitan ng isang plugin na tulad ng Compiz, at para sa GNOME sa pamamagitan ng isang hanay ng mga patch para sa GNOME Shell. Ang mga bahaging ito ay sumasalamin sa mga umiiral na window sa virtual na kapaligiran ng mga 3D helmet sa anyo ng isang hiwalay na eksena o sa overlay mode, kung saan ang mga desktop window ay maaaring i-superimpose sa iba pang tumatakbong virtual reality na mga application.

Bilang karagdagan sa mga rendering engine, ang xrdesktop ay nagbibigay ng mga bahagi upang magbigay ng navigation at input gamit ang mga espesyal na spatial controller tulad ng Valve Index at VIVE Wand. Gumagamit ang Xrdesktop ng impormasyon mula sa mga VR controller upang bumuo ng mga regular na kaganapan sa pag-input, na ginagaya ang paggamit ng keyboard at mouse.

Kasama sa xrdesktop ang ilang mga library na bumubuo ng mga window texture para sa VR runtime gamit ang OpenVR, pati na rin ang isang API-based na system para sa pag-render ng isang buong desktop sa isang 3D na kapaligiran. Dahil ang xrdesktop ay hindi nagbibigay ng sarili nitong window manager, ang integration work sa mga kasalukuyang window manager ay kinakailangan (xrdesktop ay maaaring i-port sa anumang X11 o Wayland window manager). Sa bahagi ng driver ng graphics, ang operasyon ay nangangailangan ng driver na sumusuporta sa Vulkan API at ang extension ng VK_KHR_external_memory.

Ang proyektong xrdesktop para sa paggamit ng GNOME at KDE sa mga virtual reality headset

Ang mga pangunahing bahagi ng xrdesktop:

  • gulkan - glib binding para sa Vulkan, na nagbibigay ng mga klase para sa pagpoproseso ng mga device, shader at pagsisimula ng mga texture mula sa memory o DMA buffer;
  • gxr β€” API para sa pag-abstract ng mga interface ng programa para sa pagbuo ng mga virtual reality na application. Sa kasalukuyan, ang OpenVR lamang ang sinusuportahan, ngunit ang suporta para sa pamantayan ng OpenXR ay idadagdag sa malapit na hinaharap;
  • libinputsynth β€” isang library para sa pag-synthesize ng mga kaganapan sa pag-input, tulad ng paggalaw ng mouse, mga pag-click at mga keystroke, na ipinatupad sa anyo ng mga backend para sa xdo, xi2 at Clutter;
  • xrdesktop β€” isang library para sa pamamahala ng mga bintana sa isang 3D na kapaligiran, isang set ng mga kasamang widget at backend para sa pag-render ng eksena;
  • kwin-effect-xrdesktop ΠΈ kdeplasma-applets-xrdesktop β€” isang plugin para sa KWin para sa pagsasama sa KDE at isang Plasma applet para sa paglipat ng KWin sa output mode sa isang 3D helmet;
  • gnome-shell patchset ΠΈ gnome-shell-extension-xrdesktop β€” isang set ng mga patch para sa GNOME Shell upang isama ang suporta sa xrdesktop at isang add-on para sa paglipat ng output sa isang 3D helmet sa GNOME Shell.

Sinusuportahan ng proyekto ang ilang mga pamamaraan para sa pag-aayos ng pakikipag-ugnayan sa desktop at mga bintana sa isang virtual na kapaligiran, na maaaring magamit upang makuha ang mga bintana, sukat, ilipat, paikutin, overlay sa isang globo, dock at itago ang mga bintana, gamitin ang control menu at sabay na kontrolin gamit ang dalawang kamay gamit ang maraming controllers.

Pinagmulan: opennet.ru

Magdagdag ng komento