إجراء تسجيلات بصرية في تطبيق Unity (AR Foundation)

نفِّذ raycast أو اختبار نتائج لتحديد الموضع الصحيح لعنصر ثلاثي الأبعاد في المشهد. ويضمن الموضع الصحيح عرض محتوى الواقع المعزّز بالحجم المناسب (الواضح).

أنواع نتائج النتائج

يمكن أن يسفر اختبار النتيجة عن أربعة أنواع مختلفة من نتائج النتائج، كما هو موضّح في الجدول التالي.

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

ARRaycastManager.Raycast(Vector2 screenPoint, List<ARRaycastHit> hitResults, TrackableType trackableTypes TrackableType.Depth)
طائرة النقر على الأسطح الأفقية و/أو الرأسية لتحديد عمق النقطة واتجاهها الصحيحَين متعامد على السطح الثلاثي الأبعاد ضَع كائنًا على سطح مستوٍ (أرضية أو جدار) باستخدام الأبعاد الهندسية الكاملة للطائرة. يجب استخدام الميزان الصحيح على الفور. الإجراء الاحتياطي لاختبار العمق ARRaycastManager.Raycast(Vector2 screenPoint, List<ARRaycastHit> hitResults, TrackableType trackableTypes TrackableType.PlaneWithinPolygon)
نقطة مميّزة تعتمد على الميزات المرئية حول نقطة نقر المستخدم لتحديد الموضع والاتجاه الصحيحَين للنقطة متعامد على السطح الثلاثي الأبعاد وضع كائن على سطح عشوائي (وليس فقط على الأرضيات والجدران) ARRaycastManager.Raycast(Vector2 screenPoint, List<ARRaycastHit> hitResults, TrackableType trackableTypes TrackableType.FeaturePoint)
Persistent Raycast (وضع فوري على الشاشة) يتم استخدام مساحة الشاشة لوضع المحتوى. في البداية، يتم استخدام تقدير العمق الذي يوفره التطبيق. تعمل هذه الميزة بشكل فوري، ولكن الوضعية والعمق الفعلي سيتغيّران بعد أن يتمكّن ARCore من تحديد هندسة المشهد الفعلي. +Y يشير للأعلى، عكس الجاذبية وضع جسم على سطح مستوٍ (أرضية أو جدار) باستخدام الأبعاد الهندسية الكاملة للطائرة في المكان الذي يشكّل فيه وضعًا سريعًا للتركيب، ويمكن أن تتحمّل التجربة عمقًا ومقياسًا غير معروفَين في البداية ARRaycastManager.AddRaycast(Vector2 screenPoint, float estimatedDistance)

إجراء بث شعاعي عادي

يمكنك طلب الرقم ARRaycastManager.Raycast(Vector2, List<ARRaycastHit>, TrackableType) لإجراء بث شعاعي (اختبار نتائج). تتوافق ميزة "ARRaycastManager" مع جميع TrackableType.

var touch = Input.GetTouch(0);
if (touch.phase != TouchPhase.Began)
    return;

// Raycast against planes and feature points.
const TrackableType trackableTypes =
    TrackableType.FeaturePoint |
    TrackableType.PlaneWithinPolygon;
List<ARRaycastHit> hits = new List<ARRaycastHit>();
// Perform the raycast.
if (raycastManager.Raycast(touch.position, hits, trackableTypes))
{
    // Raycast hits are sorted by distance, so the first one will be the closest hit.
    var hit = hits[0];
    // Do something with hit.
}

إجراء بث شعاعي باستخدام شعاع واتجاه عشوائي

يتم التعامل مع أجهزة Raycast عادةً على أنّها أشعة صادرة من كاميرا الجهاز أو الجهاز، ولكن يمكنك استخدام أداة Raycast(Ray, List<ARRaycastHit>, TrackableType) لإجراء بث شعاعي باستخدام أشعة عشوائية في إحداثيات الفضاء العالمي بدلاً من نقطة مسافة الشاشة.

إنشاء ارتساء باستخدام ARRaycastHit

بعد الحصول على نتيجة بث راي، استخدِم GameObject.AddComponent<ARAnchor> لإنشاء نقطة ارتساء وإضافتها كمكون إلى جهاز GameObject، باستخدام نتيجة raycast كإدخال. سيعمل المكوِّن ARAnchor باستمرار على تحديث Transform لكائن اللعبة، لكي يظل كائن اللعبة مرتبطًا بقيمة Trackable الأساسية لنتيجة النتيجة.

بث شعاعي دائم (موضع فوري)

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

يمكنك الاتصال بالرقم ARRaycastManager.AddRaycast() لإنشاء ARRaycast يتم تحديثه تلقائيًا إلى أن يتم الاتصال بالرقم ARRaycastManager.RemoveRaycast() أو إيقاف ARRaycastManager.

في البداية، ستكون مسافة ARRaycast هي المسافة التي يتم توفيرها في مكالمة AddRaycast(). بعد أن ينتهي ARCore من وضع الهندسة المحلية على الخريطة ووجد المستوى المتقاطع، يتم تحديث المسافة إلى مسافة فعلية. وقد يؤثّر التغيّر في المسافة على "الحجم" الظاهر أو مقياس محدد للكائن.

الخطوات التالية