Unity (एआर फ़ाउंडेशन) के लिए, क्लाउड ऐंकर डेवलपर गाइड

अपने ऐप्लिकेशन में क्लाउड ऐंकर इस्तेमाल करने का तरीका जानें.

ज़रूरी शर्तें

आगे बढ़ने से पहले, पक्का करें कि आपने बुनियादी एआर (ऑगमेंटेड रिएलिटी) सिद्धांत और ARCore सेशन को कॉन्फ़िगर करने का तरीका समझ लिया है.

अगर आपने Cloud ऐंकर का इस्तेमाल पहले कभी नहीं किया है, तो पक्का करें कि आपको ऐंकर और क्लाउड ऐंकर के काम करने के तरीके के बारे में पता हो.

ARCore API चालू करना

अपने ऐप्लिकेशन में क्लाउड ऐंकर इस्तेमाल करने से पहले, आपको अपने ऐप्लिकेशन में ARCore API चालू करना होगा.

सेशन कॉन्फ़िगरेशन में, क्लाउड ऐंकर की सुविधाएं चालू करें

आपके ऐप्लिकेशन में 'क्लाउड ऐंकर' की सुविधा चालू हो जाने के बाद, अपने ऐप्लिकेशन के एआर (ऑगमेंटेड रिएलिटी) सेशन कॉन्फ़िगरेशन में क्लाउड ऐंकर सुविधाओं को चालू करें, ताकि यह ARCore API के साथ काम कर सके:

क्लाउड ऐंकर होस्ट करें

होस्ट करने की प्रक्रिया, ARAnchorManager.HostCloudAnchorAsync() पर कॉल करने पर शुरू होती है. ARCore, विज़ुअल डेटा, डिवाइस के पोज़, और ऐंकर पोज़ को ARCore API पर अपलोड करेगा. इसके बाद, एपीआई इस जानकारी को प्रोसेस करके 3D फ़ीचर मैप बनाता है. इसके बाद, डिवाइस को ऐंकर के लिए एक यूनीक क्लाउड ऐंकर आईडी दिखाता है.

ARCore Cloud anchor Management API का इस्तेमाल करके, होस्ट किए गए ऐंकर का लाइफ़टाइम भी किया जा सकता है.

क्लाउड ऐंकर की होस्टिंग को पूरा करने के लिए, आपके ऐप्लिकेशन को यह तरीका अपनाना होगा:

  1. ARAnchorManager.HostCloudAnchorAsync() पर कॉल करें.
  2. Promise से कोई नतीजा मिलने तक इंतज़ार करने के लिए कोरूटीन शुरू करें. ज़्यादा जानकारी के लिए, Unity में कोरूटीन देखें.
  3. नतीजे की स्थिति देखें और पता करें कि कार्रवाई पूरी हुई है या नहीं. अगर गड़बड़ी हो गई है, तो उसे समझें.
  4. नतीजे के तौर पर मिले Cloud ऐंकर आईडी को अन्य क्लाइंट के साथ शेयर करें. साथ ही, इसका इस्तेमाल ARAnchorManagerExtensions.ResolveCloudAnchorAsync() के साथ क्लाउड ऐंकर की समस्या हल करने के लिए करें.

फ़ीचर पॉइंट को मैप करने की क्वालिटी देखना

ARCoreExtensions.FeatureMapQuality से पता चलता है कि कैमरे के किसी पोज़ से, ARCore को पिछले कुछ सेकंड में कितने फ़ीचर पॉइंट दिखे. आम तौर पर, अच्छी क्वालिटी की सुविधाओं का इस्तेमाल करके होस्ट किए गए क्लाउड ऐंकर का समाधान ज़्यादा सटीक तरीके से किया जाता है. ARAnchorManagerExtensions.EstimateFeatureMapQualityForHosting() का इस्तेमाल करके, कैमरे के किसी खास पोज़ के लिए, फ़ीचर मैप की क्वालिटी का अनुमान लगाएं.

