अपने 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)
पर्सिस्टेंट रेकास्ट (इंस्टैंट प्लेसमेंट) कॉन्टेंट डालने के लिए स्क्रीन के स्पेस का इस्तेमाल करता है. शुरुआत में, ऐप्लिकेशन से मिली अनुमानित गहराई का इस्तेमाल करता है. यह तुरंत काम करता है, लेकिन जब 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, स्थानीय ज्यामिति को मैप कर लेता है और उसे कोई इंटरसेक्टिंग प्लेन मिल जाता है, तो दूरी को असल दूरी में अपडेट कर दिया जाता है. दूरी में बदलाव होने से, ऑब्जेक्ट के "साइज़" या स्केल पर असर पड़ सकता है.

अब क्या होगा