دليل مطوّري مواضع الإعلانات الفورية لمؤسسة AR Foundation

تعرَّف على كيفية استخدام واجهة برمجة التطبيقات Instant Placement API أو عمليات بث الأشعة المستمرة في تطبيقاتك.

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

احرص على فهم المفاهيم الأساسية للواقع المعزّز وكيفية ضبط جلسة ARCore قبل المتابعة.

أسماء المفاهيم

قد تختلف أسماء بعض المفاهيم والأساليب بين AR Foundation و حزمة تطوير البرامج (SDK) لـ ARCore في Unity. وقد تم سردها في الجدول أدناه للرجوع إليها بسهولة.

AR Foundation حزمة تطوير البرامج (SDK) لـ ARCore في Unity
عمليات بث أشعة مستمرة موضع إعلان فوري
ARRaycastManager.AddRaycast(Vector2, float) Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
ARRaycast TrackableHit
(لا يتوفّر ما يعادله) InstantPlacementPoint
ARRaycast.trackingState InstantPlacementPointTrackingMethod

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

يفترض هذا الدليل أنّك سبق لك تثبيت Unity وضبطه. إذا لم يكن الأمر كذلك، اطّلِع على البدء باستخدام إضافات ARCore لإطار عمل AR Foundation لخطوات التثبيت والإعداد.

ضبط جلسة جديدة باستخدام ARRaycastManager

تتوفّر ميزة "الموضع الفوري" (إرسال أشعة أشعة دائمة) بشكل فوري مع حزمة الواقع المعزّز. اتبع هذه الخطوات لإعداد المشهد.

AR Foundation 4.x

  1. إضافة عناصر اللعبة المحدّدة مسبقًا AR Session Origin وAR Session

  2. أضِف المكوِّن AR Raycast Manager إلى كائن اللعبة AR Session Origin.

عندما لا يكون Raycast Prefab فارغًا، ARRaycastManager ستُنشئ النموذج المُعدّ مسبقًا وستُزامن تلقائيًا وضعه مع وضع ARRaycast.

AR Foundation 5.x

  1. أضِف عناصر اللعبة المحدّدة مسبقًا XR Origin و AR Session.

  2. أضِف المكوّن AR Raycast Manager إلى عنصر اللعبة XR Origin.

عندما لا يكون Raycast Prefab فارغًا، ARRaycastManager ستُنشئ النموذج المُعدّ مسبقًا وستُزامن تلقائيًا وضعه مع وضع ARRaycast.

وضع عنصر

في جلسة ARCore جديدة، أجرِ اختبارًا للعناصر التي تم رصدها باستخدام ARRaycastManager.AddRaycast(Vector2, float).

public ARRaycastManager RaycastManager; // set from the Editor Inspector.

void Update()
{
    Touch touch;
    if (Input.touchCount < 1 || (touch = Input.GetTouch(0)).phase != TouchPhase.Began)
    {
        return;
    }

    if (EventSystem.current.IsPointerOverGameObject(touch.fingerId))
    {
        return;
    }

    ARRaycast raycast = RaycastManager.AddRaycast(touch.position, _estimateDistance);
    if (raycast != null)
    {
        // You can instantiate a 3D object here if you haven’t set Raycast Prefab in the scene.
        
    }
}

مراقبة حالة تتبُّع ARRaycast

إذا كان لدى ARCore وضع ثلاثي الأبعاد دقيق، سيظهر ARRaycast.trackingState بدلاً من Tracking. بخلاف ذلك، سيبدأ برمز Limited وينتقل إلى رمز Tracking بعد أن تحصل ARCore على وضع ثلاثي الأبعاد دقيق. بعد أن تصبح حالة التتبّع Tracking، لن تعود إلى Limited.