वैल्यू ब्यौरा
Insufficient पिछले कुछ सेकंड में पोज़ से पहचाने गए फ़ीचर पॉइंट की क्वालिटी अच्छी नहीं है. इस स्थिति से पता चलता है कि ARCore को Cloud ऐंकर की समस्या को हल करने में ज़्यादा मुश्किल आ सकती है. उपयोगकर्ता को डिवाइस चलाने के लिए कहें, ताकि क्लाउड ऐंकर की मनचाही जगह को अलग-अलग ऐंगल से देखा जा सके.
Sufficient पिछले कुछ सेकंड में पोज़ से पहचाने गए फ़ीचर पॉइंट की क्वालिटी, ARCore के लिए क्लाउड ऐंकर को ठीक करने के लिए काफ़ी है. हालांकि, इस पोज़ की सटीक क्वालिटी मिलने की संभावना कम हो जाएगी. उपयोगकर्ता को डिवाइस चलाने के लिए कहें, ताकि क्लाउड ऐंकर की मनचाही जगह को अलग-अलग ऐंगल से देखा जा सके.
Good पिछले कुछ सेकंड में पोज़ से पहचाने गए फ़ीचर पॉइंट की क्वालिटी, ARCore के लिए काफ़ी सटीक है. इससे, क्लाउड ऐंकर को अच्छी तरह से सटीक तरीके से ठीक किया जा सकता है.

पहले होस्ट किए गए ऐंकर को बंद करना

होस्ट किए गए क्लाउड ऐंकर की समस्या हल करने के लिए, ARAnchorManagerExtensions.ResolveCloudAnchorAsync() को कॉल करें. ARCore API, समय-समय पर ऐंकर के 3D फ़ीचर मैप से, सीन में मौजूद विज़ुअल की तुलना करता है, ताकि ऐंकर के मुकाबले उपयोगकर्ता की पोज़िशन और स्क्रीन की दिशा का पता लगाया जा सके. मिलान होने पर एपीआई, होस्ट किए गए क्लाउड ऐंकर का पोज़ दिखाता है.

एक से ज़्यादा क्लाउड ऐंकर के लिए, क्रम से रिज़ॉल्व शुरू किए जा सकते हैं. एक समय में, एक साथ 40 Cloud ऐंकर कार्रवाइयां की जा सकती हैं.

किसी कार्रवाई को रद्द करना या क्लाउड ऐंकर हटाना

जब ARCloudAnchor कॉम्पोनेंट को उस गेम ऑब्जेक्ट से हटाया जाता है जिसमें वह कॉम्पोनेंट होता है, तो ARCloudAnchor.OnDestroy() अपने-आप कॉल हो जाता है. यह मौजूदा नेटिव क्लाउड ऐंकर ऑब्जेक्ट को अलग कर देगा और रिलीज़ कर देगा.

Cloud ऐंकर कार्रवाई के नतीजे की स्थिति देखना

होस्टिंग या समाधान की कार्रवाई के नतीजे की स्थिति देखने के लिए, CloudAnchorState का इस्तेमाल करें. साथ ही, गड़बड़ियों की जानकारी भी देखें.

वैल्यू ब्यौरा
ErrorResolvingCloudIdNotFound समाधान नहीं किया जा सका, क्योंकि ARCore API को दिया गया Cloud ऐंकर आईडी नहीं मिला.
ErrorHostingDatasetProcessingFailed होस्ट नहीं किया जा सका, क्योंकि सर्वर दिए गए ऐंकर के डेटासेट को प्रोसेस नहीं कर सका. जब डिवाइस वातावरण से ज़्यादा डेटा इकट्ठा कर ले, तब फिर से कोशिश करें.
ErrorHostingServiceUnavailable ARCore API से कनेक्ट नहीं किया जा सकता. ऐसा कई कारणों से हो सकता है. मुमकिन है कि डिवाइस हवाई जहाज़ मोड में हो या उसका इंटरनेट कनेक्शन ठीक से काम न करता हो. ऐसा हो सकता है कि सर्वर को भेजे गए अनुरोध का समय खत्म हो गया हो और कोई जवाब न मिला हो. इंटरनेट ठीक से काम नहीं कर रहा है, डीएनएस का उपलब्ध नहीं है, फ़ायरवॉल की समस्याएं हो सकती हैं या कुछ भी ऐसा हो सकता है जिसकी वजह से डिवाइस के ARCore API से कनेक्ट करने की सुविधा पर असर पड़ सकता है.
ErrorInternal इस ऐंकर के लिए, होस्ट करने या समाधान करने का टास्क पूरा हुआ, लेकिन कोई अंदरूनी गड़बड़ी हुई. ऐप्लिकेशन को इस गड़बड़ी को ठीक करने की कोशिश नहीं करनी चाहिए.
ErrorNotAuthorized गलत अनुमति की वजह से ऐप्लिकेशन, ARCore API से कम्यूनिकेट नहीं कर सकता. अनुमति देने की मान्य रणनीति के लिए, प्रोजेक्ट सेटिंग > XR > ARCore एक्सटेंशन देखें.
ErrorResolvingPackageTooNew क्लाउड ऐंकर की समस्या हल नहीं की जा सकी, क्योंकि क्लाउड ऐंकर की समस्या हल करने के लिए इस्तेमाल किया गया ARCore एक्सटेंशन पैकेज, उसे होस्ट करने के लिए इस्तेमाल किए जा रहे वर्शन से नया है और उसके साथ काम नहीं करता.
ErrorResolvingPackageTooOld क्लाउड ऐंकर की समस्या हल नहीं की जा सकी, क्योंकि क्लाउड ऐंकर की समस्या हल करने के लिए इस्तेमाल किया गया ARCore एक्सटेंशन पैकेज, पुराने वर्शन से पुराना है और उसे होस्ट करने के लिए इस्तेमाल किए जा रहे वर्शन के साथ काम नहीं करता है.
ErrorResourceExhausted इस ऐप्लिकेशन के लिए, Google Cloud के प्रोजेक्ट के लिए तय किया गया अनुरोध कोटा खत्म हो गया है. आपको Google Developers Console से अपने प्रोजेक्ट के लिए ARCore API के लिए अतिरिक्त कोटा का अनुरोध करना चाहिए.
Success इस ऐंकर के लिए, होस्ट करने या समाधान करने का टास्क पूरा हुआ.

