التطوير باستخدام Unity لنظام التشغيل Android XR

أجهزة XR المشمولة
تساعدك هذه الإرشادات في إنشاء تجارب لهذه الأنواع من أجهزة XR.
سماعات الرأس بنظام الواقع الممتد
نظارات سلكية بنظام الواقع الممتد

يقدّم هذا الدليل نظرة عامة على عملية التطوير باستخدام 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. راجِع دليل إعداد المشروع للحصول على مزيد من المعلومات حول كيفية ضبط هذه الإعدادات.

أساسيات الواقع الممتد في Unity

إذا كنت مبتدئًا في Unity أو في تطوير تجارب الواقع الممتد، يمكنك الرجوع إلى دليل الواقع الممتد في Unity للتعرّف على المفاهيم الأساسية وسير العمل في الواقع الممتد. يحتوي دليل XR على معلومات حول:

تطوير تطبيقات Android ونشرها

توفّر Unity مستندات تفصيلية حول تطوير التطبيقات وإنشائها ونشرها على Android، وتغطّي مواضيع مثل أذونات Android في Unity وإعدادات الإصدار على Android وإنشاء تطبيقك على Android والنشر على Google Play.

حِزم Unity لنظام التشغيل Android XR

تتوفّر حزمتان تتيحان إنشاء تطبيقات Unity لأجهزة Android XR. كلتا الحزمتَين عبارة عن مكوّنات إضافية لموفّر XR، ويمكن تفعيلها من خلال حزمة إدارة المكوّنات الإضافية لتقنيات الواقع الممتد (XR Plug-in Management) في Unity. تضيف أداة إدارة المكوّنات الإضافية الخاصة بتجربة الواقع الممتد إعدادات المشروع لإدارة المكوّنات الإضافية الخاصة بتجربة الواقع الممتد وتقديم المساعدة في تحميلها وتهيئتها وإعداداتها ودعم الإنشاء لها. للسماح لتطبيقك بتنفيذ ميزات OpenXR في وقت التشغيل، يجب تفعيل هذه الميزات في المشروع من خلال "مدير المكوّنات الإضافية".

تعرض هذه الصورة مثالاً على المكان الذي يمكنك فيه تفعيل مجموعات الميزات هذه من خلال محرّر Unity.

الشكل 1. مثال على شاشة "إدارة المكوّنات الإضافية لتقنيات الواقع الممتد (XR) في Unity"

‫Unity OpenXR Android XR

حزمة Unity OpenXR Android XR هي مكوّن إضافي لتقنيات الواقع الممتد (XR Plug-in) يتيح إضافة توافق Android XR إلى Unity. يوفّر هذا المكوّن الإضافي للواقع الممتد معظم ميزات 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: جلسة الواقع المعزّز

  • تشمل إعدادات الميزة "تحسين عمليات تجاهل المخزن المؤقت" (Vulkan)

‫Android XR (الإضافات): إدارة الجلسات

  • تشمل إعدادات الميزات "جمع العيّنات الجزئية" (Vulkan) وURP SpaceWarp (Vulkan)

لاستخدام ميزات من أيّ من الحزمتَين، يجب تفعيل ميزة "جلسة الواقع المعزّز" للحزمة. يمكنك تفعيل مجموعتَي الميزات في الوقت نفسه، وستتعامل الميزات الفردية مع التعارضات وفقًا لذلك.

تتبُّع الجهاز

لا ينطبق

لا ينطبق

يتم استخدام ميزة تتبُّع الجهاز لتتبُّع موضع الجهاز وتدويره في المساحة الفعلية. يتعامل 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

  • ‫XR_ANDROID_eye_tracking فقط
  • لا تتوفّر إمكانية تتبُّع تعابير الوجه

‫Android XR: تتبُّع تعابير الوجه

  • XR_ANDROID_face_tracking

تتوفّر ميزة "عيون الأفاتار" من خلال ميزة "وجه الواقع المعزّز" في Android XR. الوصول إلى تعابير وجه المستخدم من خلال ميزة "تتبُّع الوجه" في Android XR يمكن استخدام هاتين الميزتين معًا.

عمليات إرسال الأشعة

‫Android XR: AR Raycast

  • مثبِّت على سطح مستوٍ
  • Depth Anchor

لا ينطبق

تتيح لك هذه الميزة إطلاق شعاع ضوئي واحتساب نقطة التقاطع بين هذا الشعاع وعناصر التتبُّع المستندة إلى المستوى أو عناصر التتبُّع المستندة إلى العمق التي يتم رصدها في البيئة المحيطة.

