با یونیتی برای اندروید XR توسعه دهید

این راهنما یک نمای کلی از توسعه با Unity برای Android XR ارائه می دهد. Android XR با ابزارها و ویژگی‌های آشنایی که از Unity انتظار داشتید کار می‌کند، و از آنجایی که پشتیبانی از Android XR یونیتی بر روی OpenXR ساخته شده است، بسیاری از ویژگی‌هایی که در OpenXR Overview توضیح داده شده‌اند در Unity نیز پشتیبانی می‌شوند.

این راهنما را دنبال کنید تا در مورد:

  • پشتیبانی یونیتی برای اندروید XR
    • مبانی Unity XR
    • توسعه و انتشار اپلیکیشن برای اندروید XR
    • بسته های یونیتی برای اندروید XR
      • Unity OpenXR: بسته Android XR
      • برنامه های افزودنی Android XR برای Unity
      • ویژگی ها و ملاحظات سازگاری
  • ورودی و تعامل

پشتیبانی یونیتی برای اندروید XR

وقتی برنامه‌های Unity را برای Android XR می‌سازید، می‌توانید از ابزارها و قابلیت‌های واقعیت ترکیبی در Unity 6 استفاده کنید. این شامل الگوهای واقعیت ترکیبی است که از جعبه ابزار تعامل XR ، بنیاد AR ، و پلاگین OpenXR استفاده می‌کنند تا به شما در شروع سریع کمک کنند. هنگام ساخت برنامه‌ها با Unity برای Android XR، خط لوله رندر جهانی (URP) را به عنوان خط لوله رندر و Vulkan را به‌عنوان API گرافیکی شما توصیه می‌کنیم. این ویژگی ها به شما این امکان را می دهد که از برخی از ویژگی های گرافیکی جدیدتر Unity که فقط با Vulkan پشتیبانی می شوند، استفاده کنید. برای اطلاعات بیشتر در مورد نحوه پیکربندی این تنظیمات، راهنمای تنظیم پروژه را مرور کنید.

مبانی یونیتی XR

اگر در توسعه Unity یا XR تازه کار هستید، می توانید برای درک مفاهیم اولیه XR و گردش کار به کتابچه راهنمای XR Unity مراجعه کنید. کتابچه راهنمای XR حاوی اطلاعاتی در مورد:

توسعه و انتشار اپلیکیشن برای اندروید

یونیتی مستندات عمیقی را برای توسعه، ساخت و انتشار برای Android ارائه می‌کند، موضوعاتی از جمله مجوزهای Android در یونیتی ، تنظیمات ساخت اندروید ، ساخت برنامه شما برای Android و تحویل به Google Play را پوشش می‌دهد.

بسته های یونیتی برای اندروید XR

دو بسته وجود دارد که از ساخت برنامه های Unity برای Android XR پشتیبانی می کند. هر دوی این بسته‌ها افزونه‌های ارائه‌دهنده XR هستند که می‌توانند از طریق بسته مدیریت پلاگین XR Unity فعال شوند. مدیر پلاگین XR تنظیمات پروژه را برای مدیریت و ارائه کمک در مورد بارگیری، مقداردهی اولیه، تنظیمات و پشتیبانی ساخت برای پلاگین های XR اضافه می کند. برای اینکه برنامه شما بتواند ویژگی های OpenXR را در زمان اجرا اجرا کند، پروژه باید این ویژگی ها را از طریق مدیر پلاگین فعال کند.

این تصویر نمونه ای را نشان می دهد که در آن می توانید این گروه های ویژگی را از طریق ویرایشگر Unity فعال کنید.

نمونه ای از صفحه مدیریت پلاگین unity xr

Unity OpenXR Android XR

