Oculus Quest 2 یک هدست واقعیت مجازی (VR) است که توسط Oculus، یکی از بخشهای Meta، ساخته شده است. توسعهدهندگان اکنون میتوانند «برنامههای وب پیشرو» (PWA) دوبعدی و سهبعدی بسازند و توزیع کنند که از ویژگی چندوظیفهای Oculus Quest 2 بهره میبرند.
Oculus Quest 2
Oculus Quest 2 هدست واقعیت مجازی (VR) است که توسط Oculus، یکی از بخشهای Meta، ساخته شده است. این هدست جانشین هدست قبلی شرکت، Oculus Quest، است. این دستگاه میتواند هم بهعنوان هدست مستقل با سیستمعامل داخلی مبتنی بر Android کار کند و هم با نرمافزار واقعیت مجازی سازگار با Oculus که هنگام اتصال ازطریق USB یا Wi-Fi روی رایانه رومیزی اجرا میشود. این دستگاه از سیستم روی تراشه Qualcomm Snapdragon XR2 با ۶ گیگابایت حافظه دسترسی تصادفی استفاده میکند. نمایشگر Quest 2 یک پنل LCD تکسوئیچ سریع با وضوح ۱۸۳۲ × ۱۹۲۰ پیکسل برای هر چشم است که با نرخ بازآوری تا ۱۲۰ هرتز کار میکند.

مرورگر Oculus
درحالحاضر سه مرورگر برای Oculus Quest 2 دردسترس است: Wolvic، جانشین Firefox Reality، و Oculus Browser داخلی. این مقاله روی مورد دوم تمرکز دارد. وبسایت Oculus، «مرورگر Oculus» را بهصورت زیر معرفی میکند.
«مرورگر Oculus از جدیدترین استانداردهای وب و فناوریهای دیگر پشتیبانی میکند تا به شما کمک کند تجربههای واقعیت مجازی در وب ایجاد کنید. وبسایتهای دوبعدی امروزی در «مرورگر Oculus» عالی کار میکنند چون موتور پردازش Chromium آن را پشتیبانی میکند. این مرورگر برای هدستهای Oculus بیشتر بهینهسازی شده است تا بهترین عملکرد را داشته باشد و به توسعهدهندگان وب امکان دهد بااستفاده از میاناهای برنامهسازی کاربردی جدید، مانند WebXR، از پتانسیل کامل واقعیت مجازی بهره ببرند. ازطریق WebXR، درهای مرز بعدی وب را باز میکنیم.»

نماینده کاربر
رشته نماینده کاربر مرورگر در زمان نوشتن بهصورت زیر است.
Mozilla/5.0 (X11; Linux x86_64; Quest 2)
AppleWebKit/537.36 (KHTML, like Gecko)
OculusBrowser/18.1.0.2.46.337441587
SamsungBrowser/4.0
Chrome/95.0.4638.74
VR
Safari/537.36
همانطور که میبینید، نسخه فعلی 18.1.0.2.46.337441587 از «مرورگر Oculus» براساس Chrome
95.0.4638.74 است، که فقط یک نسخه از نسخه پایدار فعلی Chrome، یعنی
96.0.4664.110، عقبتر است. اگر کاربر به حالت تلفن همراه برود، VR به Mobile VR تغییر میکند.

