हिट टेस्ट, असल दुनिया में वर्चुअल ऑब्जेक्ट डालते हैं

प्लेटफ़ॉर्म के हिसाब से गाइड

Android (Kotlin/Java)

Android NDK (C)

Unity (AR Foundation)

एआर कॉन्टेंट को सही जगह पर और सही साइज़ में रखना ज़रूरी है, ताकि वह सीन में अच्छी तरह से घुल-मिल जाए. असल दुनिया के ऑब्जेक्ट की तरह, वर्चुअल ऑब्जेक्ट भी दूर होने पर छोटे दिखने चाहिए. अपने सीन में 3D ऑब्जेक्ट को सही जगह पर रखने के लिए, हिट-टेस्ट (या Unity के लिए AR Foundation में रेकास्ट) किया जा सकता है. सही जगह पर रखने से यह पक्का होता है कि एआर कॉन्टेंट, सही (दिखने वाले) साइज़ में रेंडर हो.

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

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

हिट के नतीजे का कॉन्टेंट

हर नतीजे के लिए, एक हिट का नतीजा सूची के तौर पर दिखाया जाता है. इसमें यह जानकारी शामिल होती है:

  • रे के ओरिजिन से दूरी, मीटर में
  • हिट के नतीजे की पोज़ (जगह और ओरिएंटेशन)
  • वह 3D जियॉमेट्री जिससे रे टकराई है. यह जियॉमेट्री, ट्रैक करने लायक चीज़ के तौर पर दिखती है

इसके बाद, ऐंकर का इस्तेमाल करके, अपने 3D कॉन्टेंट को असल जैसा दिखाने के लिए, हिट के नतीजे का इस्तेमाल किया जा सकता है.

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

हिट के नतीजे चार तरह के होते हैं: डेप्थ, प्लेन, फ़ीचर पॉइंट, और इंस्टैंट प्लेसमेंट के नतीजे. इनके इस्तेमाल के अलग-अलग उदाहरण और फ़ायदे-नुकसान होते हैं. इनके बारे में, यहां दी गई टेबल में बताया गया है.

हिट के नतीजे का टाइप ब्यौरा ओरिएंटेशन इस्तेमाल का उदाहरण
डेप्थ किसी पॉइंट की सही डेप्थ और ओरिएंटेशन तय करने के लिए, पूरे सीन की डेप्थ की जानकारी का इस्तेमाल करता है 3D सतह के लंबवत किसी भी सतह पर वर्चुअल ऑब्जेक्ट प्लेस करना (सिर्फ़ फ़्लोर और दीवारों पर नहीं)
प्लेन किसी पॉइंट की सही डेप्थ और ओरिएंटेशन तय करने के लिए, हॉरिज़ॉन्टल और/या वर्टिकल सतहों पर हिट करता है 3D सतह के लंबवत प्लेन की पूरी जियॉमेट्री का इस्तेमाल करके, किसी ऑब्जेक्ट को प्लेन (फ़्लोर या दीवार) पर प्लेस करना. तुरंत सही स्केल की ज़रूरत होती है. डेप्थ हिट-टेस्ट के लिए फ़ॉलबैक
फ़ीचर पॉइंट किसी पॉइंट की सही पोज़िशन और ओरिएंटेशन तय करने के लिए, उपयोगकर्ता के टैप करने के पॉइंट के आस-पास दिखने वाली चीज़ों पर निर्भर करता है 3D सतह के लंबवत किसी भी सतह पर वर्चुअल ऑब्जेक्ट प्लेस करना (सिर्फ़ फ़्लोर और दीवारों पर नहीं)
इंस्टैंट प्लेसमेंट (परसिस्टेंट रेकास्ट) कॉन्टेंट प्लेस करने के लिए, स्क्रीन स्पेस का इस्तेमाल करता है. शुरुआत में, ऐप्लिकेशन से मिली अनुमानित डेप्थ का इस्तेमाल करता है. यह तुरंत काम करता है, लेकिन ARCore के सीन की असल जियॉमेट्री तय कर लेने के बाद, पोज़ और असल डेप्थ बदल जाएगी +Y ऊपर की ओर, ग्रेविटी के विपरीत प्लेन की पूरी जियॉमेट्री का इस्तेमाल करके, किसी ऑब्जेक्ट को प्लेन (फ़्लोर या दीवार) पर प्लेस करना. यहां तुरंत प्लेसमेंट ज़रूरी है और अनुभव में, शुरुआती डेप्थ और स्केल की जानकारी न होने पर भी काम चल सकता है

मेरे डिवाइस पर यह सुविधा काम नहीं करती

हिट-टेस्ट, ARCore की सुविधा वाले सभी डिवाइसों पर काम करते हैं. हालांकि, डेप्थ हिट-टेस्ट के लिए, ऐसे डिवाइसों की ज़रूरत होगी जिन पर डेप्थ की सुविधा काम करती है.

एआर कॉन्टेंट प्लेस करने के लिए, हिट के नतीजों का इस्तेमाल करना

हिट का नतीजा मिलने के बाद, सीन में एआर कॉन्टेंट प्लेस करने के लिए, उसकी पोज़ को इनपुट के तौर पर इस्तेमाल किया जा सकता है.