بسته Unity OpenXR Android XR یک افزونه XR برای افزودن پشتیبانی از Android XR به یونیتی است. این افزونه XR اکثر پشتیبانی از Android XR را از Unity ارائه می‌کند و پشتیبانی دستگاه Android XR را برای پروژه‌های بنیاد AR فعال می‌کند. بنیاد AR برای توسعه دهندگانی طراحی شده است که می خواهند تجربیات واقعیت افزوده یا واقعیت ترکیبی ایجاد کنند. این رابط برای ویژگی های AR فراهم می کند، اما خود هیچ ویژگی را پیاده سازی نمی کند. بسته Unity OpenXR Android XR پیاده سازی را فراهم می کند. برای شروع کار با این بسته، راهنمای بسته را مشاهده کنید که حاوی راهنمای شروع کار است.

برنامه های افزودنی Android XR برای Unity

افزونه‌های Android XR برای Unity مکمل بسته Unity OpenXR Android XR است و شامل ویژگی‌های اضافی برای کمک به شما در ایجاد تجربیات همه‌جانبه است. می توان از آن به تنهایی یا همراه با بسته Unity OpenXR Android XR استفاده کرد.

برای شروع کار با این بسته، راهنمای راه‌اندازی پروژه یا شروع سریع برای وارد کردن برنامه‌های افزودنی Android XR برای Unity را دنبال کنید.

ویژگی ها و ملاحظات سازگاری

جدول زیر ویژگی های پشتیبانی شده توسط Unity OpenXR را شرح می دهد: بسته Android XR و Android XR Extensions for Unity، و می توان از آن برای تعیین اینکه کدام بسته شامل ویژگی های مورد نیاز شما و هرگونه ملاحظات سازگاری است استفاده کرد.

ویژگی

Unity OpenXR: رشته ویژگی Android XR

رشته ویژگی Android XR Extensions for Unity

موارد استفاده و رفتار مورد انتظار

جلسه AR

Android XR: جلسه AR

  • تنظیمات ویژگی عبارتند از Optimize Buffer Discards (Vulkan)

Android XR (برنامه‌های افزودنی): مدیریت جلسه

  • تنظیمات ویژگی عبارتند از Subsampling (Vulkan) و URP SpaceWarp (Vulkan)

برای استفاده از ویژگی‌های هر بسته، باید ویژگی AR Session را برای آن بسته فعال کنید. شما می توانید هر دو مجموعه ویژگی را به طور همزمان فعال کنید. ویژگی های فردی مطابق با تعارض ها رسیدگی می کنند.

ردیابی دستگاه

n/a

n/a

ردیابی دستگاه برای ردیابی موقعیت و چرخش دستگاه در فضای فیزیکی استفاده می شود. GameObject XR Origin به طور خودکار ردیابی دستگاه را کنترل می کند و ردیابی ها را از طریق مؤلفه XROrigin و سلسله مراتب GameObject با دوربین و TrackedPoseDriver به سیستم مختصات Unity تبدیل می کند.

دوربین

Android XR: دوربین AR

n/a

این ویژگی از تخمین نور و عبور تمام صفحه پشتیبانی می کند.

تشخیص هواپیما

Android XR: AR Plane

Android XR (برنامه های افزودنی): هواپیما

این دو ویژگی یکسان هستند. از یکی یا دیگری استفاده کنید Android XR (برنامه‌های افزودنی): Plane برای توسعه دهندگان گنجانده شده است تا توسعه دهندگان بتوانند از Android XR (برنامه‌های افزودنی) استفاده کنند: ویژگی‌های Object Tracking و Anchors مداوم بدون نیاز به وابستگی به بسته Unity OpenXR Android XR. در آینده، Android XR (برنامه‌های افزودنی): Plane به نفع Android XR حذف خواهد شد: AR Anchor.

ردیابی اشیا

n/a

Android XR (برنامه‌های افزودنی): ردیابی اشیا

این ویژگی برای شناسایی و ردیابی اشیاء در محیط فیزیکی که در ترکیب با کتابخانه اشیاء مرجع استفاده می شود، پشتیبانی می کند.

