پروژه xrdesktop برای استفاده از GNOME و KDE در هدست های واقعیت مجازی
توسعه دهندگان از Collabora ارایه شده پروژه xrdesktop، که در آن با پشتیبانی Valve، کتابخانه ای با عناصری برای تعامل با دسکتاپ های سنتی در داخل محیط های سه بعدی ایجاد شده با استفاده از عینک های سه بعدی و کلاه های واقعیت مجازی در حال توسعه است. کد کتابخانه به زبان C و نوشته شده است توزیع شده توسط تحت مجوز MIT مجموعه های آماده آماده شده برای قوس لینوکس и اوبونتو 19.04 / 18.04.
در حال حاضر، لینوکس از قبل ابزارهایی برای خروجی مستقیم به هدست های واقعیت مجازی دارد (افزونه های Vulkan VK_EXT_acquire_xlib_display برای X11 و VK_EXT_acquire_wl_display برای Wayland)، اما هیچ پشتیبانی در سطح رندر صحیح پنجره ها در فضای سه بعدی و همگام سازی نرخ تجدید صفحه نمایش وجود ندارد. هدف پروژه xrdesktop توسعه روش هایی است که امکان استفاده از رابط های کلاسیک متمرکز بر صفحه نمایش دو بعدی و کنترل صفحه کلید و ماوس را در محیط های مجازی فراهم می کند.
اجزای xrdesktop مدیران ویندوز و کامپوزیت موجود را گسترش می دهند تا از سیستم های زمان اجرا واقعیت مجازی برای رندر کردن پنجره ها و دسکتاپ ها در محیط های مجازی سه بعدی استفاده کنند. xrdesktop ایده ادغام در محیط های دسکتاپ موجود را بدون نیاز به اجرای یک مدیر کامپوزیت تخصصی مجزا ترویج می کند و اجازه می دهد پیکربندی های سفارشی موجود که با یک مانیتور معمولی استفاده می شوند با کلاه های سه بعدی استفاده شوند.
معماری پروژه حاکی از توانایی ادغام با هر دسکتاپ است، اما در مرحله فعلی توسعه، اجزایی برای پشتیبانی از هدست های واقعیت مجازی برای KDE و GNOME پیاده سازی شده اند. برای KDE، پشتیبانی از کلاه های سه بعدی از طریق یک افزونه Compiz-مانند و برای GNOME از طریق مجموعه ای از وصله ها برای GNOME Shell اجرا می شود. این مولفهها پنجرههای موجود را در محیط مجازی کلاههای سه بعدی در قالب یک صحنه جداگانه یا در حالت همپوشانی منعکس میکنند که در آن پنجرههای دسکتاپ را میتوان بر روی دیگر برنامههای کاربردی واقعیت مجازی در حال اجرا قرار داد.
علاوه بر موتورهای رندر، xrdesktop اجزایی را برای ارائه مسیریابی و ورودی با استفاده از کنترلکنندههای فضایی تخصصی مانند Valve Index و VIVE Wand فراهم میکند. Xrdesktop از اطلاعات کنترلکنندههای VR برای تولید رویدادهای ورودی منظم، شبیهسازی استفاده از صفحه کلید و ماوس استفاده میکند.
xrdesktop شامل چندین کتابخانه است که با استفاده از OpenVR، بافت های پنجره ای را برای زمان اجرای واقعیت مجازی تولید می کنند، و همچنین یک سیستم مبتنی بر API برای ارائه یک دسکتاپ کامل در یک محیط سه بعدی. از آنجایی که xrdesktop مدیر پنجره خود را ارائه نمی دهد، کار یکپارچه سازی با مدیران پنجره موجود مورد نیاز است (xrdesktop را می توان به هر مدیر پنجره X3 یا Wayland منتقل کرد). در سمت درایور گرافیک، عملیات به درایوری با پشتیبانی از Vulkan API و پسوند VK_KHR_external_memory نیاز دارد.
اجزای اصلی xrdesktop:
گولکان - اتصال glib برای Vulkan، ارائه کلاسهایی برای دستگاههای پردازش، سایهزنها و مقداردهی اولیه بافتها از حافظه یا بافرهای DMA.
gxr - API برای انتزاع رابط های برنامه برای توسعه برنامه های کاربردی واقعیت مجازی. در حال حاضر فقط OpenVR پشتیبانی می شود، اما پشتیبانی از استاندارد OpenXR در آینده نزدیک اضافه خواهد شد.
libinputsynth - کتابخانه ای برای ترکیب رویدادهای ورودی، مانند حرکت ماوس، کلیک ها و فشار دادن کلید، که در قالب backend برای xdo، xi2 و Clutter پیاده سازی شده است.
xrdesktop - کتابخانه ای برای مدیریت ویندوز در محیط سه بعدی، مجموعه ای از ویجت ها و باطن های همراه برای رندر صحنه.
این پروژه از چندین روش برای سازماندهی تعامل با دسکتاپ و ویندوز در یک محیط مجازی پشتیبانی میکند که میتوان از آن برای گرفتن پنجرهها، مقیاس، حرکت، چرخش، همپوشانی روی یک کره، داک و پنهان کردن پنجرهها، استفاده از منوی کنترل و کنترل همزمان با دو دست با استفاده از کنترلرهای متعدد.