إجراء تسجيلات بصرية في تطبيق 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)
الشعاع المستمر (موضع إعلان فوري) يستخدم مساحة الشاشة لوضع المحتوى. يستخدم هذا الأسلوب في البداية العمق المقدَّر الذي يقدّمه التطبيق. ويعمل هذا الأسلوب على الفور، ولكن سيتغيّر الوضع والعمق الفعلي بعد أن يتمكّن 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(Ray, List<ARRaycastHit>, TrackableType) لإجراء بث أشعة باستخدام شعاع عشوائي في إحداثيات المساحة العالمية بدلاً من نقطة في مساحة الشاشة.

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

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

عمليات بث أشعة مستمرة (موضع إعلان فوري)

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

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

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

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