अपने Unity (AR Foundation) ऐप्लिकेशन में रेकास्ट करें

अपने सीन में 3D ऑब्जेक्ट की सही जगह तय करने के लिए, रेकास्ट या हिट-टेस्ट करें. सही प्लेसमेंट यह पक्का करता है कि एआर कॉन्टेंट को उचित (साफ़ तौर पर) आकार में रेंडर किया गया हो.

हिट नतीजे के टाइप

हिट-टेस्ट से चार अलग-अलग तरह के हिट नतीजे मिल सकते हैं, जैसा कि नीचे दी गई टेबल में दिखाया गया है.

हिट के नतीजे का टाइप ब्यौरा ओरिएंटेशन इस्तेमाल के बारे में जानकारी मेथड कॉल
गहराई किसी पॉइंट की सही गहराई और ओरिएंटेशन का पता लगाने के लिए, पूरे सीन की गहराई से जानकारी का इस्तेमाल करता है 3D सतह के लंबवत वर्चुअल ऑब्जेक्ट को किसी आर्बिट्रेरी सतह पर रखें (सिर्फ़ फ़र्श और दीवारों पर ही नहीं) यह सुविधा काम कर सके, इसके लिए Depth को चालू करना होगा.

ARRaycastManager.Raycast(Vector2 screenPoint, List<ARRaycastHit> hitResults, TrackableType trackableTypes TrackableType.Depth)
जहाज़ किसी पॉइंट की सही गहराई और ओरिएंटेशन का पता लगाने के लिए, वह हॉरिज़ॉन्टल और/या वर्टिकल सतह को हिट करता है 3D सतह के लंबवत प्लेन की पूरी ज्यामिति का इस्तेमाल करके, किसी समतल जगह (फ़्लोर या दीवार) पर कोई चीज़ रखें. स्केल की ज़रूरत तुरंत है. डेप्थ हिट-टेस्ट के लिए फ़ॉलबैक ARRaycastManager.Raycast(Vector2 screenPoint, List<ARRaycastHit> hitResults, TrackableType trackableTypes TrackableType.PlaneWithinPolygon)
फ़ीचर पॉइंट किसी पॉइंट की सही पोज़िशन और ओरिएंटेशन का पता लगाने के लिए, उपयोगकर्ता के टैप करने की जगह के आस-पास की विज़ुअल सुविधाओं के आधार पर काम करता है 3D सतह के लंबवत किसी ऑब्जेक्ट को किसी आर्बिट्रेरी सतह पर रखें (सिर्फ़ फ़र्श और दीवारों पर नहीं) ARRaycastManager.Raycast(Vector2 screenPoint, List<ARRaycastHit> hitResults, TrackableType trackableTypes TrackableType.FeaturePoint)
परसिस्टेंट 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(Ray, List<ARRaycastHit>, TrackableType) का इस्तेमाल करने का विकल्प है.

ARRaycastHit का इस्तेमाल करके ऐंकर बनाएं

रेकास्ट हिट मिलने पर, एंकर बनाने के लिए GameObject.AddComponent<ARAnchor> का इस्तेमाल करें. साथ ही, इसे अपने GameObject में कॉम्पोनेंट के तौर पर जोड़ें. इसके लिए, इनपुट के तौर पर रेकास्ट हिट का इस्तेमाल करें. ARAnchor कॉम्पोनेंट, गेम ऑब्जेक्ट के Transform को लगातार अपडेट करेगा. इससे, हिट नतीजे के लिए गेम ऑब्जेक्ट, Trackable से जुड़ा रहेगा.

लगातार मिलने वाले रेकास्ट (झटपट प्लेसमेंट)

लगातार आने वाले रेकास्ट स्क्रीन की जगह और सतह की अनुमानित दूरी को इनपुट के तौर पर इस्तेमाल करते हैं. इससे आपके सीन में एआर (ऑगमेंटेड रिएलिटी) कॉन्टेंट डालने के लिए, नया ARRaycast बनाया जाता है. ARCore में, इसे इंस्टैंट प्लेसमेंट के नाम से जाना जाता है.

एक ARRaycast बनाने के लिए, ARRaycastManager.AddRaycast() को कॉल करें. यह तब तक अपने-आप अपडेट होता रहता है, जब तक कि आप ARRaycastManager.RemoveRaycast() को कॉल न कर दें या ARRaycastManager को बंद न कर दें.

शुरुआत में, ARRaycast की दूरी, AddRaycast() कॉल में दी गई दूरी होगी. जब ARCore ने स्थानीय ज्यामिति को मैप कर लिया है और उसे एक प्रतिच्छेदन करने वाला समतल मिल गया है, तो दूरी को असल दूरी में अपडेट कर दिया जाता है. दूरी में बदलाव से, ऑब्जेक्ट के साफ़ तौर पर दिखने वाले "साइज़" या अनुमानित स्केल पर असर पड़ सकता है.

आगे क्या होगा