होस्ट और अनुरोधों के समाधान के लिए एपीआई कोटा

अनुरोध बैंडविड्थ के लिए ARCore API के पास ये कोटा हैं:

कोटा टाइप ज़्यादा से ज़्यादा कुल अवधि इस पर लागू होता है
ऐंकर की संख्या अनलिमिटेड लागू नहीं प्रोजेक्ट
ऐंकर होस्ट अनुरोध 30 मिनट आईपी पता और प्रोजेक्ट
ऐंकर अनुरोधों का resolve 300 मिनट आईपी पता और प्रोजेक्ट

बेहतर उपयोगकर्ता अनुभव के लिए सबसे सही तरीके

अपने ऐप्लिकेशन पर लोगों को अच्छा अनुभव देने के लिए, उपयोगकर्ताओं को ये काम करने का निर्देश दें:

  • ऐंकर होस्ट करने की कोशिश करने से पहले, सेशन शुरू होने के बाद कुछ सेकंड इंतज़ार करें (ऑब्जेक्ट डालकर, वगैरह). इससे ट्रैकिंग को स्थिर होने में कुछ समय लगता है.
  • ऐंकर को होस्ट करने के लिए जगह चुनते समय, ऐसी जगह ढूंढने की कोशिश करें जिसमें विज़ुअल सुविधाएं हों और जो एक-दूसरे से आसानी से अलग हों. सबसे अच्छे नतीजों के लिए, ऐसी सतहों या सतहों से बचें जिनमें विज़ुअल सुविधाएं न हों, जैसे कि खाली सफ़ेद दीवारें.
  • कैमरे को आपकी पसंद के हिसाब से ट्रेनिंग दें और आस-पास के डिवाइस को आस-पास घुमाएं. इससे पर्यावरण को अलग-अलग ऐंगल से मैप किया जा सकेगा और करीब-करीब एक जैसी दूरी बनाए रखी जा सकेगी. इससे ज़्यादा विज़ुअल डेटा कैप्चर करने और समस्या का समाधान करने में मदद मिलेगी.

  • क्लाउड ऐंकर को होस्ट करते समय और समस्या को हल करते समय, पक्का करें कि असल ज़िंदगी के माहौल में ज़रूरत के मुताबिक रोशनी हो.

वर्शन रोकने की नीति

  • ARCore SDK 1.12.0 या इसके बाद के वर्शन वाले ऐप्लिकेशन पर, Cloud anchor API का इस्तेमाल रोकने की नीति लागू होती है.
  • ARCore SDK टूल 1.11.0 या इससे पहले के वर्शन वाले ऐप्लिकेशन, Cloud ऐंकर को होस्ट या रिज़ॉल्व नहीं कर सकते. ऐसा इसलिए है, क्योंकि SDK टूल पुराने और अब काम न करने वाले ARCore API का इस्तेमाल करता है.

आगे क्या करना है