Oculus Quest 2 یک هدست واقعیت مجازی (VR) است که توسط Oculus، بخشی از متا ساخته شده است. توسعه دهندگان اکنون می توانند برنامه های وب پیشرو دوبعدی و سه بعدی (PWA) را بسازند و توزیع کنند که از ویژگی چندوظیفه ای Oculus Quest 2 بهره می برند.
Oculus Quest 2
Oculus Quest 2 یک هدست واقعیت مجازی (VR) است که توسط Oculus، بخشی از متا ساخته شده است. این جانشین هدست قبلی این شرکت، Oculus Quest است. این دستگاه میتواند هم بهعنوان یک هدست مستقل با یک سیستمعامل داخلی مبتنی بر اندروید و هم با نرمافزار VR سازگار با Oculus اجرا شود که روی رایانه رومیزی در هنگام اتصال از طریق USB یا Wi-Fi اجرا میشود. این دستگاه از سیستم Qualcomm Snapdragon XR2 بر روی تراشه ای با 6 گیگابایت رم استفاده می کند. صفحه نمایش Quest 2 یک پنل LCD تک سوئیچ سریع با وضوح 1832 × 1920 پیکسل در هر چشم است که با نرخ تازه سازی تا 120 هرتز کار می کند.
مرورگر Oculus
در حال حاضر سه مرورگر برای Oculus Quest 2 موجود است: Wolvic ، جانشین Firefox Reality ، و مرورگر داخلی Oculus . این مقاله بر مورد دوم تمرکز دارد. وب سایت Oculus مرورگر Oculus را به شرح زیر معرفی می کند .
"مرورگر Oculus از جدیدترین استانداردهای وب و سایر فناوریها پشتیبانی میکند تا به شما در ایجاد تجربههای واقعیت مجازی در وب کمک کند. وبسایتهای دو بعدی امروزی در مرورگر Oculus عالی کار میکنند، زیرا از موتور رندر کرومیوم پشتیبانی میکند. برای هدستهای Oculus بیشتر بهینهسازی شده است تا بهترین عملکرد و برای اینکه توسعه دهندگان وب از پتانسیل کامل واقعیت مجازی با APIهای جدید مانند 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 مبتنی بر کروم 95.0.4638.74
است، که تنها یک نسخه از نسخه پایدار فعلی کروم که 96.0.4664.110
است، فاصله دارد. اگر کاربر به حالت تلفن همراه تغییر کند، VR
به Mobile VR
تغییر میکند.
رابط کاربری
رابط کاربری مرورگر (نشان داده شده در بالا) دارای ویژگی های زیر است (ردیف بالا از چپ به راست):
- دکمه برگشت
- دکمه بارگذاری مجدد
- اطلاعات سایت
- نوار URL
- دکمه ایجاد نشانک
- دکمه تغییر اندازه با گزینه های باریک، متوسط و گسترده و همچنین ویژگی زوم
- دکمه درخواست وب سایت تلفن همراه
- دکمه منو با گزینه های زیر:
- وارد حالت خصوصی شوید
- همه برگه ها را ببندید
- تنظیمات
- نشانک ها
- دانلودها
- تاریخچه
- پاک کردن داده های مرور
ردیف پایین شامل ویژگی های زیر است:
- دکمه بستن
- دکمه کوچک کردن
- دکمه سه نقطه با گزینه های عقب، جلو، و بارگذاری مجدد
نرخ تازه سازی و نسبت پیکسل دستگاه
برای Oculus Quest 2، مرورگر Oculus هم محتوای صفحه وب دو بعدی و هم WebXR را با نرخ رفرش 90 هرتز ارائه می کند. هنگام تماشای رسانه تمام صفحه، مرورگر Oculus نرخ تازه سازی دستگاه را بر اساس نرخ فریم ویدیو، به عنوان مثال، 24 فریم در ثانیه، بهینه می کند. Oculus Quest 2 دارای نسبت پیکسل دستگاه 1.5 برای متن واضح است.
PWA در مرورگر Oculus و فروشگاه Oculus
در 28 اکتبر 2021، Jacob Rossi ، مدیر مدیریت محصول در Meta (Oculus)، به اشتراک گذاشت که PWA ها به Oculus Quest و Oculus Quest 2 می آیند . در ادامه، تجربه PWA در Oculus را شرح می دهم و توضیح می دهم که چگونه ساخت، sideload، و PWA خود را در Oculus Quest 2 تست کنید.
اشتراک دولتی
وضعیت ورود به سیستم بین مرورگر Oculus و PWA مشترک است و به کاربران این امکان را می دهد که به طور یکپارچه بین این دو جابجا شوند. به طور طبیعی، ورود فیس بوک خارج از جعبه پشتیبانی می شود. مرورگر Oculus شامل یک مدیر رمز عبور است که به کاربران اجازه می دهد رمزهای عبور خود را به طور ایمن بین مرورگر و تجربه برنامه های نصب شده ذخیره و به اشتراک بگذارند.
اندازه پنجره PWA
کاربر می تواند آزادانه اندازه پنجره های مرورگر و پنجره های PWA های نصب شده را تغییر دهد. ارتفاع می تواند بین 625 پیکسل تا 1200 پیکسل متغیر باشد. عرض را می توان بین 400 پیکسل تا 2000 پیکسل تنظیم کرد. ابعاد پیش فرض 1000 × 625 پیکسل است.
تعامل با PWA ها
PWA ها را می توان با کنترلرهای چپ و راست Oculus، ماوس ها و کیبوردهای بلوتوث و از طریق ردیابی دستی کنترل کرد. اسکرول از طریق میله های شست روی کنترلرهای Oculus یا با فشار دادن انگشت شست و انگشت اشاره و حرکت در جهت مورد نظر کار می کند. برای انتخاب چیزی، کاربر می تواند اشاره کند و آن را نیشگون بگیرد.
مجوز برای PWA ها
مجوزها در مرورگر Oculus تقریباً مانند کروم کار می کنند. وضعیت بین برنامه های در حال اجرا در مرورگر و PWA های نصب شده به اشتراک گذاشته می شود، بنابراین کاربران می توانند بدون نیاز به اعطای مجدد مجوزهای مشابه، بین این دو تجربه جابجا شوند.
اگرچه بسیاری از مجوزها اجرا شده اند، اما همه ویژگی ها پشتیبانی نمی شوند. به عنوان مثال، در حالی که درخواست مجوز موقعیت جغرافیایی با موفقیت انجام می شود، دستگاه هرگز در واقع مکانی را دریافت نمی کند. به طور مشابه، API های سخت افزاری مختلف مانند WebHID ، Web Bluetooth ، و غیره، همگی تشخیص ویژگی را انجام می دهند، اما در واقع انتخاب کننده ای را نشان نمی دهند که به کاربر اجازه می دهد Oculus را با یک دستگاه سخت افزاری جفت کند. من فکر می کنم قابلیت تشخیص ویژگی API ها پس از بالغ شدن مرورگر اصلاح می شود.
اشکال زدایی PWA ها از طریق Chrome DevTools
پس از فعال کردن حالت برنامهنویس ، اشکالزدایی PWAها در Oculus Quest 2 دقیقاً همانطور که در Remote Debug دستگاههای Android توضیح داده شده است، کار میکند.
- در دستگاه Oculus، به سایت مورد نظر در مرورگر Oculus مراجعه کنید.
- Google Chrome را در رایانه خود راه اندازی کنید و به
chrome://inspect/#devices
بروید. - دستگاه Oculus مورد نظر را پیدا کنید، که به دنبال آن مجموعه ای از برگه های مرورگر Oculus در حال حاضر در دستگاه باز می شود.
- در برگه مورد نظر Oculus Browser بر روی Inspect کلیک کنید.
کشف اپلیکیشن
افراد می توانند از خود مرورگر یا فروشگاه Oculus برای کشف PWA استفاده کنند. درست مانند هر مرورگر دیگری، PWA های نصب شده نیز در مرورگر Oculus به عنوان وب سایت هایی که در یک برگه اجرا می شوند، کار می کنند. هنگامی که کاربر از یک سایت بازدید می کند، مرورگر Oculus به او کمک می کند تا برنامه را در صورتی که (و فقط اگر) در فروشگاه Oculus موجود باشد، کشف کند. برای کاربرانی که قبلاً برنامه را نصب کردهاند، مرورگر Oculus به آنها کمک میکند تا در صورت تمایل به راحتی به برنامه سوئیچ کنند.
PWA های نمونه در Oculus Quest 2
PWA توسط متا
چندین بخش متا برای Oculus Quest 2 PWA ایجاد کرده اند، به عنوان مثال اینستاگرام و فیس بوک . این PWA ها در پنجره های برنامه مستقلی اجرا می شوند که نوار URL ندارند و می توان آزادانه اندازه آنها را تغییر داد.
PWA توسط توسعه دهندگان دیگر
در زمان نگارش این مقاله، تعداد کمی از PWA ها برای Oculus Quest 2 در فروشگاه Oculus وجود دارد. Spike به کاربران این امکان را میدهد تا تمام ابزارهای کاری ضروری مانند ایمیل، چت، تماسها، یادداشتها، وظایف و وظایف را از صندوق ورودی خود در یک مرکز محیط مجازی درست در برنامه Spike تجربه کنند.
مثال دیگر Smartsheet است، یک فضای کاری پویا که مدیریت پروژه، گردش کار خودکار، و ساخت سریع راه حل های جدید را فراهم می کند.
PWA های بیشتری مانند Slack، Dropbox یا Canva در راهند، همانطور که در ویدیویی با حضور Jacob Rossi که در چارچوب کنفرانس Connect فیس بوک در سال 2021 منتشر شد، به اشتراک گذاشته شد.
ایجاد PWA برای Oculus
متا مراحل مورد نیاز را در مستندات خود تشریح کرد. به طور کلی، PWA هایی که در کروم قابل نصب هستند، اغلب باید در Oculus خارج از جعبه کار کنند.
الزامات مانیفست برنامه وب
در مقایسه با معیارهای نصب Chrome و مشخصات مانیفست برنامه وب، تفاوتهای مهمی وجود دارد. برای مثال، Oculus در حال حاضر فقط از زبانهای چپ به راست پشتیبانی میکند، در حالی که مشخصات Web App Manifest چنین محدودیتهایی را اعمال نمیکند. مثال دیگر start_url
است که Chrome برای نصب برنامه به شدت به آن نیاز دارد، اما در Oculus اختیاری است. Oculus یک ابزار خط فرمان ارائه میکند که به توسعهدهندگان اجازه میدهد PWA برای Oculus Quest 2 ایجاد کنند، که به آنها اجازه میدهد پارامترهای گمشده (یا نادیده گرفتن پارامترهای موجود) را در مانیفست برنامه وب منتقل کنند.
Oculus دارای تعدادی فیلد اختصاصی Web App Manifest است که می توان از آنها برای سفارشی کردن تجربه PWA استفاده کرد.
بسته بندی PWA ها با Bubblewrap CLI
Bubblewrap یک مجموعه منبع باز از کتابخانه ها و یک ابزار خط فرمان (CLI) برای Node.js است. Bubblewrap توسط تیم Google Chrome توسعه داده شده است تا به توسعه دهندگان کمک کند تا یک پروژه Android را ایجاد، بسازند و امضا کنند که PWA شما را به عنوان یک فعالیت وب مورد اعتماد (TWA) راه اندازی می کند.
مرورگر Meta Quest در حال حاضر به طور کامل از TWA پشتیبانی نمی کند، اما با شروع از نسخه 1.18.0، Bubblewrap از بسته بندی PWA برای دستگاه های Meta Quest پشتیبانی می کند .
این می تواند فایل های APK جهانی ایجاد کند که یک TWA را در دستگاه های Android معمولی و مرورگر Meta Quest را در دستگاه های Meta Quest باز می کند.
با فرض اینکه Node.js را نصب کرده اید، Bubblewrap CLI را می توان با دستور زیر نصب کرد:
npm i -g @bubblewrap/cli
هنگامی که Bubblewrap را برای اولین بار اجرا می کنید، دانلود و نصب خودکار وابستگی های خارجی مورد نیاز - کیت توسعه جاوا (JDK) و ابزارهای ساخت SDK Android را ارائه می دهد.
برای ایجاد یک پروژه Android سازگار با Meta Quest که PWA شما را میپیچد، دستور init
را با پرچم --metaquest
اجرا کنید و ویزارد را دنبال کنید:
bubblewrap init --manifest="https://your.web.app/manifest.json" --metaquest
هنگامی که پروژه تولید شد، آن را با اجرای زیر بسازید و امضا کنید:
bubblewrap build
با این کار فایلی به نام app-release-signed.apk
خروجی می شود. این فایل را می توان بر روی دستگاه نصب کرد یا در Meta Quest Store، Google Play Store یا هر یک از دیگر پلتفرم های توزیع برنامه اندروید منتشر کرد.
بسته بندی PWA ها با نرم افزار Oculus Platform Utility
Oculus Platform Utility ابزار رسمی خط فرمان است که توسط Meta برای انتشار برنامهها برای دستگاههای Oculus Rift و Meta Quest توسعه یافته است.
همچنین اجازه می دهد تا PWA ها را برای دستگاه های Meta Quest با دستور create-pwa
بسته بندی کنید و آنها را در Meta Quest Store و App Lab منتشر کنید.
نام فایل خروجی را از طریق پارامتر -o
و مسیر Android SDK را از طریق پارامتر --android-sdk
تنظیم کنید.
ابزار را از طریق پارامتر --web-manifest-url
به نشانی اینترنتی زنده مانیفست برنامه وب نشان دهید.
اگر در PWA زنده خود مانیفست ندارید یا می خواهید مانیفست زنده را لغو کنید، همچنان می توانید با استفاده از یک فایل مانیفست محلی و پارامتر --manifest-content-file
یک APK برای PWA خود ایجاد کنید.
برای خالص نگه داشتن مانیفست تا حد امکان، به جای افزودن فیلد اختصاصی 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
بسته بندی PWA ها با PWABuilder
استفاده از PWABuilder از نظر نویسندگان سادهترین و بنابراین توصیهشده برای بستهبندی PWA برای Meta Quest در حال حاضر است.
PWABuilder یک پروژه منبع باز است که توسط مایکروسافت توسعه یافته است، که به توسعه دهندگان اجازه می دهد PWA های خود را برای انتشار در فروشگاه های مختلف، از جمله فروشگاه مایکروسافت، فروشگاه گوگل پلی، اپ استور، و فروشگاه متا کوئست، بسته بندی و امضا کنند.
بستهبندی PWA با PWABuilder به آسانی وارد کردن URL یک PWA، وارد کردن/ویرایش ابردادههای برنامه و کلیک کردن روی دکمه Generate است.
PWABuilder به توسعه دهندگان این امکان را می دهد که از چه ابزاری برای بسته بندی PWA برای دستگاه های Meta Quest استفاده کنند.
برای استفاده از Oculus Platform Utility می توانید گزینه Meta Quest را انتخاب کنید.
برای استفاده از Bubblewrap می توانید گزینه Android را انتخاب کنید و چک باکس Meta Quest سازگار را انتخاب کنید.
نصب PWA با ADB
پس از ایجاد فایل APK، می توانید آن را با استفاده از ADB از طریق USB یا Wi-Fi در دستگاه Meta Quest بارگذاری کنید:
adb install app-release-signed.apk
اگر از Bubblewrap CLI برای بسته بندی PWA ها استفاده می کنید، یک دستور مستعار مناسب برای بارگذاری فایل APK ارائه می دهد:
bubblewrap install
برنامه های Sideloaded در بخش منابع ناشناخته در کشوی برنامه ظاهر می شوند.
ارسال برنامه
آپلود و ارسال PWA به فروشگاه Oculus به طور مفصل در اسناد مرکز توسعهدهنده Oculus پوشش داده شده است.
به غیر از ارسال برنامهها به فروشگاه Oculus، توسعهدهندگان همچنین میتوانند برنامههای خود را از طریق پلتفرمهایی مانند SideQuest مستقیماً و بدون نیاز به تأیید فروشگاه، به طور ایمن و ایمن بین مصرفکنندگان توزیع کنند. این به آنها اجازه میدهد تا برنامهای را مستقیماً در اختیار کاربران نهایی قرار دهند، حتی اگر در مراحل اولیه توسعه، آزمایشی یا مخاطبان منحصربهفرد باشد.
تست برنامه های چند تب
برای آزمایش برنامههای چند برگه، من یک PWA آزمایشی کوچک ایجاد کردم که ویژگیهای پیوند مختلف را نشان میدهد: یعنی باز کردن یک برگه جدید در PWA، ماندن در برگه فعلی، باز کردن یک پنجره مرورگر جدید، و باز کردن در 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 از جدیدترین PWA خود، SVGcode ایجاد کردم. میتوانید فایل APK نتیجهشده output.apk
را از Google Drive من دانلود کنید. اگر می خواهید بسته را بیشتر بررسی کنید، من یک نسخه دیکامپایل شده نیز دارم. دستورالعمل های ساخت را در package.json
پیدا کنید.
استفاده از برنامه در Oculus به خوبی کار می کند، از جمله توانایی باز کردن و ذخیره فایل ها. مرورگر Oculus از File System Access API پشتیبانی نمی کند، اما رویکرد بازگشتی کمک می کند. تنها چیزی که کار نمی کند، زوم کردن است. انتظار من این بود که با فشار دادن دکمه ماشه روی هر دو کنترلر و سپس حرکت دادن کنترلرها در جهت مخالف کار کند. به غیر از این، هر چیز دیگری عملکرد و پاسخگو بود، همانطور که در صفحه نمایش تعبیه شده مشاهده می کنید.
PWAهای سه بعدی WebXR همهجانبه
پشتیبانی از PWA در Oculus Quest به برنامه های مسطح دو بعدی محدود نمی شود. توسعهدهندگان میتوانند با استفاده از WebXR API تجربههای سهبعدی همهجانبهای را برای VR ایجاد کنند.
آیا نمیدانید که چگونه درخواستهای مختلف (نصب PWA، درخواستهای مجوز، اعلانها) از داخل VR مدیریت میشوند، اگر اصلا وجود دارد؟
در اینجا یک اسکرینپست تست درخواستهای عامل کاربر از آزمایشهای WebXR گروه کاری وب همه جانبه آمده است.
همانطور که می بینید، ورود به حالت VR نیاز به اجازه کاربر دارد. مجوزها برای هر مبدا یک بار خواسته می شود. درخواست مجوز از حالت غوطه ور خارج می شود. اعلان ها در حال حاضر پشتیبانی نمی شوند.
ردیابی دست
به لطف WebXR Hand Input API و سیستم ردیابی دست مبتنی بر هوش مصنوعی Meta، میتوانید از دستهای خود برای تعامل با PWA در حالت همهجانبه استفاده کنید.
در اینجا یک صفحه نمایش از نمونه ردیابی دستی از نمونه های WebXR گروه کاری وب همه جانبه آمده است.
واقعیت افزوده/مختلط (عبور)
همانطور که در Meta Connect 2022 اعلام شد، مرورگر Meta Quest پشتیبانی از WebXR Augmented Reality (AR) که با نام واقعیت ترکیبی (MR) نیز شناخته می شود را در دستگاه های Meta Quest 2 و Meta Quest Pro اضافه کرده است.
بیایید یک نمونه شروع A-Frame را با مدلهای کوچکشده و آسمان و صفحه پنهان برای واقعیت افزوده بررسی کنیم.
A-Frame یک چارچوب وب منبع باز برای ایجاد تجربیات 3D/VR/AR کاملاً خارج از عناصر HTML سفارشی قابل استفاده مجدد است که خواندن، درک، و کپی و چسباندن آسان است.
در اینجا تصویری از این دمو در متا کوئست 2 را مشاهده می کنید.
Meta Quest 2 دارای دوربین های تک رنگ است، بنابراین گذرگاه در مقیاس خاکستری است، در حالی که Meta Quest Pro دارای دوربین های رنگی است.
نتیجه گیری
PWA ها در Oculus Quest 2 بسیار سرگرم کننده و بسیار امیدوارکننده هستند. بوم مجازی بیپایان که به کاربران اجازه میدهد صفحه نمایش خود را به هر چیزی که به بهترین شکل با وظیفه فعلی مطابقت دارد، مقیاسبندی کنند، پتانسیل زیادی برای تغییر روش کار ما در آینده دارد. در حالی که تایپ در VR با ردیابی دستی هنوز در مراحل ابتدایی است و حداقل برای من هنوز خیلی قابل اعتماد کار نمی کند، برای وارد کردن URL یا تایپ متون کوتاه به اندازه کافی خوب کار می کند.
چیزی که من در مورد PWA ها در Oculus Quest 2 بیشتر دوست دارم این است که آنها فقط PWA های معمولی هستند که می توانند بدون تغییر در برگه مرورگر یا از طریق یک بسته بندی APK نازک بدون هیچ API مخصوص پلتفرم استفاده شوند. هدف قرار دادن چندین پلتفرم با یک کد هرگز آسان تر نبوده است. در اینجا PWA در VR و AR در وب است. آینده روشن است!
قدردانی ها
عکس Oculus Quest 2 توسط Maximilian Prandstätter در فلیکر . تصاویر فروشگاه Oculus از برنامه های اینستاگرام ، فیس بوک ، مرورگر Oculus ، و Spike و همچنین تصویر قابلیت کشف اپلیکیشن و انیمیشن ردیابی دستی توسط متا. تصویر قهرمان توسط Arnau Marín i Puig. این پست توسط جو مدلی بازبینی شده است.