نفِّذ 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 الأشكال الهندسية المحلية ويجد سطحًا متقاطعًا، يتم تعديل المسافة إلى المسافة الفعلية. يمكن أن يؤثّر التغيير في المسافة في "الحجم" الظاهر أو النطاق المتأثّر بالجسم.
الخطوات التالية
- إنشاء لعبة واقع معزّز باستخدام Unity's AR Foundation: درس تطبيقي حول الترميز