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

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

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

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

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

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

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

تفعيل دلالات المشهد

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

لحفظ الموارد، يتم إيقاف Scene Semantics تلقائيًا على ARCore. يمكنك تفعيل الوضع الدلالي لكي يستخدم تطبيقك واجهة برمجة تطبيقات Scene Semantics.

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

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

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

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

تم تفعيل دلالات على iOS في الميزات الاختيارية.

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

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

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

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

ينبغي أن تكون الصور الدلالية للإخراج متاحة بعد حوالي 1 إلى 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);