يقدّم هذا الدليل نظرة عامة على تطوير التطبيقات باستخدام 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 لـ 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. يمكنك مراجعة دليل إعداد المشروع لمزيد من المعلومات حول كيفية ضبط هذه الإعدادات.
أساسيات Unity XR
إذا كنت مبتدئًا في مجال تطوير Unity أو XR، يمكنك الرجوع إلى دليل XR من Unity لفهم المفاهيم الأساسية وسير العمل في XR. يحتوي دليل XR على معلومات حول:
- المكوّنات الإضافية لمزوّد XR، بما في ذلك Unity OpenXR: Android XR وAndroid XR Extensions for Unity
- حِزم دعم الواقع الممتد لإضافة ميزات إضافية على مستوى التطبيق
- دليل بنية الواقع الممتد الذي يصف حزمة تكنولوجيا Unity XR والأنظمة الفرعية للواقع الممتد
- إعداد مشروع XR
- إنشاء تطبيقات XR وتشغيلها
- إرشادات رسومات الواقع الممتد، بما في ذلك Universal Render Pipeline، والعرض المجسم، والعرض المرتكز على العين، ومناطق العرض المتعدد النوافذ، ووقت عرض لقطة الواقع الافتراضي
- إرشادات الصوت في الواقع الممتد، بما في ذلك إتاحة مؤثرات الصوت المكاني
تطوير تطبيقات Android ونشرها
توفّر Unity مستندات تفصيلية حول تطوير التطبيقات وإنشائها ونشرها على Android، وتتناول مواضيع تشمل أذونات Android في Unity وإعدادات إصدار Android وإنشاء تطبيقك لنظام التشغيل Android والنشر على Google Play.
حِزم Unity لنظام التشغيل Android XR
هناك حزمتان توفّران الدعم لإنشاء تطبيقات Unity لنظام التشغيل Android XR. كلتا الحزمتَين هما مكوّنان إضافيان لمقدّم خدمات الواقع الممتد، ويمكن تفعيلهما من خلال حزمة إدارة المكوّنات الإضافية لتقنيات الواقع الممتد في Unity. يضيف مدير المكوّنات الإضافية لتقنيات الواقع الممتد "إعدادات المشروع" (Project Settings) لإدارة وتقديم المساعدة في ما يتعلّق بالتحميل والإعداد والإعدادات ودعم الإصدارات للمكوّنات الإضافية لتقنيات الواقع الممتد. للسماح لتطبيقك بتنفيذ ميزات OpenXR في وقت التشغيل، يجب تفعيل هذه الميزات في المشروع من خلال مدير المكوّنات الإضافية.
تعرض هذه الصورة مثالاً على المكان الذي يمكنك من خلاله تفعيل مجموعات الميزات هذه من خلال محرِّر Unity.
Unity OpenXR Android XR
حزمة Unity OpenXR Android XR هي مكوّن إضافي للواقع الممتد يتيح إضافة توافق Android XR إلى Unity. يوفّر هذا المكوّن الإضافي للواقع الممتد معظم ميزات Android XR في Unity، ويتيح استخدام أجهزة Android XR في مشاريع AR Foundation. تم تصميم AR Foundation للمطوّرين الذين يريدون إنشاء تجارب واقع معزّز أو واقع مختلط. وتوفّر واجهة لميزات الواقع المعزّز، ولكنّها لا تنفّذ أي ميزات بنفسها. وتوفّر حزمة Unity OpenXR Android XR عملية التنفيذ. للبدء في استخدام هذه الحزمة، اطّلِع على دليل الحزمة الذي يحتوي على دليل البدء.
إضافات Android XR لمنصة 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 (الإضافات): إدارة الجلسات
|
لاستخدام ميزات من أيّ من الحزمتَين، يجب تفعيل ميزة "جلسة الواقع المعزّز" (AR Session) لتلك الحزمة. يمكنك تفعيل مجموعتَي الخصائص في الوقت نفسه، وستتعامل الميزات الفردية مع التعارضات وفقًا لذلك. |
|
لا ينطبق |
لا ينطبق |
يُستخدَم تتبُّع الجهاز لتتبُّع موضع الجهاز ودورانه في المساحة المادية. يتولّى GameObject في XR Origin تلقائيًا تتبُّع الأجهزة وتحويل العناصر القابلة للتتبُّع إلى نظام الإحداثيات في Unity باستخدام مكوّن XROrigin والتسلسل الهرمي لـ GameObject مع كاميرا وTrackedPoseDriver. |
|
Android XR: كاميرا الواقع المعزّز |
لا ينطبق |
تتيح هذه الميزة تقدير الإضاءة وعرض الواقع المحيط بملء الشاشة. |
|
Android XR: سطح الواقع المعزّز |
لا ينطبق |
تتيح هذه الميزة رصد الأسطح المستوية وتتبُّعها في البيئة المادية. |
|
لا ينطبق |
Android XR (الإضافات): تتبُّع العناصر |
تتيح هذه الميزة رصد العناصر وتتبُّعها في البيئة المادية، وتُستخدَم مع مكتبة العناصر المرجعية. |
|
Android XR: وجه الواقع المعزّز
|
Android XR: تتبُّع تعابير الوجه
|
تتوفّر ميزة عيون الأفاتار من خلال ميزة "الواقع المعزّز للوجه" في Android XR. الوصول إلى تعابير وجه المستخدم من خلال ميزة "تتبُّع تعابير الوجه" في Android XR ويمكن استخدام هاتَين الميزتَين معًا. |
|
Android XR: AR Raycast
|
لا ينطبق |
تتيح لك هذه الميزة إرسال شعاع وحساب التقاطع بين هذا الشعاع والعناصر القابلة للتتبّع على مستوى السطح أو العناصر القابلة للتتبّع على مستوى العمق التي يتم رصدها في البيئة المادية. |
|
Android XR: نقطة ارتساء الواقع المعزّز |
لا ينطبق |
تتيح ميزة AR Anchor استخدام نقاط الارتكاز المكانية والمستوية والدائمة من خلال AR Foundation. |
|
Android XR: حجب الواقع المعزّز
|
لا ينطبق |
تتيح ميزة "الحجب" لمحتوى الواقع المختلط في تطبيقك أن يظهر مخفيًا أو محجوبًا جزئيًا خلف عناصر في البيئة المادية. |
|
مقاييس الأداء |
مقاييس أداء Android XR |
لا ينطبق |
استخدِم هذه الميزة للوصول إلى مقاييس أداء أجهزة Android XR. |
إتاحة طبقة التركيب (يتطلب ذلك المكوّن الإضافي OpenXR وطبقة تركيب XR) |
Android XR: طبقة تركيب العرض المباشر
|
استخدِم ميزة Composition Layer Support في Unity لإنشاء طبقات تركيب أساسية (مثل الرباعية والأسطوانية والإسقاطية). Android XR: يمكن استخدام Passthrough Composition Layer لإنشاء طبقة عرض محيطي باستخدام شبكة مخصّصة، وقراءة البيانات من GameObject في Unity. |
|
تقنية Foveated Rendering (يجب استخدام المكوّن الإضافي OpenXR)
|
Foveation (قديم) |
تتيح ميزة "العرض المرتكز على العين" تسريع عملية العرض من خلال خفض دقة المناطق في الرؤية المحيطية للمستخدم. لا تتوفّر ميزة العرض المرتكز على العين في Unity إلا للتطبيقات التي تستخدم URP وVulkan. تتوافق ميزة "التركيز على مركز الرؤية" (الإصدار القديم) في إضافات Android XR في Unity أيضًا مع Built-in Render Pipeline وOpenGL ES. ننصح باستخدام ميزة العرض المرتكز على العين في Unity إن أمكن، ونشير إلى أنّه يُنصح باستخدام كل من URP وVulkan عند إنشاء تطبيقات لنظام Android XR. |
|
لا ينطبق |
تضبط هذه الميزة وضع نقطة بداية التتبُّع في XRInputSubsystem على Unbounded. تشير القيمة Unbounded إلى أنّ XRInputSubsystem يتتبّع جميع أجهزة InputDevices في ما يتعلّق بنقطة ارتساء في العالم، والتي يمكن أن تتغيّر. |
||
لا ينطبق |
وضع دمج البيئة |
تتيح لك هذه الميزة ضبط وضع دمج بيئة الواقع الممتد، والذي يتحكّم في كيفية دمج الصور الافتراضية مع بيئة العالم الحقيقي عند تفعيل ميزة "الرؤية المحيطية". |
|
لا ينطبق |
يتيح هذا الإذن لـ |
||
لا ينطبق |
توفّر استراتيجيات ضبط مصادقة الجلسات (مفتاح واجهة برمجة التطبيقات، وبدون مفتاح، ورمز المصادقة المميّز) للخدمات المستندة إلى السحابة الإلكترونية. |
||
لا ينطبق |
توسّع هذه الميزة إمكانات ARFace في Unity من خلال توفير أوضاع تتبُّع متعددة الوسائط وقابلة للضبط ( |
||
لا ينطبق |
تسمح هذه السياسة بالاستعلام عن حالة البطارية أثناء التشغيل ومستوى شحن وحدات التحكّم المتصلة ومسارات الإدخال باستخدام |
||
Android XR: كاميرا الواقع المعزّز |
لا ينطبق |
تتيح هذه الميزة الاستعلام عن مستويات تعتيم ميزة "الرؤية من خلال النظارة" في العالم الحقيقي وضبطها باستخدام ARCameraFeature من Unity. |
|
لا ينطبق |
تعداد خصائص الإضافات في وقت التشغيل وإمكانات الجهاز باستخدام |
||
لا ينطبق |
يسمح هذا الإذن بالاستعلام عن حالات ما قبل تشغيل بيئة التشغيل (بما في ذلك وضع مزج البيئة، ودرجة تعتيم العرض المباشر، وأساليب الإدخال النشطة) باستخدام |
||
Android XR: مربّع الإحاطة في الواقع المعزّز |
توفّر هذه الميزة إمكانية رصد المربّعات المحيطة للعناصر الثلاثية الأبعاد في البيئة المادية باستخدام إطار عمل "الكيانات المكانية" في OpenXR ( |
||
لا ينطبق |
توسّع إمكانات نقاط الارتكاز باستخدام |
||
لا ينطبق |
يسمح هذا الإذن بعرض محتوى التطبيق داخل حاوية حجمية ثلاثية الأبعاد يديرها النظام في "وضع المساحة الكاملة"، مع واجهات برمجة التطبيقات وأحداث الاستدعاء على |
الإدخال والتفاعل
يتيح Android XR الإدخال الطبيعي المتعدد الوسائط.
بالإضافة إلى تتبُّع اليد والعين، تتوافق أيضًا الأجهزة الملحقة، مثل وحدات التحكّم بست درجات حرية (6DoF) والماوس ولوحة المفاتيح المادية. وهذا يعني أنّ تطبيقات Android XR من المتوقّع أن تتيح التفاعل اليدوي، ولا يمكن افتراض أنّ جميع الأجهزة ستتضمّن وحدات تحكّم.
الملفات الشخصية للتفاعل
تستخدم Unity ملف التفاعل الشخصي لإدارة كيفية تواصل تطبيق XR مع مختلف أجهزة ومنصات XR. تحدّد هذه الملفات الشخصية المدخلات والمخرجات المتوقّعة لإعدادات الأجهزة المختلفة، ما يعزّز التوافق والوظائف المتّسقة على مستوى مجموعة من المنصات. من خلال تفعيل ملفات تعريف التفاعل، يمكنك المساعدة في ضمان عمل تطبيق الواقع الممتد بشكل صحيح مع الأجهزة المختلفة، والحفاظ على اتساق ربط الإدخالات، والوصول إلى ميزات الواقع الممتد المحدّدة. لضبط ملف شخصي للتفاعل:
- افتح نافذة إعدادات المشروع (Project Settings) (القائمة: تعديل (Edit) > إعدادات المشروع (Project Settings)).
- انقر على إدارة المكوّنات الإضافية لتقنيات الواقع الممتد (XR Plug-in Management) لتوسيع قسم المكوّنات الإضافية (إذا لزم الأمر).
- اختَر OpenXR من قائمة مكوّنات XR الإضافية.
- في قسم ملفات التفاعل الشخصية، انقر على الزر + لإضافة ملف شخصي.
- اختَر الملف الشخصي الذي تريد إضافته من القائمة.
التفاعل باليد
يتم توفير ميزة التفاعل باليد (XR_EXT_hand_interaction) من خلال المكوّن الإضافي OpenXR، ويمكنك عرض تنسيق جهاز <HandInteraction> في نظام الإدخال في Unity من خلال تفعيل الملف الشخصي للتفاعل باليد. استخدِم ملف التفاعل هذا لإدخال البيانات يدويًا من خلال أوضاع الإجراءات الأربعة التي يحدّدها OpenXR: "التصغير والتكبير بإصبعين" و"النقر" و"التصويب" و "القبض". إذا كنت بحاجة إلى وظائف إضافية للتفاعل اليدوي أو تتبُّع اليد، يُرجى الرجوع إلى XR Hands في هذه الصفحة.
التفاعل من خلال تتبُّع النظر
يتم توفير ميزة التفاعل من خلال تتبُّع حركة العين (XR_EXT_eye_gaze_interaction) من خلال المكوّن الإضافي OpenXR، ويمكنك استخدام هذا التنسيق لاسترداد بيانات وضعية العين (الموضع والدوران) التي تعرضها الإضافة. مزيد من المعلومات حول
التفاعل عبر تتبُّع حركة العين في دليل الإدخال في OpenXR
التفاعل مع وحدة التحكّم
يتيح Android XR استخدام ملف تعريف وحدة التحكّم Oculus Touch لوحدات التحكّم التي تتضمّن 6 درجات حرية. يتم توفير كلا الملفَين الشخصيَين من خلال المكوّن الإضافي OpenXR.
التفاعل باستخدام الماوس
يتم توفير ملف تعريف التفاعل مع الماوس في Android XR (XR_ANDROID_mouse_interaction) من خلال إضافات Android XR في Unity. ويكشف عن
تخطيط جهاز <AndroidXRMouse> في نظام الإدخال في Unity.
التفاعل مع وضعية راحة اليد
يوفّر المكوّن الإضافي OpenXR إمكانية استخدام التفاعل مع وضعية راحة اليد (XR_EXT_palm_pose)، والذي يعرض تنسيق <PalmPose> ضمن نظام الإدخال في Unity.
لا يُقصد من وضعية راحة اليد أن تكون بديلاً للإضافات أو الحزم التي
تتتبّع اليد لحالات الاستخدام الأكثر تعقيدًا، بل يمكن استخدامها
لوضع محتوى مرئي خاص بالتطبيق، مثل العناصر المرئية للأفاتار. تتكوّن وضعية راحة اليد
من موضع راحة اليد واتجاهها.
XR Hands
تتيح لك حزمة 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 في مشروعك.
مناطق الثقة في تتبُّع تعابير الوجه
توفّر إضافة XR_ANDROID_face_tracking قيم ثقة لثلاث مناطق في الوجه: أعلى اليسار وأعلى اليمين وأسفل الوجه. وتشير هذه القيم، التي تتراوح من 0 (لا مستوى الموثوقية) إلى 1 (أعلى مستوى الموثوقية)، إلى دقة تتبّع تعابير الوجه لكل منطقة.
يمكنك استخدام قيم الثقة هذه لإيقاف أشكال المزج تدريجيًا أو تطبيق فلاتر مرئية (مثل التمويه) على منطقة الوجه المقابلة. بالنسبة إلى الأساسية، يمكنك إيقاف أشكال المزج في منطقة الوجه المقابلة.
تمثّل منطقة "الجزء السفلي من الوجه" كل ما تحت العينين، بما في ذلك الفم والذقن والخد والأنف. وتشمل المنطقتان العلويتان العينين ومنطقة الحاجبين على الجانبين الأيمن والأيسر من الوجه.
يوضّح مقتطف الرمز التالي بلغة 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 على ميزة 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 Interaction Toolkit
حزمة XR Interaction Toolkit هي نظام تفاعل عالي المستوى يستند إلى المكوّنات لإنشاء تجارب الواقع الافتراضي والواقع المعزّز. وتوفّر إطار عمل يتيح التفاعلات الثلاثية الأبعاد وتفاعلات واجهة المستخدم من أحداث الإدخال في Unity. وهو يدعم مهام التفاعل بما في ذلك التجاوب الحسّي والتجاوب المرئي والحركة.
OpenXR™ وشعار OpenXR هما علامتان تجاريتان تملكهما شركة The Khronos Group Inc. ومسجَّلتان كعلامة تجارية في الصين والاتحاد الأوروبي واليابان والمملكة المتحدة.