الروابط

‫Android XR: نقطة ارتساء الواقع المعزّز

‫Android XR (الإضافات): نقطة الارتكاز

  • تتضمّن إعدادات الميزة الثبات.

تتضمّن كلتا الميزتين إمكانية استخدام نقاط الارتكاز المكانية ونقاط الارتكاز المستوية، لذا يمكنك استخدام إحدى الميزتين فقط. بالنسبة إلى نقاط الارتكاز الثابتة، استخدِم Android XR (الإضافات): نقطة الارتكاز. في المستقبل، ستتم إزالة ميزة "نقطة الارتكاز" في Android XR (الإضافات)، وستتوفّر جميع ميزات "نقطة الارتكاز" في Android XR: AR Anchor.

الاحتجاب

‫Android XR: حجب الواقع المعزّز

  • عمق البيئة

لا ينطبق

تتيح ميزة "الحجب" إخفاء محتوى الواقع المختلط في تطبيقك أو حجبه جزئيًا خلف عناصر في البيئة المحيطة.

مقاييس الأداء

مقاييس أداء Android XR

لا ينطبق

استخدِم هذه الميزة للوصول إلى مقاييس الأداء لأجهزة Android XR.

طبقات المقطوعة الموسيقية

توافق طبقة التركيب (يجب توفُّر المكوّن الإضافي OpenXR وطبقة التركيب XR)

‫Android XR: طبقة التركيب في وضع "الواقع المختلط"

  • XR_ANDROID_composition_layer_passthrough_mesh

استخدِم ميزة "دعم طبقة التركيب" في Unity لإنشاء طبقات تركيب أساسية (مثل المربّع والأسطوانة والإسقاط). ‫Android XR: يمكن استخدام طبقة التركيب Passthrough لإنشاء طبقة passthrough باستخدام شبكة مخصّصة، والقراءة من GameObject في Unity.

العرض البؤري

التقديم البؤري (يجب تثبيت المكوّن الإضافي OpenXR)

  • يتوافق مع العرض البؤري المستند إلى تتبُّع العين: يتم توسيط المنطقة ذات الدقة الأعلى في المكان الذي ينظر إليه المستخدم، ما يجعلها أقل وضوحًا بالنسبة إليه

التركيز على نقطة النظر (الإصدار القديم)

تتيح هذه التقنية تسريع عملية العرض من خلال خفض درجة دقة المناطق في مجال الرؤية المحيطي للمستخدم. لا تتوفّر ميزة العرض البؤري في Unity إلا للتطبيقات التي تستخدم URP وVulkan. تتوافق ميزة "التركيز البؤري" (الإصدار القديم) في "إضافات Android XR لتطبيق Unity" أيضًا مع Built-in Render Pipeline وOpenGL ES. ننصحك باستخدام ميزة العرض البؤري في Unity عند الإمكان، ونشير إلى أنّه يُنصح باستخدام كلّ من URP وVulkan عند إنشاء تطبيقات Android XR.

Unbounded Reference Space

لا ينطبق

Android XR: مساحة مرجعية غير محدودة

تضبط هذه الميزة وضع مصدر التتبُّع XRInputSubsystem على Unbounded. يشير Unbounded إلى أنّ XRInputSubsystem يتتبّع جميع InputDevices بالنسبة إلى مرساة عالمية يمكن أن تتغيّر.

وضع مزج البيئة

لا ينطبق

وضع الدمج مع البيئة المحيطة

تتيح لك هذه الميزة ضبط وضع دمج بيئة الواقع الممتد، الذي يتحكّم في كيفية دمج الصور الافتراضية مع البيئة الحقيقية عند تفعيل ميزة "المرور".

البيانات الجغرافية المكانية (VPS)

لا ينطبق

‫Android XR: Geospatial

يسمح هذا الإذن لتطبيق XRGeospatialManager بالوصول إلى إمكانات نظام تحديد المواقع المرئية (VPS)، والتحقّق من توفّر الموقع الجغرافي، وحساب الوضعيات الجغرافية المكانية.

Google Cloud Auth

لا ينطبق

‫Android XR: Google Cloud

توفّر هذه السمة استراتيجيات إعداد مصادقة الجلسة (مفتاح واجهة برمجة التطبيقات وبدون مفتاح ورمز المصادقة المميز) للخدمات المستندة إلى السحابة الإلكترونية.