رابط کاربری
میانای کاربر مرورگر (که در بالا نشان داده شده است) ویژگیهای زیر را دارد (ردیف بالا از چپ به راست):
- دکمه برگشتن
- دکمه تازهسازی
- اطلاعات سایت
- نوار نشانی وب
- دکمه ایجاد نشانک
- دکمه تغییر اندازه با گزینههای باریک، متوسط، و پهن و همچنین ویژگی بزرگنمایی
- دکمه درخواست وبسایت تلفن همراه
- دکمه منو با گزینههای زیر:
- ورود به حالت خصوصی
- بستن همه برگهها
- تنظیمات
- نشانک
- بارگیریها
- سابقه
- پاک کردن دادههای مرور
ردیف پایین شامل ویژگیهای زیر است:
- دکمه بستن
- دکمه کوچک کردن
- دکمه سهنقطه با گزینههای برگشت، جلو، و بار کردن مجدد
نرخ بازآوری و نسبت پیکسل دستگاه
برای Oculus Quest 2، مرورگر Oculus هم محتوای صفحه وب دوبعدی و هم WebXR را با نرخ بازآوری ۹۰ هرتز ارائه میکند. هنگام تماشای رسانه تمامصفحه، Oculus Browser نرخ بازآوری دستگاه را براساس نرخ فریم ویدیو، برای مثال ۲۴ فریم در ثانیه، بهینهسازی میکند. Oculus Quest 2 دارای نسبت پیکسل دستگاه ۱٫۵ برای متن واضح است.
برنامههای وب پیشرونده در مرورگر Oculus و فروشگاه Oculus
در ۲۸ اکتبر ۲۰۲۱، جیکوب راسی، مدیر مدیریت محصول در Meta (Oculus)، اعلام کرد که برنامههای وب پیشرونده به Oculus Quest و Oculus Quest 2 میآیند. در ادامه، تجربه برنامه وب پیشرو را در Oculus شرح میدهم و نحوه ساخت، بارگذاری جانبی، و آزمایش برنامه وب پیشرو را در Oculus Quest 2 توضیح میدهم.
همرسانی وضعیت
وضعیت ورود به سیستم بین Oculus Browser و برنامههای وب پیشرونده همرسانی میشود و به کاربران اجازه میدهد بهطور یکپارچه بین این دو جابهجا شوند. طبیعتاً، ورود به سیستم فیسبوک بهطور پیشفرض پشتیبانی میشود. Oculus Browser شامل مدیر گذرواژهای است که به کاربران امکان میدهد گذرواژههایشان را بهطور ایمن بین مرورگر و تجربههای برنامه نصبشده ذخیره و همرسانی کنند.
اندازههای پنجره PWA
کاربر میتواند اندازه پنجرههای مرورگر و پنجرههای «برنامههای وب پیشرونده» نصبشده را بهدلخواه تغییر دهد. ارتفاع میتواند بین ۶۲۵ پیکسل و ۱۲۰۰ پیکسل متغیر باشد. عرض را میتوان بین ۴۰۰ پیکسل و ۲۰۰۰ پیکسل تنظیم کرد. ابعاد پیشفرض ۱۰۰۰ × ۶۲۵ پیکسل است.
تعامل با برنامههای وب پیشرونده
برنامههای وب پیشرونده را میتوان با کنترلکنندههای چپ و راست Oculus، موشواره و صفحهکلید بلوتوث، و ازطریق ردیابی دست کنترل کرد. پیمایش ازطریق دستههای شستی روی کنترلکنندههای Oculus یا با نزدیک کردن انگشت شست و اشاره به یکدیگر و حرکت دادن در جهت موردنظر انجام میشود. برای انتخاب کردن چیزی، کاربر میتواند اشاره کند و انگشتانش را بههم نزدیک کند.
اجازههای برنامههای وب پیشرفته
اجازهها در Oculus Browser تقریباً به همان روش Chrome کار میکنند. وضعیت بین برنامههایی که در مرورگر اجرا میشوند و برنامههای وب پیشروی نصبشده همرسانی میشود، بنابراین کاربران میتوانند بین این دو تجربه جابهجا شوند بدون اینکه لازم باشد دوباره همان اجازهها را اعطا کنند.
اگرچه اجازههای زیادی پیادهسازی شده است، اما همه ویژگیها پشتیبانی نمیشود. برای مثال، درحالیکه درخواست اجازه موقعیت جغرافیایی موفقیتآمیز است، دستگاه هرگز مکان را دریافت نمیکند. بهطور مشابه، میاناهای برنامهسازی کاربردی سختافزاری مختلف مانند WebHID، Web Bluetooth، و غیره همگی تشخیص ویژگی را میگذرانند، اما درواقع انتخابگری را نشان نمیدهند که به کاربر اجازه دهد Oculus را با دستگاه سختافزاری جفت کند. فکر میکنم با تکامل مرورگر، قابلیت تشخیص ویژگی میاناهای برنامهسازی کاربردی بهبود خواهد یافت.

