نفِّذ اختبار شعاع أو اختبار التصادم لتحديد موضع الجسم الثلاثي الأبعاد الصحيح في المشهد. يضمن الموضع الصحيح عرض محتوى الواقع المعزّز بالحجم المناسب (المرئي).
أنواع نتائج البحث
يمكن أن يؤدي اختبار النتيجة إلى ظهور أربعة أنواع مختلفة من نتائج النتائج، كما هو موضّح في الجدول التالي.
نوع نتيجة النتيجة | الوصف | الاتجاه | حالة الاستخدام | طلبات تنفيذ الطرق |
---|---|---|---|---|
العمق | يستخدم معلومات العمق من المشهد بأكمله لتحديد العمق الصحيح للنقطة واتجاهها | عمودي على السطح الثلاثي الأبعاد | وضع عنصر افتراضي على سطح عشوائي (وليس فقط على الأرضيات والحوائط) |
يجب تفعيل 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: درس تطبيقي حول الترميز