الوجه المتعدد الأنماط

لا ينطبق

Android XR (الإضافات): الوجه المتعدد الوسائط

توسيع نطاق Unity ARFace ليشمل طرقًا قابلة للإعداد ومتعددة الوسائط لتتبُّع الوجه (XRFaceTrackerMode)

عرض حالة البطارية

لا ينطبق

عرض حالة البطارية

تتيح هذه السمة الاستعلام عن حالة البطارية ومستوى الشحن لوحدات التحكّم المتصلة ومسارات الإدخال في وقت التشغيل باستخدام XRBatteryStateDisplayFeature.

Global Passthrough Dimming

‫Android XR: كاميرا الواقع المعزّز

لا ينطبق

تتيح إمكانية طلب مستويات التعتيم وتحديدها في وضع "المرور" في العالم الحقيقي باستخدام ARCameraFeature من Unity.

تعداد خصائص النظام

لا ينطبق

‫Android XR: خصائص النظام

تعداد خصائص الإضافة في وقت التشغيل وإمكانات الجهاز باستخدام XR_ANDROID_enumerate_system_extension_properties

الإعدادات المقترَحة

لا ينطبق

‫Android XR: الإعدادات المُقترَحة

تتيح الاستعلام عن حالات التشغيل المسبق لبيئة وقت التشغيل (بما في ذلك وضع مزج البيئة وشفافية العرض المباشر وطرق الإدخال النشطة) باستخدام XRRecommendedSettingsFeature.TryGetRecommendedSettings.

الإدخال والتفاعل

يتوافق Android XR مع الإدخال الطبيعي المتعدد الوسائط.

بالإضافة إلى تتبُّع حركة اليد وتتبّع العين، يمكن استخدام الأجهزة الطرفية، مثل وحدات التحكّم 6DoF والماوس ولوحة المفاتيح الفعلية. وهذا يعني أنّه من المتوقّع أن تتيح تطبيقات Android XR التفاعل باستخدام اليد، ولا يمكن افتراض أنّ جميع الأجهزة ستتضمّن وحدات تحكّم.

ملفات التفاعل

تستخدم Unity ملف تعريف التفاعل لإدارة طريقة تواصل تطبيق XR مع أجهزة ومنصات XR المختلفة. تحدّد هذه الملفات المدخلات والمخرجات المتوقّعة لإعدادات الأجهزة المختلفة، ما يعزّز التوافق والوظائف المتّسقة على مجموعة من المنصات. من خلال تفعيل ملفات تعريف التفاعل، يمكنك المساعدة في ضمان عمل تطبيق الواقع الممتد بشكل صحيح مع الأجهزة المختلفة، والحفاظ على ربط متّسق بين الإدخال والإخراج، والوصول إلى ميزات محدّدة في الواقع الممتد. لضبط ملف تعريف تفاعلي، اتّبِع الخطوات التالية:

  1. افتح نافذة إعدادات المشروع (القائمة: تعديل > إعدادات المشروع).
  2. انقر على إدارة المكوّنات الإضافية لتقنيات الواقع الممتد (XR Plug-in Management) لتوسيع قسم المكوّنات الإضافية (إذا لزم الأمر).
  3. اختَر OpenXR في قائمة إضافات الواقع الممتد.
  4. في قسم ملفات تعريف التفاعل، انقر على الزر + لإضافة ملف تعريف.
  5. اختَر الملف الشخصي الذي تريد إضافته من القائمة.

التفاعل باليد

يتم توفير ميزة التفاعل باستخدام اليد (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 (أعلى ثقة)، إلى دقة تتبُّع الوجه لكل منطقة.

يمكنك استخدام قيم الثقة هذه لإيقاف أشكال المزج تدريجيًا أو تطبيق فلاتر مرئية (مثل التمويه) على منطقة الوجه المقابلة. لإيقاف أشكال المزج الأساسية في منطقة الوجه المقابلة.

يمثّل الجزء "السفلي من الوجه" كل ما يقع تحت العينين، بما في ذلك الفم والذقن والخد والأنف. تشمل المنطقتان العلويتان العينين ومنطقة الحاجبين على الجانبين الأيمن والأيسر من الوجه.

يوضّح مقتطف الرمز التالي بلغة 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. ‎ ومسجّلتان كعلامة تجارية في الصين والاتحاد الأوروبي واليابان والمملكة المتحدة.