ردیابی چهره

Android XR: AR Face

  • فقط XR_ANDROID_avatar_eyes
  • بدون ردیابی چهره

اندروید XR: ردیابی چهره

  • XR_ANDROID_face_tracking

پشتیبانی از چشم‌های آواتار از طریق ویژگی Android XR: AR Face ارائه می‌شود. از طریق ویژگی Android XR: Face Tracking به حالات چهره کاربر دسترسی پیدا کنید. در صورت تمایل می توان از این دو ویژگی با هم استفاده کرد.

ری کست می کند

Android XR: AR Raycast

  • لنگر هواپیما
  • لنگر عمقی

n/a

این ویژگی به شما امکان می دهد یک پرتو پرتاب کنید و تقاطع بین آن پرتو و صفحه قابل ردیابی یا ردیابی عمقی که در محیط فیزیکی شناسایی می شود را محاسبه کنید.

لنگرها

Android XR: AR Anchor

Android XR (برنامه‌های افزودنی): Anchor

  • تنظیمات ویژگی شامل ماندگاری است.

هر دو ویژگی شامل پشتیبانی از لنگرهای فضایی و لنگرهای صفحه است. از یک ویژگی یا ویژگی دیگر استفاده کنید. برای لنگرهای پایدار، از Android XR (برنامه‌های افزودنی): Anchor استفاده کنید. در آینده، Android XR (برنامه‌های افزودنی): Anchor حذف خواهد شد و همه ویژگی‌های Anchor در Android XR خواهند بود: AR Anchor.

انسداد

Android XR: AR Occlusion

  • عمق محیط

n/a

Occlusion به محتوای واقعیت ترکیبی در برنامه شما اجازه می دهد تا در پشت اشیاء در محیط فیزیکی پنهان یا تا حدی مبهم به نظر برسد.

معیارهای عملکرد

معیارهای عملکرد Android XR

n/a

از این ویژگی برای دسترسی به معیارهای عملکرد دستگاه‌های Android XR استفاده کنید.

لایه های ترکیب

پشتیبانی از لایه ترکیب (پلاگین OpenXR و لایه ترکیب XR مورد نیاز است)

Android XR: لایه ترکیب گذر

  • XR_ANDROID_composition_layer_passthrough_mesh

از پشتیبانی لایه ترکیبی Unity برای ایجاد لایه های ترکیبی اولیه (به عنوان مثال چهار، سیلندر، طرح ریزی) استفاده کنید. Android XR: Passthrough Composition Layer می تواند برای ایجاد یک لایه عبور با یک مش سفارشی استفاده شود که از GameObject Unity خوانده می شود.

رندر Foveated

Foveated Rendering (پلاگین OpenXR مورد نیاز است)

  • پشتیبانی از رندر فوودار با ردیابی چشم: ناحیه وضوح بالاتر در مرکز جایی است که کاربر در حال حاضر به آن نگاه می کند و این امر برای کاربر کمتر آشکار می شود.

Foveation (میراث)

رندر Foveated با کاهش وضوح نواحی در دید محیطی کاربر، سرعت رندر را افزایش می دهد. ویژگی رندر فووید یونیتی فقط برای برنامه هایی که از URP و Vulkan استفاده می کنند پشتیبانی می شود. ویژگی Foveation (Legacy) در افزونه‌های Android XR برای Unity از BiRP و GLES نیز پشتیبانی می‌کند. توصیه می کنیم در صورت امکان از ویژگی رندر فووید Unity استفاده کنید و توجه داشته باشید که URP و Vulkan هنگام ساخت برای Android XR توصیه می شوند.

فضای مرجع نامحدود

n/a

Android XR: فضای مرجع نامحدود

این ویژگی حالت مبدا ردیابی XRInputSubsystem را روی Unbounded تنظیم می کند. نامحدود نشان می دهد که XRInputSubsystem تمام دستگاه های ورودی را در ارتباط با یک لنگر جهانی ردیابی می کند که می تواند تغییر کند.

