إجراء تسجيلات بصرية في تطبيق 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

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

البث المباشر للضوء (الموضع الفوري)

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

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

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

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