فهم بيئة المستخدم على مؤسسة الواقع المعزّز في Unity

تعرَّف على كيفية استخدام واجهة برمجة التطبيقات Scene Semantics API في تطبيقاتك.

تتيح واجهة برمجة التطبيقات Scene Semantics API للمطوّرين فهم المشهد المحيط بالمستخدم من خلال توفير معلومات دلالية في الوقت الفعلي تستند إلى نماذج تعلُّم الآلة. عند تقديم صورة لمشهد خارجي، تعرض واجهة برمجة التطبيقات تصنيفًا لكل بكسل ضمن مجموعة من الفئات الدلالية المفيدة، مثل السماء والمبنى والشجرة والطريق والرصيف والمركبة والشخص وغير ذلك. بالإضافة إلى تصنيفات البكسل، تقدّم واجهة برمجة التطبيقات Scene Semantics API أيضًا قيم الثقة لكل تصنيف بكسل وطريقة سهلة الاستخدام لاستعلام مدى انتشار تصنيف معيّن في مشهد خارجي.

من اليمين إلى اليسار، أمثلة على صورة إدخال والصورة الدلالية لتصنيفات البكسل وصورة الثقة المقابلة:

مثال لصورة الإدخال والصورة الدلالية وصورة ثقة الدلالي

المتطلبات الأساسية

تأكَّد من فهم مفاهيم الواقع المعزّز الأساسية وكيفية ضبط جلسة ARCore قبل المتابعة.

تفعيل ميزة "دلالات المشهد"

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

لتوفير الموارد، تكون ميزة "دلالات المشهد" غير مفعّلة تلقائيًا على ARCore. فعِّل الوضع الدلالي ليتمكّن تطبيقك من استخدام واجهة برمجة التطبيقات Scene Semantics API.

في ARCoreExtensionsConfig، اضبط وضع الدلالات على "مفعَّل".

تم ضبط وضع الدلالات على "مفعَّل".

في حال استخدام نظام التشغيل iOS، يجب أيضًا تفعيل ميزة "الدلالات" في إعدادات المشروع:

  1. انتقِل إلى تعديل > إعدادات المشروع > إدارة مكوّنات إضافية لواقع موسّع (XR) > إضافات ARCore.
  2. ضمن الميزات الاختيارية، اختَر الدلالات على iOS.

ميزة "الدلالات" مفعَّلة في نظام التشغيل iOS ضمن الميزات الاختيارية

الحصول على الصورة الدلالية

بعد تفعيل ميزة "دلالات المشهد"، يمكن استرداد الصورة الدلالية. الصورة الدلالية هي صورة TextureFormat.R8، حيث يتوافق كل بكسل مع تصنيف دلالي يحدّده SemanticLabel.

استخدِم ArSemanticManager.TryGetSemanticTexture() للحصول على الصورة الدلالية:

if (semanticManager.TryGetSemanticTexture(out Texture2D semanticImage))
{
    using (semanticImage)
    {
        // Use the semantic image here.
    }
}

من المفترض أن تتوفّر الصور الدلالية بعد مرور إطار واحد إلى 3 إطارات تقريبًا من بدء الجلسة، وذلك حسب الجهاز.

الحصول على صورة الثقة

بالإضافة إلى الصورة الدلالية التي تقدّم تصنيفًا لكل بكسل، تقدّم واجهة برمجة التطبيقات أيضًا صورة ثقة لقيم ثقة وحدات البكسل المقابلة. صورة الثقة هي صورة TextureFormat.Alpha8، حيث يقابل كل بكسل قيمة في النطاق [0, 255]، ما يتوافق مع الاحتمالية المرتبطة بالعلامة الدلالية لكل بكسل.

استخدِم ArSemanticManager.TryGetSemanticConfidenceTexture() للحصول على صورة الثقة الدلالية:

if (semanticManager.TryGetSemanticConfidenceTexture(out Texture2D semanticConfidenceImage))
{
    using (semanticConfidenceImage)
    {
        // Use the semantic confidence image here.
    }
}

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

طلب نسبة البكسلات لتصنيف دلالي

يمكنك أيضًا الاستعلام عن نسبة البكسلات في اللقطة الحالية التي تنتمي إلى فئة معيّنة، مثل السماء. وهذا الطلب أكثر فعالية من عرض الصورة الدلالية وإجراء بحث بكسل تلو الآخر عن تصنيف معيّن. الجزء المعروض هو قيمة عائمة في النطاق [0.0, 1.0].

استخدِم ArSemanticManager.GetSemanticLabelFraction() للحصول على الجزء الخاص بتصنيف معيّن:

var fraction = semanticManager.GetSemanticLabelFraction(SemanticLabel.SKY);