حالت ترکیبی محیطی

n/a

حالت ترکیبی محیطی

این ویژگی به شما امکان می‌دهد حالت ترکیبی محیط XR را تنظیم کنید، که نحوه ترکیب تصاویر مجازی با محیط واقعی را در هنگام فعال کردن عبور کنترل می‌کند.

ورودی و تعامل

Android XR از ورودی طبیعی چند وجهی پشتیبانی می کند.

علاوه بر ردیابی دست و چشم، تجهیزات جانبی مانند کنترلرهای 6DoF، ماوس و صفحه کلید فیزیکی نیز پشتیبانی می شود. این بدان معناست که انتظار می‌رود برنامه‌های اندروید XR از تعامل دستی پشتیبانی کنند و نمی‌توان تصور کرد که همه دستگاه‌ها دارای کنترلر هستند.

پروفایل های تعامل

Unity از نمایه تعامل برای مدیریت نحوه ارتباط برنامه XR شما با دستگاه ها و پلتفرم های مختلف XR استفاده می کند. این پروفایل‌ها ورودی‌ها و خروجی‌های مورد انتظار را برای پیکربندی‌های سخت‌افزاری مختلف ایجاد می‌کنند و از سازگاری و عملکرد سازگار در طیف وسیعی از پلتفرم‌ها اطمینان می‌دهند. با فعال کردن نمایه‌های تعامل، می‌توانید اطمینان حاصل کنید که برنامه XR شما با دستگاه‌های مختلف به درستی کار می‌کند، نقشه ورودی ثابت را حفظ می‌کند و به ویژگی‌های خاص XR دسترسی دارد. برای تنظیم نمایه تعامل:

  1. پنجره تنظیمات پروژه را باز کنید (منو: ویرایش > تنظیمات پروژه ).
  2. برای گسترش بخش افزونه (در صورت لزوم) روی XR Plug-in Management کلیک کنید.
  3. OpenXR را در لیست پلاگین های XR انتخاب کنید.
  4. در قسمت Interaction Profiles ، دکمه + را برای افزودن پروفایل انتخاب کنید.
  5. نمایه را برای افزودن از لیست انتخاب کنید.

تعامل دست

تعامل دستی ( XR_EXT_hand_interaction ) توسط پلاگین OpenXR ارائه شده است و شما می توانید طرح‌بندی دستگاه در سیستم ورودی Unity با فعال کردن نمایه تعامل دست . از این نمایه تعامل برای ورودی دستی که توسط چهار حالت عمل تعریف شده توسط OpenXR پشتیبانی می‌شود، استفاده کنید: "pinch"، "poke"، "aim" و "grip". اگر به تعامل دست یا قابلیت ردیابی دست اضافی نیاز دارید، به XR Hands در این صفحه مراجعه کنید.

تعامل بینایی چشم

تعامل نگرش چشم ( XR_EXT_eye_gaze_interaction ) توسط پلاگین OpenXR ارائه شده است، و شما می توانید از این طرح برای بازیابی داده های حالت چشم (موقعیت و چرخش) که افزونه برمی گرداند استفاده کنید. در راهنمای ورودی OpenXR درباره تعامل با نگاه چشم بیشتر بخوانید .

تعامل کنترلر

Android XR از Oculus Touch Controller Profile برای کنترلرهای 6DoF پشتیبانی می کند. هر دوی این پروفایل ها توسط پلاگین OpenXR ارائه شده اند.

تعامل ماوس

نمایه تعامل موس Android XR ( XR_ANDROID_mouse_interaction ) توسط افزونه‌های Android XR برای Unity ارائه شده است. این طرح‌بندی دستگاه <AndroidXRMouse> را در سیستم ورودی Unity نشان می‌دهد.

تعامل پوز کف دست