اشکالزدایی برنامههای وب پیشرو ازطریق Chrome DevTools
پساز فعال کردن «حالت توسعهدهنده»، اشکالزدایی برنامههای وب پیشرونده در Oculus Quest 2 دقیقاً همانطور که در اشکالزدایی ازراهدور دستگاههای Android شرح داده شده است کار میکند.
- در دستگاه Oculus، در «مرورگر Oculus» به سایت موردنظر بروید.
- Google Chrome را در رایانه راهاندازی کنید و به
chrome://inspect/#devicesبروید. - دستگاه Oculus موردنظر را پیدا کنید، که بهدنبال آن مجموعهای از زبانههای «مرورگر Oculus» که درحالحاضر در دستگاه باز است نشان داده میشود.
- روی بازرسی در برگه Oculus Browser موردنظر کلیک کنید.

کاوش برنامه
افراد میتوانند از خود مرورگر یا Oculus Store برای کشف برنامههای وب پیشرونده استفاده کنند. درست مانند هر مرورگر دیگری، برنامههای وب پیشرو نصبشده نیز در «مرورگر Oculus» بهعنوان وبسایتهایی که در برگه اجرا میشوند کار میکنند. وقتی کاربری از سایتی بازدید میکند، «مرورگر Oculus» به او کمک میکند برنامه را پیدا کند، البته اگر (و فقط اگر) برنامه در «فروشگاه Oculus» دردسترس باشد. برای کاربرانی که ازقبل برنامه را نصب کردهاند، Oculus Browser به آنها کمک میکند درصورت تمایل بهراحتی به برنامه بروند.

برنامههای وب پیشرو نمونه در Oculus Quest 2
برنامههای وب پیشرو از Meta
چندین بخش Meta برای Oculus Quest 2 برنامه وب پیشرو ایجاد کردهاند، برای مثال Instagram و Facebook. این برنامههای وب پیشرونده در پنجرههای برنامه مستقل اجرا میشوند که نوار نشانی وب ندارند و میتوان اندازه آنها را آزادانه تغییر داد.


برنامههای وب پیشروی توسعهدهندگان دیگر
درحالحاضر، تعداد کمی از برنامههای وب پیشرونده برای Oculus Quest 2 در «فروشگاه Oculus» وجود دارد، اما این تعداد درحال افزایش است. Spike به کاربران اجازه میدهد همه ابزارهای ضروری کار مانند ایمیل، گپ، تماس، یادداشت، تکلیف، و کارهای انجامدادنی را از صندوق ورودیشان در یک مرکز محیط مجازی درست در برنامه Spike تجربه کنند.

