این راهنما نمای کلیای از توسعه با Unity برای Android XR ارائه میدهد. Android XR با ابزارها و ویژگیهای آشنایی که از Unity انتظار دارید کار میکند و ازآنجاییکه پشتیبانی Android XR از Unity بر پایه OpenXR ساخته شده است، بسیاری از ویژگیهای شرحدادهشده در نمای کلی OpenXR نیز در Unity پشتیبانی میشوند.
این راهنما را دنبال کنید تا درباره موارد زیر اطلاعات کسب کنید:
- پشتیبانی Unity از Android XR
- مبانی Unity XR
- توسعه و انتشار برنامهها برای Android XR
- بستههای Unity برای Android XR
- Unity OpenXR: Android XR package
- افزونههای Android XR برای Unity
- ملاحظات مربوط به ویژگیها و سازگاری
- ورودی و تعامل
پشتیبانی Unity برای Android XR
وقتی برنامههای Unity را برای Android XR میسازید، میتوانید از ابزارها و قابلیتهای واقعیت ترکیبی در جدیدترین نسخههای Unity 6 بهره ببرید. این شامل الگوهای واقعیت ترکیبی است که از XR Interaction Toolkit، AR Foundation، و OpenXR Plugin استفاده میکنند تا به شما کمک کنند بهسرعت شروع کنید. هنگام ساختن برنامهها با Unity برای Android XR، توصیه میکنیم از Universal Render Pipeline (URP) بهعنوان خط لوله پردازش و از Vulkan بهعنوان Graphics API استفاده کنید. این ویژگیها به شما امکان میدهند از برخی ویژگیهای گرافیکی Unity که فقط با Vulkan پشتیبانی میشوند بهره ببرید. برای اطلاعات بیشتر درباره نحوه پیکربندی این تنظیمات، راهنمای راهاندازی پروژه را مرور کنید.
Unity XR Basics
اگر با Unity یا توسعه واقعیت گسترده آشنا نیستید، میتوانید به راهنمای واقعیت گسترده Unity مراجعه کنید تا با مفاهیم و گردش کار پایه واقعیت گسترده آشنا شوید. «راهنمای واقعیت گسترده» حاوی اطلاعاتی درباره موارد زیر است:
- افزونههای ارائهدهنده XR، ازجمله Unity OpenXR: Android XR و «افزونههای Android XR» برای Unity
- بستههای پشتیبانی واقعیت گسترده برای افزودن ویژگیهای بیشتر در سطح برنامه
- راهنمای معماری XR که پشته فناوری Unity XR و زیرسیستمهای XR را شرح میدهد
- راهاندازی پروژه واقعیت گسترده
- ساختن و اجرای برنامههای XR
- راهنمای گرافیک XR، ازجمله Universal Render Pipeline، پرداز برجستهبینی، پرداز گودی، مناطق پرداز چندنمایی، و زمانبندی فریم واقعیت مجازی
- راهنمای صوتی XR، ازجمله پشتیبانی از فضاسازهای صوتی
توسعه و انتشار برنامهها برای Android
Unity اسناد عمیقی برای توسعه، ساخت، و انتشار برای Android ارائه میدهد که موضوعاتی ازجمله اجازههای Android در Unity، تنظیمات ساخت Android، ساخت برنامه برای Android، و ارائه به Google Play را پوشش میدهد.
بستههای Unity برای Android XR
دو بسته وجود دارد که از ساختن برنامههای Unity برای Android XR پشتیبانی میکند. هر دوی این بستهها افزایههای ارائهدهنده XR هستند که میتوانند ازطریق بسته مدیریت افزایه XR در Unity فعال شوند. مدیر افزایه XR «تنظیمات پروژه» را برای مدیریت و ارائه راهنمایی درباره بار کردن، مقداردهی اولیه، تنظیمات، و پشتیبانی ساخت برای افزایههای XR اضافه میکند. برای اینکه برنامهتان بتواند ویژگیهای OpenXR را در زمان اجرا اجرا کند، پروژه باید این ویژگیها را ازطریق مدیر افزونه فعال کرده باشد.
این تصویر نمونهای را نشان میدهد که در آن میتوانید این گروههای ویژگی را ازطریق ویرایشگر Unity فعال کنید.
Unity OpenXR Android XR
بسته Unity OpenXR Android XR یک افزایه XR برای افزودن پشتیبانی Android XR به Unity است. این افزونه «واقعیت گسترده» بخش عمدهای از پشتیبانی Android XR را برای Unity ارائه میدهد و پشتیبانی دستگاه Android XR را برای پروژههای AR Foundation فعال میکند. AR Foundation برای توسعهدهندگانی طراحی شده است که میخواهند تجربههای واقعیت افزوده یا واقعیت ترکیبی ایجاد کنند. این برنامه میانای ویژگیهای واقعیت افزوده را ارائه میدهد، اما خودش هیچ ویژگیای را پیادهسازی نمیکند. بسته 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 برای Unity»، و میتوان از آن برای تعیین اینکه کدام بسته حاوی ویژگیهای موردنیاز شما است و هرگونه ملاحظات سازگاری استفاده کرد.
ویژگی |
Unity OpenXR: Android XR feature string |
رشته ویژگی «افزونههای Android XR» برای Unity |
موارد استفاده و رفتار موردانتظار |
|---|---|---|---|
Android XR: AR Session
|
Android XR (افزونهها): مدیریت جلسه
|
برای استفاده از ویژگیهای هریک از این بستهها، باید ویژگی «جلسه واقعیت افزوده» را برای آن بسته فعال کنید. میتوانید هر دو مجموعه ویژگی را همزمان فعال کنید؛ ویژگیهای تکی تداخلها را بهطور مقتضی مدیریت خواهند کرد. |
|
موجود نیست |
موجود نیست |
ردیابی دستگاه برای ردیابی موقعیت و چرخش دستگاه در فضای فیزیکی استفاده میشود. XR Origin GameObject بهطور خودکار ردیابی دستگاه و تبدیل کردن موارد قابلردیابی به سیستم مختصات Unity را بااستفاده از مؤلفه XROrigin و سلسلهمراتب GameObject با «دوربین» و TrackedPoseDriver مدیریت میکند. |
|
Android XR: دوربین واقعیت افزوده |
موجود نیست |
این ویژگی از تخمین نور و عبور تمامصفحه پشتیبانی میکند. |
|
Android XR: AR Plane |
موجود نیست |
این ویژگی از تشخیص و ردیابی سطوح صاف در محیط فیزیکی پشتیبانی میکند. |
|
موجود نیست |
Android XR (افزونهها): ردگیری شیء |
این ویژگی از شناسایی و ردیابی اشیا در محیط فیزیکی پشتیبانی میکند و در ترکیب با کتابخانه اشیای مرجع استفاده میشود. |
|
Android XR: AR Face
|
Android XR: ردگیری چهره
|
پشتیبانی از چشمهای چهرهواره ازطریق ویژگی «Android XR: چهره واقعیت افزوده» ارائه میشود. دسترسی به حالتهای چهره کاربر ازطریق ویژگی «ردگیری چهره» در Android XR. این دو ویژگی را میتوان باهم استفاده کرد. |
|
Android XR: AR Raycast
|
موجود نیست |
این ویژگی به شما امکان میدهد پرتو بتابانید و تقاطع بین آن پرتو و قابلردیابیهای صفحهای یا قابلردیابیهای عمقی را که در محیط فیزیکی شناسایی شدهاند محاسبه کنید. |
|
Android XR: AR Anchor |
موجود نیست |
«لنگر واقعیت افزوده» از لنگرهای فضایی، صفحهای، و ماندگار ازطریق AR Foundation پشتیبانی میکند. |
|
Android XR: AR Occlusion
|
موجود نیست |
انسداد به محتوای واقعیت ترکیبی در برنامهتان اجازه میدهد بهصورت پنهان یا تاحدی مبهم در پشت اشیاء در محیط فیزیکی ظاهر شود. |
|
سنجههای عملکرد |
سنجههای عملکرد Android XR |
موجود نیست |
از این ویژگی برای دسترسی به سنجههای عملکرد دستگاههای Android XR استفاده کنید. |
پشتیبانی از لایه ترکیببندی (افزایه OpenXR و لایه ترکیببندی واقعیت گسترده لازم است) |
Android XR: لایه ترکیببندی Passthrough
|
از «پشتیبانی لایه ترکیببندی» Unity برای ایجاد لایههای ترکیببندی پایه (مثلاً چهارگوش، استوانه، طرحریزی) استفاده کنید. Android XR: از Passthrough Composition Layer میتوان برای ایجاد لایه انتقالی با مش سفارشی استفاده کرد که از GameObject در Unity میخواند. |
|
Foveated Rendering (افزایه OpenXR لازم است)
|
کانونگرایی (قدیمی) |
پرداخت کانونی با کاهش وضوح نواحی در دید پیرامونی کاربر، سرعت پرداخت را افزایش میدهد. ویژگی پردازش گودهای Unity فقط برای برنامههایی پشتیبانی میشود که از URP و Vulkan استفاده میکنند. ویژگی Foveation (Legacy) در Android XR Extensions برای Unity از Built-in Render Pipeline و OpenGL ES نیز پشتیبانی میکند. توصیه میکنیم درصورت امکان از ویژگی پردازش foveated Unity استفاده کنید و توجه داشته باشید که هنگام ساختن برای Android XR، هم URP و هم Vulkan توصیه میشوند. |
|
موجود نیست |
این ویژگی حالت مبدأ ردیابی XRInputSubsystem را روی Unbounded تنظیم میکند. «نامحدود» نشان میدهد که XRInputSubsystem همه InputDevices را در ارتباط با لنگر جهانی ردیابی میکند که میتواند تغییر کند. |
||
موجود نیست |
حالت ادغام محیط |
این ویژگی به شما امکان میدهد حالت ترکیب محیط واقعیت گسترده را تنظیم کنید که نحوه ترکیب تصاویر مجازی با محیط دنیای واقعی را هنگام فعال بودن حالت «گذر» کنترل میکند. |
|
موجود نیست |
|
||
موجود نیست |
راهبردهای پیکربندی اصالتسنجی جلسه (کلید میانای برنامهسازی کاربردی، بدون کلید، و کد اصالتسنجی) را برای سرویسهای پشتیبانیشده توسط فضای ابری ارائه میدهد. |
||
موجود نیست |
Unity ARFace را با حالتهای ردگیری چهره چندحالته و قابلپیکربندی گسترش میدهد ( |
||
موجود نیست |
امکان پرسوجو درباره وضعیت باتری زمان اجرا و سطح شارژ کنترلکنندههای متصل و مسیرهای ورودی بااستفاده از |
||
Android XR: دوربین واقعیت افزوده |
موجود نیست |
امکان پرسمان و تنظیم سطوح کمنور کردن دیدن محیط واقعی را بااستفاده از ARCameraFeature در Unity فراهم میکند. |
|
موجود نیست |
ویژگیهای افزونه زمان اجرا و قابلیتهای دستگاه را بااستفاده از |
||
موجود نیست |
امکان پرسمان کردن حالتهای پیشراهاندازی محیط زمان اجرا (ازجمله حالت ترکیب محیط، شفافیت عبور، و روشهای ورودی فعال) بااستفاده از |
||
Android XR: AR Bounding Box |
بااستفاده از چارچوب OpenXR Spatial Entities ( |
||
موجود نیست |
قابلیتهای لنگر را بااستفاده از |
||
موجود نیست |
به محتوای برنامه اجازه میدهد در محفظه حجمی سهبعدی تحت مدیریت سیستم در «حالت فضای کامل» با میاناهای برنامهسازی کاربردی و رویدادهای فراخوانی در |
ورودی و تعامل
Android XR از ورودی طبیعی چندحالتی پشتیبانی میکند.
علاوهبر ردگیری چشم و دست، از لوازم جانبی مانند کنترلکنندههای 6DoF، موشواره، و صفحهکلید فیزیکی نیز پشتیبانی میشود. این یعنی انتظار میرود برنامههای Android XR از تعامل با دست پشتیبانی کنند و نمیتوان فرض کرد که همه دستگاهها با کنترلکننده عرضه خواهند شد.
نمایههای تعامل
Unity از نمایه تعامل برای مدیریت نحوه ارتباط برنامه XR شما با دستگاهها و پلاتفرمهای مختلف XR استفاده میکند. این نمایهها ورودیها و خروجیهای موردانتظار را برای پیکربندیهای سختافزاری مختلف ایجاد میکنند و سازگاری و عملکرد یکپارچه را در طیفی از پلاتفرمها ارتقا میدهند. با فعال کردن نمایههای تعامل، میتوانید کمک کنید که برنامه «واقعیت گسترده» شما بهدرستی با دستگاههای مختلف کار کند، نگاشت ورودی ثابتی داشته باشد، و به ویژگیهای خاص «واقعیت گسترده» دسترسی داشته باشد. برای تنظیم نمایه تعامل:
- پنجره تنظیمات پروژه را باز کنید (منو: ویرایش > تنظیمات پروژه).
- روی مدیریت افزونه XR کلیک کنید تا بخش افزونه ازهم باز شود (درصورت لزوم).
- OpenXR را در فهرست افزایههای واقعیت گسترده انتخاب کنید.
- در بخش نمایههای تعامل، دکمه + را برای افزودن نمایه انتخاب کنید.
- نمایه موردنظر را از فهرست انتخاب کنید تا اضافه شود.
تعامل با دست
تعامل با دست (XR_EXT_hand_interaction) توسط افزونه OpenXR ارائه میشود و میتوانید با فعال کردن نمایه تعامل با دست، چیدمان دستگاه <HandInteraction> را در سیستم ورودی Unity نمایش دهید. از این نمایه تعامل برای ورودی دستی که توسط چهار حالت کنش تعریفشده توسط OpenXR پشتیبانی میشود استفاده کنید: «نیشگون»، «سیخونک»، «هدفگیری»، و «گرفتن». اگر به عملکرد ردیابی دست یا تعامل دست بیشتری نیاز دارید، به XR Hands در این صفحه مراجعه کنید.
تعامل با نگاه چشم
تعامل با نگاه چشم (XR_EXT_eye_gaze_interaction) توسط افزونه OpenXR ارائه میشود و میتوانید از این چیدمان برای بازیابی دادههای حالت چشم (موقعیت و چرخش) که افزونه برمیگرداند استفاده کنید. درباره تعامل با نگاه چشم در راهنمای ورودی OpenXR بیشتر بخوانید.
تعامل با کنترلکننده
Android XR از نمایه Oculus Touch Controller برای کنترلکنندههای 6DoF پشتیبانی میکند. هر دوی این نمایهها را افزونه OpenXR ارائه کرده است.
تعامل با موشواره
نمایه تعامل موشواره Android XR (XR_ANDROID_mouse_interaction)
توسط «افزونههای Android XR» برای Unity ارائه میشود. این افزونه یک
<AndroidXRMouse> چیدمان دستگاه را در سیستم ورودی Unity نشان میدهد.
تعامل با حالت کف دست
«افزایه OpenXR» از تعامل حالت کف دست (XR_EXT_palm_pose) پشتیبانی میکند که چیدمان <PalmPose> را در سیستم ورودی Unity نشان میدهد.
ژست کف دست قرار نیست جایگزینی برای افزونهها یا بستههایی باشد که ردیابی دست را برای موارد استفاده پیچیدهتر انجام میدهند؛ درعوض، میتوان از آن برای قرار دادن محتوای دیداری مختص برنامه مانند تصاویر آواتار استفاده کرد. حالت کف دست شامل
موقعیت و جهت کف دست است.
دستهای واقعیت گسترده
بسته XR Hands به شما امکان میدهد به دادههای ردگیری دست دسترسی داشته باشید—بااستفاده از
XR_EXT_hand_tracking و
XR_FB_hand_tracking_aim—و یک پوشاننده برای تبدیل
دادههای مفصل دست از ردگیری دست به حالتهای ورودی ارائه میدهد. برای استفاده از ویژگیهای ارائهشده
توسط بسته XR Hands، ویژگیهای Hand Tracking Subsystem و Meta Hand
Tracking Aim OpenXR را فعال کنید.
اگر به دادههای دقیقتر درباره حالت دست یا مفصل دست نیاز دارید یا اگر میخواهید با اشارههای سفارشی کار کنید، بسته XR hands میتواند مفید باشد.
برای جزئیات بیشتر، به اسناد Unity برای راهاندازی XR Hands در پروژه مراجعه کنید.
Face Tracking Confidence Regions
افزونه XR_ANDROID_face_tracking مقادیر اطمینان را برای سه ناحیه صورت ارائه میدهد: بالا سمت چپ، بالا سمت راست، و پایین صورت. این مقادیر که از ۰ (بدون اطمینان) تا ۱ (بالاترین اطمینان) متغیر است، دقت ردگیری چهره را برای هر ناحیه نشان میدهد.
میتوانید از این مقادیر اطمینان برای غیرفعال کردن تدریجی شکلهای ترکیبی یا اعمال فیلترهای بصری (مانند محو کردن) بر ناحیه چهره مربوطه استفاده کنید. برای یک شکل ترکیبی پایه، شکلهای ترکیبی را در ناحیه چهره مربوطه غیرفعال کنید.
ناحیه «پایین صورت» شامل همه چیز زیر چشمها، ازجمله دهان، چانه، گونه، و بینی میشود. دو ناحیه بالایی شامل چشمها و ناحیه ابرو در سمت چپ و راست صورت است.
تکهکد C# زیر نحوه دسترسی و استفاده از دادههای اطمینان را در اسکریپت Unity نشان میدهد:
using UnityEngine;
using Google.XR.Extensions;
public class FaceTrackingConfidence : MonoBehaviour
{
void Update()
{
if (!XRFaceTrackingFeature.IsFaceTrackingExtensionEnabled.HasValue)
{
DebugTextTopCenter.text = "XrInstance hasn't been initialized.";
return;
}
else if (!XRFaceTrackingFeature.IsFaceTrackingExtensionEnabled.Value)
{
DebugTextTopCenter.text = "XR_ANDROID_face_tracking is not enabled.";
return;
}
for (int x = 0; x < _faceManager.Face.ConfidenceRegions.Length; x++)
{
switch (x)
{
case (int)XRFaceConfidenceRegion.Lower:
regionText = "Bottom";
break;
case (int)XRFaceConfidenceRegion.LeftUpper:
regionText = DebugTextConfidenceLeft;
break;
case (int)XRFaceConfidenceRegion.RightUpper:
regionText = DebugTextConfidenceRight;
break;
}
}
}
برای اطلاعات بیشتر، به اسناد افزونههای Android XR برای Unity مراجعه کنید.
انتخاب روشی برای رندر کردن دستها
Android XR از دو روش برای پردازاندن دستها پشتیبانی میکند: مش دست و پیشساخته دیداریساز.
شبکه توری دست
بسته Android XR Unity حاوی ویژگی «مش دست» است که
دسترسی به XR_ANDROID_hand_mesh extension را فراهم میکند. ویژگی «مش دست»
مشهایی برای دستهای کاربر ارائه میدهد. مش دست حاوی رأسهای
مثلثهایی است که هندسه دست را نشان میدهند. این ویژگی برای ارائه مش شخصیسازیشدهای که هندسه واقعی دستهای کاربر را برای تجسم نشان میدهد درنظر گرفته شده است.
پیشساخته XR Hands
بسته XR Hands حاوی نمونهای بهنام Hands visualizer است که شامل دستهای چپ و راست کاملاً مجهز برای ارائه نمایش مناسب از دستهای کاربر است.
اشارههای سیستم
Android XR شامل یک اشاره سیستم برای باز کردن منویی است که کاربران میتوانند ازطریق آن به عقب برگردند، راهانداز را باز کنند، یا نمای کلی برنامههای درحال اجرا را دریافت کنند. کاربر میتواند این منو سیستم را بااستفاده از نیشگون با دست غالب فعال کند.
وقتی کاربر با منو پیمایش سیستم تعامل برقرار میکند، برنامه فقط به رویدادهای ردیابی سر پاسخ میدهد. بسته XR Hands میتواند تشخیص دهد که کاربر چه زمانی کنشهای خاصی را انجام میدهد، مثلاً تعامل با این منو پیمایش سیستم. بررسی AimFlags، SystemGesture، و DominantHand به شما اطلاع میدهد
چه زمانی این کنش سیستم انجام میشود. برای اطلاعات بیشتر درباره AimFlags، به
سند Enum MetaAimFlags Unity مراجعه کنید.
ابزار کار تعامل XR
بسته XR Interaction Toolkit یک سیستم تعاملی سطح بالا و مبتنی بر مؤلفه برای ایجاد تجربههای واقعیت مجازی و واقعیت افزوده است. این ابزار چارچوبی ارائه میدهد که تعاملات سهبعدی و واسط کاربر را از رویدادهای ورودی Unity دردسترس قرار میدهد. این مدل از تکالیف تعاملی ازجمله بازخورد لمسی، بازخورد دیداری، و جابهجایی پشتیبانی میکند.
OpenXR™ و نشانواره OpenXR علامتهای تجاری متعلق به The Khronos Group Inc. هستند و بهعنوان علامت تجاری در چین، اتحادیه اروپا، ژاپن، و پادشاهی متحد (UK) ثبت شدهاند.