يقدّم هذا الدليل نظرة عامة على عملية التطوير باستخدام Unity لنظام التشغيل Android XR. يتوافق Android XR مع الأدوات والميزات المألوفة التي تتوقّعها من Unity، وبما أنّ توافق Unity مع Android XR يستند إلى OpenXR، فإنّ العديد من الميزات الموضّحة في نظرة عامة حول OpenXR تتوافق أيضًا مع Unity.
اتّبِع هذا الدليل للتعرّف على ما يلي:
- التوافق مع Unity على Android XR
- أساسيات Unity XR
- تطوير تطبيقات Android XR ونشرها
- حِزم Unity لنظام التشغيل Android XR
- Unity OpenXR: حزمة Android XR
- Android XR Extensions for Unity
- الميزات واعتبارات التوافق
- الإدخال والتفاعل
توافق Unity مع Android XR
عند إنشاء تطبيقات Unity لنظام Android XR، يمكنك الاستفادة من أدوات وإمكانات الواقع المختلط في أحدث إصدارات Unity 6. ويشمل ذلك نماذج الواقع المختلط التي تستخدم XR Interaction Toolkit وAR Foundation وOpenXR Plugin لمساعدتك في البدء بسرعة. عند إنشاء تطبيقات باستخدام Unity لنظام Android XR، ننصحك باستخدام Universal Render Pipeline (URP) كمسار عرض واستخدام Vulkan كواجهة برمجة تطبيقات للرسومات. تتيح لك هذه الميزات الاستفادة من بعض ميزات الرسومات في Unity، والتي لا تتوافق إلا مع Vulkan. راجِع دليل إعداد المشروع للحصول على مزيد من المعلومات حول كيفية ضبط هذه الإعدادات.
أساسيات الواقع الممتد (XR) في Unity
إذا كنت مبتدئًا في Unity أو تطوير تجارب XR، يمكنك الرجوع إلى دليل XR من Unity للتعرّف على المفاهيم الأساسية لسير عمل XR. يحتوي دليل XR على معلومات حول:
- مكوّنات إضافية لموفّر XR، بما في ذلك Unity OpenXR: Android XR وAndroid XR Extensions for Unity
- حِزم دعم الواقع الممتد (XR) لإضافة ميزات إضافية على مستوى التطبيق
- دليل بنية الواقع الممتد يصف حزمة تكنولوجيا الواقع الممتد وأنظمة الواقع الممتد الفرعية في Unity
- إعداد مشروع الواقع الممتد
- إنشاء تطبيقات XR وتشغيلها
- إرشادات بشأن رسومات الواقع الممتد، بما في ذلك Universal Render Pipeline، والعرض المجسم، والعرض البؤري، ومناطق العرض المتعدد، وتوقيت إطارات الواقع الافتراضي
- إرشادات صوتية في تجارب الواقع الممتد، بما في ذلك إمكانية استخدام أدوات تحويل الصوت إلى صوت مكاني
تطوير تطبيقات Android ونشرها
توفّر Unity مستندات تفصيلية حول تطوير التطبيقات وإنشائها ونشرها على Android، وتغطّي مواضيع مثل أذونات Android في Unity وإعدادات الإصدار على Android وإنشاء تطبيقك على Android والنشر على Google Play.
حِزم Unity لنظام التشغيل Android XR
تتوفّر حزمتان تتيحان إنشاء تطبيقات Unity لنظام التشغيل Android XR. كلتا الحزمتَين عبارة عن مكوّنات إضافية لموفّر تقنيات الواقع الممتد، ويمكن تفعيلها من خلال حزمة إدارة المكوّنات الإضافية لتقنيات الواقع الممتد (XR Plug-in Management) في Unity. يضيف مدير المكوّن الإضافي XR إعدادات المشروع لإدارة وتقديم المساعدة في التحميل والتهيئة والإعدادات ودعم الإصدارات للمكوّنات الإضافية XR. للسماح لتطبيقك بتنفيذ ميزات OpenXR في وقت التشغيل، يجب تفعيل هذه الميزات في المشروع من خلال "مدير المكوّنات الإضافية".
تعرض هذه الصورة مثالاً على المكان الذي يمكنك فيه تفعيل مجموعات الميزات هذه من خلال محرّر Unity.
Unity OpenXR Android XR
حزمة Unity OpenXR Android XR هي إضافة XR Plug-in تتيح إمكانية استخدام Android XR في Unity. توفّر إضافة XR هذه معظم ميزات Android XR المتوافقة مع Unity، كما تتيح استخدام أجهزة Android XR في مشاريع AR Foundation. تم تصميم AR Foundation للمطوّرين الذين يريدون إنشاء تجارب واقع معزّز أو واقع مختلط. وهي توفّر واجهة لميزات الواقع المعزّز، ولكنّها لا تنفّذ أي ميزات بنفسها. توفّر حزمة Unity OpenXR Android XR عملية التنفيذ. لبدء استخدام هذه الحزمة، اطّلِع على دليل الحزمة الذي يتضمّن دليل البدء.
Android XR Extensions for Unity
تكمّل حزمة Android XR Extensions for Unity حزمة Unity OpenXR Android XR، وتتضمّن ميزات إضافية لمساعدتك في إنشاء تجارب غامرة. يمكن استخدامها بمفردها أو مع حزمة Unity OpenXR Android XR.
للبدء في استخدام هذه الحزمة، اتّبِع دليل إعداد المشروع أو دليل البدء السريع لاستيراد Android XR Extensions for Unity.
الميزات واعتبارات التوافق
يوضّح الجدول التالي الميزات المتوافقة مع حزمة Unity OpenXR: Android XR وحزمة Android XR Extensions for Unity، ويمكن استخدامه لتحديد الحزمة التي تتضمّن الميزات التي تحتاج إليها وأي اعتبارات متعلّقة بالتوافق.
الميزة |
Unity OpenXR: سلسلة ميزات Android XR |
سلسلة ميزات Android XR Extensions for Unity |
حالات الاستخدام والسلوك المتوقّع |
|---|---|---|---|
Android XR: جلسة الواقع المعزّز
|
Android XR (الإضافات): إدارة الجلسات
|
لاستخدام ميزات من أيّ من الحزمتَين، يجب تفعيل ميزة "جلسة الواقع المعزّز" للحزمة. يمكنك تفعيل مجموعتَي الميزات في الوقت نفسه، وستتعامل الميزات الفردية مع التعارضات وفقًا لذلك. |
|
لا ينطبق |
لا ينطبق |
يُستخدَم تتبُّع الجهاز لتتبُّع موضع الجهاز وتدويره في المساحة الفعلية. يتعامل GameObject الخاص بـ XR Origin تلقائيًا مع تتبُّع الجهاز وتحويل العناصر القابلة للتتبُّع إلى نظام الإحداثيات في Unity باستخدام مكوّن XROrigin وتسلسل GameObject مع كاميرا وTrackedPoseDriver. |
|
Android XR: كاميرا الواقع المعزّز |
لا ينطبق |
توفّر هذه الميزة إمكانية تقدير الإضاءة وعرض المحتوى على كامل الشاشة. |
|
Android XR: مستوى الواقع المعزّز |
Android XR (الإضافات): مستوى |
هاتان الميزتان متطابقتان، لذا استخدِم إحداهما. Android XR (الإضافات): تم تضمين Plane لكي يتمكّن المطوّرون من استخدام ميزات Android XR (الإضافات): تتبُّع العناصر ومرتكزات ثابتة بدون الحاجة إلى الاعتماد على حزمة Unity OpenXR Android XR. في المستقبل، ستتم إزالة Android XR (الإضافات): Plane لصالح Android XR: AR Anchor. |
|
لا ينطبق |
Android XR (الإضافات): تتبُّع العناصر |
توفّر هذه الميزة إمكانية رصد العناصر وتتبُّعها في البيئة المحيطة، ويتم استخدامها مع مكتبة عناصر مرجعية. |
|
Android XR: AR Face
|
Android XR: تتبُّع تعابير الوجه
|
تتوفّر ميزة "عيون الأفاتار" من خلال ميزة "الواقع المعزّز: وجه" في Android XR. الوصول إلى تعابير وجه المستخدم من خلال ميزة "تتبُّع الوجه" في Android XR يمكن استخدام هاتين الميزتَين معًا. |
|
Android XR: AR Raycast
|
لا ينطبق |
تتيح لك هذه الميزة إطلاق شعاع واحتساب نقطة التقاطع بين هذا الشعاع وعناصر التتبُّع المستوية أو عناصر التتبُّع المستندة إلى العمق التي يتم رصدها في البيئة المحيطة. |
|
Android XR: نقطة ارتكاز الواقع المعزّز |
Android XR (الإضافات): نقطة الارتكاز
|
تتضمّن كلتا الميزتين إمكانية استخدام نقاط الارتكاز المكانية ونقاط الارتكاز المستوية، لذا يمكنك استخدام إحدى الميزتين فقط. بالنسبة إلى نقاط الارتكاز الثابتة، استخدِم Android XR (الإضافات): نقطة الارتكاز (Android XR (Extensions): Anchor). في المستقبل، ستتم إزالة ميزة "نقطة الارتكاز" في Android XR (الإضافات)، وستتوفّر جميع ميزات "نقطة الارتكاز" في Android XR: AR Anchor. |
|
Android XR: حجب الواقع المعزّز
|
لا ينطبق |
يتيح الإطباق إخفاء محتوى الواقع المختلط أو حجب جزء منه خلف عناصر في البيئة المحيطة. |
|
مقاييس الأداء |
مقاييس أداء Android XR |
لا ينطبق |
استخدِم هذه الميزة للوصول إلى مقاييس الأداء لأجهزة Android XR. |
توافق طبقة التركيب (يجب توفُّر المكوّن الإضافي OpenXR وطبقة التركيب XR) |
Android XR: طبقة التركيب في وضع "الرؤية من خلال الجهاز"
|
استخدِم ميزة "دعم طبقة التركيب" في Unity لإنشاء طبقات تركيب أساسية (مثل المربّع والأسطوانة والإسقاط). Android XR: يمكن استخدام Passthrough Composition Layer لإنشاء طبقة عرض مباشر باستخدام شبكة مخصّصة، والقراءة من GameObject في Unity. |
|
التقديم البؤري (يجب تثبيت المكوّن الإضافي OpenXR)
|
Foveation (Legacy) |
تتيح هذه التقنية تسريع عملية العرض من خلال خفض درجة دقة المناطق في مجال الرؤية المحيطي للمستخدم. لا تتوفّر ميزة العرض البؤري في Unity إلا للتطبيقات التي تستخدم URP وVulkan. تتوافق ميزة "التركيز البؤري" (الإصدار القديم) في "إضافات Android XR لتطبيق Unity" أيضًا مع Built-in Render Pipeline وOpenGL ES. ننصحك باستخدام ميزة العرض البؤري في Unity عند الإمكان، ونشير إلى أنّه يُنصح باستخدام كلّ من URP وVulkan عند إنشاء تطبيقات Android XR. |
|
لا ينطبق |
Android XR: مساحة مرجعية غير محدودة |
تضبط هذه الميزة وضع مصدر التتبُّع XRInputSubsystem على Unbounded. يشير Unbounded إلى أنّ XRInputSubsystem يتتبّع جميع InputDevices بالنسبة إلى مرساة عالمية يمكن أن تتغيّر. |
|
لا ينطبق |
وضع الدمج مع البيئة |
تتيح لك هذه الميزة ضبط وضع دمج بيئة الواقع الممتد الذي يتحكّم في كيفية دمج الصور الافتراضية مع البيئة الواقعية عند تفعيل ميزة "المرور". |
الإدخال والتفاعل
يتوافق Android XR مع الإدخال الطبيعي المتعدد الوسائط.
بالإضافة إلى تتبُّع حركة اليد وتتبّع العين، يمكن استخدام الأجهزة الطرفية، مثل وحدات التحكّم 6DoF والماوس ولوحة المفاتيح الفعلية. ويعني ذلك أنّه من المتوقّع أن تتوافق تطبيقات Android XR مع التفاعل باستخدام اليد، ولا يمكن افتراض أنّ جميع الأجهزة ستتضمّن وحدات تحكّم.
ملفات التفاعل
تستخدم Unity ملف تعريف التفاعل لإدارة طريقة تواصل تطبيق XR مع أجهزة ومنصات XR المختلفة. تحدّد هذه الملفات المدخلات والمخرجات المتوقّعة لإعدادات الأجهزة المختلفة، ما يعزّز التوافق والأداء المتّسق على مجموعة من المنصات. من خلال تفعيل ملفات تعريف التفاعل، يمكنك المساعدة في ضمان عمل تطبيق الواقع الممتد بشكل صحيح مع الأجهزة المختلفة، والحفاظ على ربط متّسق بين الإدخالات، والوصول إلى ميزات محدّدة في الواقع الممتد. لضبط ملف تعريف تفاعلي، اتّبِع الخطوات التالية:
- افتح نافذة إعدادات المشروع (القائمة: تعديل > إعدادات المشروع).
- انقر على إدارة المكوّنات الإضافية لتقنيات الواقع الممتد (XR Plug-in Management) لتوسيع قسم المكوّنات الإضافية (إذا لزم الأمر).
- اختَر OpenXR في قائمة إضافات الواقع الممتد.
- في قسم ملفات تعريف التفاعل، انقر على الزر + لإضافة ملف تعريف.
- اختَر الملف الشخصي الذي تريد إضافته من القائمة.
التفاعل باليد
يتم توفير ميزة التفاعل باستخدام اليد (XR_EXT_hand_interaction) من خلال المكوّن الإضافي OpenXR، ويمكنك عرض تخطيط <HandInteraction>الجهاز في نظام الإدخال في Unity من خلال تفعيل ملف تعريف التفاعل باستخدام اليد. استخدِم ملف تعريف التفاعل هذا لإدخال البيانات باليد، وهو متوافق مع أوضاع الحركات الأربعة المحدّدة بواسطة OpenXR: "القرص" و"النقر" و"التصويب" و "المسك". إذا كنت بحاجة إلى وظائف إضافية للتفاعل باستخدام اليد أو تتبُّع حركة اليد، يُرجى الرجوع إلى XR Hands في هذه الصفحة.
التفاعل من خلال تتبُّع حركة العين
تتوفّر ميزة التفاعل من خلال تتبُّع نظرات العين (XR_EXT_eye_gaze_interaction) من خلال OpenXR Plugin، ويمكنك استخدام هذا التصميم لاسترداد بيانات وضع العين (الموضع والتدوير) التي تعرضها الإضافة. مزيد من المعلومات حول
التفاعل باستخدام تتبُّع حركة العين في دليل OpenXR Input
التفاعل مع وحدة التحكّم
يتوافق Android XR مع ملف تعريف وحدة التحكّم Oculus Touch لوحدات التحكّم ذات 6 درجات من الحرية. يوفّر OpenXR Plugin كلا الملفَين.
التفاعل باستخدام الماوس
يتم توفير ملف تعريف تفاعل الماوس في Android XR (XR_ANDROID_mouse_interaction)
من خلال Android XR Extensions for Unity. تعرض هذه الحزمة تخطيط جهاز <AndroidXRMouse> في نظام الإدخال في Unity.
التفاعل باستخدام وضعية اليد المفتوحة
توفّر إضافة OpenXR إمكانية استخدام تفاعل وضعية اليد (XR_EXT_palm_pose)، ما يتيح عرض تخطيط <PalmPose> ضمن نظام الإدخال في Unity.
لا يُقصد بوضعية اليد المفتوحة أن تكون بديلاً عن الإضافات أو الحِزم التي تتيح تتبُّع حركة اليد لحالات استخدام أكثر تعقيدًا، بل يمكن استخدامها لوضع محتوى مرئي خاص بالتطبيق، مثل صور الأفاتار. تتألف وضعية اليد المفتوحة من موضع اليد واتجاهها.
أيدي الواقع الممتد
تتيح لك حزمة XR Hands الوصول إلى بيانات تتبُّع اليد باستخدام
XR_EXT_hand_tracking و
XR_FB_hand_tracking_aim، كما توفّر برنامج تضمين لتحويل بيانات مفاصل اليد من تتبُّع اليد إلى أوضاع الإدخال. لاستخدام الميزات التي توفّرها حزمة XR Hands، فعِّل ميزتَي نظام تتبُّع اليد الفرعي وMeta Hand
Tracking Aim OpenXR.
يمكن أن تكون حزمة XR hands مفيدة إذا كنت بحاجة إلى بيانات أكثر تفصيلاً حول وضعية اليد أو مفاصل اليد أو إذا كنت بحاجة إلى العمل باستخدام إيماءات مخصّصة.
لمزيد من التفاصيل، يُرجى الاطّلاع على مستندات Unity حول إعداد ميزة "الأيدي في الواقع المختلط" في مشروعك.
مناطق الثقة في ميزة "تتبُّع الوجه"
تقدّم إضافة XR_ANDROID_face_tracking قيم ثقة لثلاث مناطق في الوجه: أعلى اليسار وأعلى اليمين وأسفل الوجه. تشير هذه القيم، التي تتراوح بين 0 (لا توجد ثقة) و1 (أعلى ثقة)، إلى دقة تتبّع تعابير الوجه لكل منطقة.
يمكنك استخدام قيم الثقة هذه لإيقاف أشكال المزج تدريجيًا أو تطبيق فلاتر مرئية (مثل التمويه) على منطقة الوجه المقابلة. بالنسبة إلى a، أوقِف أشكال المزج الأساسية في منطقة الوجه المقابلة.
يمثّل الجزء "أسفل الوجه" كل ما يقع تحت العينين، بما في ذلك الفم والذقن والخد والأنف. تشمل المنطقتان العلويتان العينين ومنطقة الحاجبين على الجانبين الأيمن والأيسر من الوجه.
يوضّح مقتطف الرمز التالي بلغة 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 Extensions for Unity.
اختيار طريقة لعرض اليدين
يتيح Android XR طريقتَين لعرض اليدَين: شبكة اليدَين وأداة عرض مسبقة الإنشاء.
شبكة اليد
تحتوي حزمة Android XR Unity على ميزة "شبكة اليد" التي تتيح الوصول إلى XR_ANDROID_hand_mesh extension. توفّر ميزة "شبكة اليد" شبكات لأيدي المستخدم. تحتوي شبكة اليد على رؤوس مثلثات تمثّل شكل اليد. تهدف هذه الميزة إلى توفير شبكة مخصّصة تمثّل الشكل الهندسي الحقيقي ليدَي المستخدم بغرض العرض.
XR Hands prefab
تحتوي حزمة XR Hands على نموذج يُسمى أداة عرض اليدين، ويتضمّن يدًا يمنى ويدًا يسرى مجهّزتَين بالكامل لعرض تمثيل مناسب لسياق اليدين.
إيماءة نظام التشغيل
يتضمّن Android XR إيماءة نظام التشغيل لفتح قائمة تتيح للمستخدمين الرجوع أو فتح مشغّل التطبيقات أو الحصول على نظرة عامة على التطبيقات التي تعمل. يمكن للمستخدم تفعيل قائمة النظام هذه باستخدام حركة القرص بالإبهام والسبابة في اليد المسيطرة.
عندما يتفاعل المستخدم مع قائمة التنقّل في النظام، لن يستجيب التطبيق إلا لأحداث تتبُّع حركة الرأس. يمكن لحزمة XR Hands رصد الحالات التي
ينفّذ فيها المستخدم إجراءات معيّنة، مثل التفاعل مع قائمة
التنقّل في النظام. يساعدك التحقّق من AimFlags وSystemGesture وDominantHand في معرفة وقت تنفيذ إجراء النظام هذا. لمزيد من المعلومات حول AimFlags، يُرجى الرجوع إلى مستندات Enum MetaAimFlags من Unity.
XR Interaction Toolkit
حزمة XR Interaction Toolkit هي نظام تفاعلي عالي المستوى يستند إلى المكوّنات، ويُستخدم لإنشاء تجارب الواقع الافتراضي والواقع المعزّز. وهي توفّر إطار عمل يتيح التفاعلات ثلاثية الأبعاد وتفاعلات واجهة المستخدم من أحداث الإدخال في Unity. يتيح هذا النظام تنفيذ مهام تفاعلية، مثل التجاوب الحسي والمرئي والتنقّل.
OpenXR™ وشعار OpenXR هما علامتان تجاريتان مملوكتان لشركة The Khronos Group Inc. ومسجّلتان كعلامة تجارية في الصين والاتحاد الأوروبي واليابان والمملكة المتحدة.