نمونه دیگر Smartsheet است، یک فضای کاری پویا که مدیریت پروژه، گردش کار خودکار، و ساخت سریع راهحلهای جدید را ارائه میدهد.
برنامههای وب پیشروی بیشتری مانند Slack، Dropbox، یا Canva در راه هستند، همانطور که در ویدیویی با حضور جیکوب راسی که در چارچوب کنفرانس Connect فیسبوک در سال ۲۰۲۱ منتشر شد، اشاره شده است.
ایجاد برنامههای وب پیشرونده برای Oculus
Meta مراحل لازم را در اسناد خود شرح داده است. بهطور کلی، برنامههای وب پیشرو که در Chrome نصبشدنی هستند، اغلب اوقات باید در Oculus بهطور پیشفرض کار کنند.
الزامات مانیفست برنامه وب
تفاوتهای مهمی در مقایسه با
معیارهای نصبپذیری Chrome و
مشخصات مانیفست برنامه وب وجود دارد. برای مثال، Oculus درحالحاضر فقط از
زبانهای راست به چپ پشتیبانی میکند، درحالیکه مشخصات مانیفست برنامه وب چنین
محدودیتهایی را اعمال نمیکند. نمونه دیگر start_url است که Chrome برای نصبشدنی بودن برنامه اکیداً به آن نیاز دارد، اما در Oculus اختیاری است. Oculus
ابزار خط فرمان ارائه میدهد که به
توسعهدهندگان امکان میدهد برای Oculus Quest 2 «برنامه وب پیشرو» ایجاد کنند، که به آنها اجازه میدهد پارامترهای مفقود را در «مانیفست برنامه وب» ارسال کنند (یا پارامترهای موجود را لغو کنند).
Oculus تعدادی فیلد اختیاری اختصاصی در «مانیفست برنامه وب» دارد که میتوان از آنها برای سفارشیسازی تجربه «برنامه وب پیشرو» استفاده کرد.
بستهبندی برنامههای وب پیشرونده با Bubblewrap CLI
Bubblewrap مجموعهای از کتابخانههای متنباز و ابزار خط فرمان (CLI) برای Node.js است. Bubblewrap توسط تیم Google Chrome توسعه یافته است تا به توسعهدهندگان کمک کند پروژه Android را که «برنامه وب پیشرونده» شما را بهعنوان فعالیت وب مطمئن (TWA) راهاندازی میکند تولید، ایجاد، و امضا کنند.
«مرورگر Meta Quest» درحالحاضر بهطور کامل از TWA پشتیبانی نمیکند، اما از نسخه ۱.۱۸.۰، Bubblewrap از بستهبندی PWA برای دستگاههای Meta Quest پشتیبانی میکند.
این ابزار میتواند فایلهای APK جهانی تولید کند که TWA را در دستگاههای Android معمولی و مرورگر Meta Quest در دستگاههای Meta Quest باز میکند.
با فرض اینکه Node.js را نصب کردهاید، Bubblewrap CLI را میتوانید با دستور زیر نصب کنید:
npm i -g @bubblewrap/cli
وقتی Bubblewrap را برای اولینبار اجرا میکنید، پیشنهاد میکند که وابستگیهای خارجی موردنیاز (کیت توسعه جاوا (JDK) و ابزارهای ساخت کیت توسعه نرمافزار Android) را بهطور خودکار بارگیری و نصب کند.
برای تولید پروژه Android سازگار با Meta Quest که برنامه وب پیشروی شما را دربرمیگیرد، فرمان init را با پرچم --metaquest اجرا کنید و جادوگر را دنبال کنید:
bubblewrap init --manifest="https://your.web.app/manifest.json" --metaquest
پساز تولید پروژه، آن را با اجرای دستور زیر بسازید و امضا کنید:
bubblewrap build
با این کار فایلی بهنام app-release-signed.apk خروجی گرفته میشود. این فایل را میتوان در دستگاه نصب کرد یا در Meta Quest Store، «فروشگاه Google Play»، یا هر پلاتفرم توزیع برنامه Android دیگری منتشر کرد.
بستهبندی برنامههای وب پیشرونده با Oculus Platform Utility
Oculus Platform Utility ابزار خط فرمان رسمی است که Meta برای انتشار برنامههای دستگاههای Oculus Rift و Meta Quest توسعه داده است.
همچنین امکان بستهبندی برنامههای وب پیشرونده برای دستگاههای Meta Quest با فرمان create-pwa و انتشار آنها در Meta Quest Store و App Lab را فراهم میکند.
نام فایل خروجی را ازطریق پارامتر -o و مسیر کیت توسعه نرمافزار Android را ازطریق پارامتر --android-sdk تنظیم کنید.
ابزار را ازطریق پارامتر --web-manifest-url به نشانی وب فعال مانیفست برنامه وب هدایت کنید.
اگر در برنامه وب پیشروی فعال خود مانیفست ندارید یا میخواهید مانیفست فعال را لغو کنید، همچنان میتوانید
بااستفاده از فایل مانیفست محلی و پارامتر --manifest-content-file،
برای برنامه وب پیشروی خود APK تولید کنید.
برای اینکه مانیفست تا حد امکان خالص باقی بماند، بهجای افزودن فیلد اختصاصی ovr_package_name به مانیفست، از پارامتر --package-name با مقداری در نمادگذاری نام دامنه معکوس (برای مثال، com.company.app.pwa) استفاده کنید.
ovr-platform-util create-pwa -o output.apk --android-sdk ~/bin/android-10 --manifest-content-file manifest.json --package-name com.company.app.pwa
بستهبندی برنامههای وب پیشرو با PWABuilder
از دیدگاه نویسندگان، استفاده از PWABuilder درحالحاضر آسانترین و درنتیجه توصیهشدهترین روش برای بستهبندی برنامههای وب پیشرونده برای Meta Quest است.
PWABuilder پروژهای متنباز است که توسط Microsoft توسعه یافته است، که به توسعهدهندگان اجازه میدهد برنامههای وب پیشرو خود را برای انتشار در فروشگاههای مختلف، ازجمله Microsoft Store، «فروشگاه Google Play»، App Store، و Meta Quest Store بستهبندی و امضا کنند.
بستهبندی برنامههای وب پیشرونده با PWABuilder بهسادگی وارد کردن نشانی وب برنامه وب پیشرونده، وارد کردن/ویرایش کردن فراداده برنامه، و کلیک کردن روی دکمه تولید است.
PWABuilder به توسعهدهندگان این امکان را میدهد که انتخاب کنند از چه ابزاری در پشت صحنه برای بستهبندی برنامههای وب پیشرونده برای دستگاههای Meta Quest استفاده کنند.
میتوانید گزینه Meta Quest را برای استفاده از Oculus Platform Utility انتخاب کنید.