پلاگین OpenXR از تعامل Palm Pose ( XR_EXT_palm_pose ) پشتیبانی می‌کند، که طرح‌بندی <PalmPose> را در سیستم ورودی Unity نشان می‌دهد. قرار نیست حالت کف دست جایگزینی برای اکستنشن ها یا بسته هایی باشد که ردیابی دست را برای موارد استفاده پیچیده تر انجام می دهند. در عوض می توان از آن برای قرار دادن محتوای بصری خاص برنامه مانند تصاویری آواتار استفاده کرد. حالت کف دست شامل موقعیت و جهت کف دست است.

دست های XR

بسته XR Hands به شما امکان می‌دهد به داده‌های ردیابی دست ( XR_EXT_hand_tracking و XR_FB_hand_tracking_aim ) دسترسی داشته باشید و یک بسته‌بندی برای تبدیل داده‌های مفصل دست از ردیابی دست به حالت ورودی ارائه می‌دهد. برای استفاده از ویژگی های ارائه شده توسط بسته XR Hands، ویژگی های زیرسیستم ردیابی دست و Meta Hand Tracking Aim OpenXR را فعال کنید.

مثالی که نحوه فعال کردن ردیابی دست را نشان می دهد

بسته دستی XR می‌تواند مفید باشد اگر به ژست‌های دانه‌دار بیشتر یا داده‌های مفصل دست نیاز دارید یا زمانی که نیاز به کار با حرکات سفارشی دارید.

برای جزئیات بیشتر، به مستندات Unity برای راه اندازی XR Hands در پروژه خود مراجعه کنید

راهی برای دست دادن انتخاب کنید

Android XR از دو روش رندر دست پشتیبانی می‌کند: یک توری دستی و یک ویژوالایزر پیش ساخته.

توری دستی

بسته Android XR Unity حاوی یک ویژگی Hand Mesh است که دسترسی به XR_ANDROID_hand_mesh extension را فراهم می کند. قابلیت Hand Mesh مش هایی را برای دستان کاربر فراهم می کند. مش عقربه شامل رئوس مثلث هایی است که هندسه عقربه را نشان می دهد. این ویژگی در نظر گرفته شده است که برای ارائه یک شبکه شخصی سازی شده هندسه واقعی دست های کاربر برای تجسم استفاده شود.

پیش ساخته XR Hands

بسته XR Hands شامل نمونه‌ای به نام Hands Visualizer است که شامل دست‌های چپ و راست کاملاً اصلاح‌شده برای نمایش دست‌های کاربر با زمینه مناسب است.

حرکات سیستمی

Android XR شامل یک حرکت سیستمی برای باز کردن منو برای بازگشت کاربران، باز کردن راه‌انداز یا دریافت نمای کلی از برنامه‌های در حال اجرا است. کاربر می تواند این منوی سیستم را با استفاده از یک پینچ دست غالب فعال کند.

هنگامی که کاربر در حال تعامل با منوی ناوبری سیستم است، برنامه فقط به رویدادهای ردیابی سر پاسخ می دهد. بسته XR Hands می تواند تشخیص دهد که کاربر چه زمانی اقدامات خاصی مانند تعامل با این منوی ناوبری سیستم را انجام می دهد. بررسی AimFlags SystemGesture و DominantHand به شما اطلاع می دهد که این عملکرد سیستم چه زمانی انجام می شود. برای اطلاعات بیشتر در مورد AimFlags، به مستندات Enum MetaAimFlags Unity مراجعه کنید.

جعبه ابزار تعامل XR

بسته XR Interaction Toolkit یک سیستم تعاملی سطح بالا و مبتنی بر مؤلفه برای ایجاد تجربیات VR و AR است. این چارچوبی را فراهم می کند که تعاملات سه بعدی و رابط کاربری را از رویدادهای ورودی Unity در دسترس قرار می دهد. از وظایف تعاملی از جمله بازخورد لمسی، بازخورد بصری و حرکت پشتیبانی می کند.