میتوانید گزینه Android را برای استفاده از Bubblewrap انتخاب کنید و چارگوش انتخاب سازگار با Meta Quest را علامت بزنید.

نصب کردن برنامههای وب پیشرونده با ADB
پساز ایجاد فایل APK، میتوانید آن را بااستفاده از ADB ازطریق USB یا Wi-Fi در دستگاه Meta Quest بار جانبی کنید:
adb install app-release-signed.apk
اگر از Bubblewrap CLI برای بستهبندی PWA استفاده میکنید، این ابزار یک فرمان نام مستعار راحت برای بارگذاری جانبی فایل APK ارائه میدهد:
bubblewrap install
برنامههای جانبی بارشده در بخش منابع ناشناخته در کشو برنامهها نشان داده میشوند.
ارسال برنامه
بارگذاری و ارسال برنامههای وب پیشرونده به Oculus Store بهطور مفصل در اسناد «مرکز توسعهدهندگان Oculus» پوشش داده شده است.
توسعهدهندگان علاوهبر ارسال برنامهها به Oculus Store، میتوانند برنامههایشان را ازطریق پلاتفرمهایی مثل SideQuest مستقیماً بهطور ایمن و مطمئن به مصرفکنندگان توزیع کنند، بدون اینکه به تأیید فروشگاه نیاز داشته باشند. این کار به آنها اجازه میدهد برنامه را مستقیماً به کاربران نهایی برسانند، حتی اگر در مراحل اولیه توسعه، آزمایشی، یا برای مخاطبان خاصی باشد.
آزمایش برنامههای چندبرگهای
برای آزمایش برنامههای چندزبانه، برنامه وب پیشروی آزمایشی کوچکی ایجاد کردم که ویژگیهای مختلف پیوند را نشان میدهد: یعنی باز کردن زبانه جدید در برنامه وب پیشرو، ماندن در زبانه فعلی، باز کردن پنجره مرورگر جدید، و باز کردن در WebView با ماندن در زبانه فعلی. با اجرای فرمانهای زیر در دستگاهتان، نسخهای از این برنامه را که بهطور محلی قابلنصب است ایجاد کنید.
ovr-platform-util create-pwa -o test.apk --android-skd ~/bin/android-10 --web-manifest-url https://tomayac.github.io/oculus-pwa-test/manifest.json --package-name com.example.pwa
adb install test.apk
در اینجا ضبط ویدیویی از صفحه برنامه آزمایشی ارائه شده است.
نسخه Oculus از SVGcode
برای امتحان کردن دستورالعملها، نسخه Oculus جدیدترین برنامه وب پیشرو خودم،
SVGcode را ایجاد کردم. میتوانید فایل APK حاصل را
output.apk
از Google Drive من بارگیری کنید. اگر میخواهید بسته را بیشتر بررسی کنید،
نسخه تبدیل کدشده
آن را هم دارم. دستورالعملهای ساخت را در
package.json پیدا کنید.
استفاده از برنامه در Oculus بهخوبی کار میکند، ازجمله توانایی باز کردن و ذخیره کردن فایلها. «مرورگر Oculus» از File System Access API پشتیبانی نمیکند، اما رویکرد جایگزین کمک میکند. تنها چیزی که کار نمیکرد بزرگنمایی با نیشگون بود. انتظار داشتم با فشار دادن دکمه ماشه در هر دو کنترلکننده و سپس حرکت دادن کنترلکنندهها در جهت مخالف کار کند. بهجز این، همه چیزهای دیگر کارآمد و پاسخگو بود، همانطور که در ضبط ویدیویی از صفحه جاسازیشده میبینید.
برنامههای وب پیشروی WebXR سهبعدی فراگیر
پشتیبانی از «برنامه وب پیشرو» در Oculus Quest به برنامههای دوبعدی تخت محدود نمیشود. توسعهدهندگان میتوانند بااستفاده از WebXR API، تجربههای سهبعدی فراگیر برای واقعیت مجازی بسازند.
آیا میخواهید بدانید پیاموارههای مختلف (نصب برنامه وب پیشرونده، درخواستهای اجازه، اعلانها) چگونه از داخل واقعیت مجازی مدیریت میشوند؟
در اینجا ضبط ویدیویی از صفحه آزمایش پیاموارههای نماینده کاربر از گروه کاری وب فراگیر آزمایشهای WebXR ارائه شده است.
همانطور که میبینید، ورود به حالت واقعیت مجازی به اجازه کاربر نیاز دارد. اجازهها یکبار برای هر مبدأ درخواست میشود. درخواست اجازهها از حالت فراگیر خارج میشود. درحالحاضر از اعلانها پشتیبانی نمیشود.
ردگیری دست
بهلطف WebXR Hand Input API و سیستم ردیابی دست مبتنی بر هوش مصنوعی Meta، میتوانید از دستهایتان برای تعامل با برنامههای وب پیشرونده در حالت فراگیر استفاده کنید.
در اینجا ضبط ویدیویی از صفحه نمونه ردیابی دست از نمونههای WebXR «گروه کاری وب فراگیر» آورده شده است.
واقعیت افزوده/ترکیبی (Passthrough)
همانطور که در Meta Connect 2022 اعلام شد، «مرورگر Meta Quest» پشتیبانی از واقعیت افزوده (AR) WebXR، که با نام واقعیت ترکیبی (MR) نیز شناخته میشود، را در دستگاههای Meta Quest 2 و Meta Quest Pro اضافه کرده است.
بیایید نمونه شروع A-Frame را که کمی اصلاح شده است با مدلهای کوچکشده و آسمان و صفحه پنهان برای واقعیت افزوده بررسی کنیم.
A-Frame چارچوب وب متنبازی برای ساختن تجربههای سهبعدی/ واقعیت مجازی/ واقعیت افزوده کاملاً خارج از عناصر اچتیامال سفارشی قابلاستفاده مجدد و توصیفی است که بهراحتی خوانده، درک، و کپی و جایگذاری میشوند.
در اینجا ضبط ویدیویی از صفحه این نسخه نمایشی در Meta Quest 2 ارائه شده است.
Meta Quest 2 دوربینهای تکرنگ دارد، بنابراین حالت «گذر» در مقیاس خاکستری است، درحالیکه Meta Quest Pro دوربینهای رنگی دارد.
نتیجهگیریها
برنامههای وب پیشرو در Oculus Quest 2 بسیار سرگرمکننده و نویدبخش هستند. بوم مجازی بیپایانی که به کاربران اجازه میدهد صفحهنمایش خود را به هر اندازهای که برای کار فعلی مناسبتر است تغییر دهند، پتانسیل زیادی برای تغییر نحوه کار ما در آینده دارد. درحالیکه تایپ کردن در واقعیت مجازی با ردیابی دست هنوز در مراحل اولیه است و، حداقل برای من، هنوز خیلی قابلاعتماد کار نمیکند، برای وارد کردن نشانیهای وب یا تایپ کردن متنهای کوتاه بهاندازه کافی خوب کار میکند.
What I like the most about PWAs on the Oculus Quest 2 is that they are just regular PWAs that can be used unchanged in a browser tab or through a thin APK wrapper without any platform-specific APIs. هدفیابی چندین پلاتفرم با یک کد هیچگاه به این آسانی نبوده است. اینجا برای برنامههای وب پیشرو در واقعیت مجازی و واقعیت افزوده در وب است. آینده روشن است!
تصدیقها
عکس Oculus Quest 2 از Maximilian Prandstätter در Flickr. تصاویر Oculus Store از برنامههای Instagram، Facebook، Oculus Browser، و Spike و همچنین تصویر قابلیت کشف برنامه و پویانمایی ردیابی دست با اجازه Meta. این پست را Joe Medley بازبینی کرده است.