Google Maps Platform के Geospatial Creator और Places API की मदद से ऐप्लिकेशन बनाना

1. शुरू करने से पहले

ARCore और Google Maps Platform के फ़ोटोरियलिस्टिक 3D टाइल की मदद से, Unity में Geospatial Creator की सुविधा मिलती है. इसकी मदद से, किसी अक्षांश और देशांतर के लिए ऑगमेंटेड रिएलिटी (एआर) के अनुभव तुरंत बनाए और विज़ुअलाइज़ किए जा सकते हैं. यह सब Unity Editor में किया जा सकता है. इससे आपके ऐप्लिकेशन के लिए, किसी एक जगह के हिसाब से एआर सीन बनाने में लगने वाला समय काफ़ी कम हो सकता है. हालांकि, अगर आपको अलग-अलग जगहों पर एक जैसे कई अनुभव बनाने हैं, तो क्या होगा? Geospatial Creator में C# API का इस्तेमाल करके भी ऐसा किया जा सकता है.

इस कोडलैब में, आपको C# कोड लिखना होगा. यह कोड, Geospatial Creator और Google Maps Platform के Places API का इस्तेमाल करके, शुरुआती टेंप्लेट की मदद से कई जियोस्पेशल अनुभव बनाएगा. ऐप्लिकेशन में कंपाइल करने से पहले, Unity Editor में इन अनुभवों को एक्सप्लोर किया जा सकता है और बेहतर बनाया जा सकता है.

किताब की ऊंचाई सही हो

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

  • AR के बारे में बुनियादी जानकारी
  • ARCore Geospatial API के बारे में बुनियादी जानकारी

आपको क्या सीखने को मिलेगा

  • Geospatial Creator में एपीआई का इस्तेमाल करके, एक ही जियोलोकेटेड अनुभव को कई जगहों पर बनाने और उसे विज़ुअलाइज़ करने का तरीका.
  • जगहों की जानकारी ढूंढने के लिए, Google Maps Platform के Places API का इस्तेमाल कैसे करें.
  • अपने डिवाइस पर एआर की सुविधा का इस्तेमाल करने का तरीका.

आपको किन चीज़ों की ज़रूरत होगी

2. अपना एनवायरमेंट सेट अप करने का तरीका

Geospatial Creator का इस्तेमाल करने के लिए, आपको Photorealistic 3D Tiles, Google Cloud पर ARCore सेवाओं, और Google Maps Platform के Places API को ऐक्सेस करने की अनुमति सेट अप करनी होगी.

Google Cloud प्रोजेक्ट सेट अप करना

Google के सर्वर एपीआई को ऐक्सेस करने के लिए, इस कोडलैब के लिए ऐसे Google Cloud प्रोजेक्ट की ज़रूरत होती है जिसमें बिलिंग चालू हो. इस कोडलैब के लिए बिलिंग सेटअप करना ज़रूरी है. हालांकि, आपसे सिर्फ़ तब शुल्क लिया जाएगा, जब कोई प्रोजेक्ट बिना शुल्क वाली सेवाओं के कोटे से ज़्यादा का इस्तेमाल करेगा.

Google Cloud में कोई प्रोजेक्ट सेट अप करने के लिए, यह तरीका अपनाएं:

  1. Google Cloud Console में एक प्रोजेक्ट बनाएं.Google Cloud प्रोजेक्ट बनाना
  2. प्रोजेक्ट का नाम टेक्स्ट बॉक्स में, कोई सही नाम डालें. जैसे, ARCore Geospatial Project. इसके बाद, कोई जगह चुनें.
  3. बनाएं पर क्लिक करें.
  4. प्रोजेक्ट चुनने वाले पेज पर, Google Cloud Console में जाकर, प्रोजेक्ट बनाएं पर क्लिक करें.
  5. बिलिंग चालू करें लेख पढ़ें. साथ ही, फ़ोटोरेलिस्टिक 3D टाइल की कीमत और Places API (नया प्रॉडक्ट) की कीमत देखें.

Map Tiles API को चालू करना

Map Tiles API, फ़ोटोरियलिस्टिक 3D टाइलें उपलब्ध कराता है. ये टाइलें, Unity Editor में दिखती हैं.

  • Map Tiles API को चालू करने के लिए, यहां दिए गए बटन पर क्लिक करें. इसके बाद, चालू करें को चुनें:

ARCore API चालू करना

Google Cloud पर मौजूद ARCore API की मदद से, टारगेट डिवाइस पर ARCore Geospatial API को ऐक्सेस किया जा सकता है.

  • ARCore API को चालू करने के लिए, यहां दिए गए बटन पर क्लिक करें. इसके बाद, चालू करें को चुनें:

Places API को चालू करना

Google Maps Platform के Places API की मदद से, 20 करोड़ से ज़्यादा जगहों की जगह की जानकारी का डेटा पाया जा सकता है. इस डेटा का इस्तेमाल, कोडलैब में मिलती-जुलती जगहों को खोजने के लिए किया जाएगा. यह एपीआई, जगहों के लिए खोज के नतीजे और भौगोलिक निर्देशांक उपलब्ध कराता है.

  • Places API को चालू करने के लिए, यहां दिए गए बटन पर क्लिक करें. इसके बाद, चालू करें को चुनें:

अपने प्रोजेक्ट के लिए एपीआई पासकोड बनाना

रिमोट Google Cloud सेवाओं के साथ अपने ऐप्लिकेशन की पुष्टि करने के लिए, एपीआई कुंजी की मदद से पुष्टि करने की सुविधा का इस्तेमाल करने के लिए, यह तरीका अपनाएं:

  1. Google Cloud Console में, एपीआई और सेवाएं में जाकर, क्रेडेंशियल चुनें.
  2. पेज पर सबसे ऊपर, क्रेडेंशियल बनाएं पर क्लिक करें. इसके बाद, एपीआई पासकोड चुनें.
  3. कुंजी को नोट करें, क्योंकि अगले चरणों के लिए इसकी ज़रूरत होगी.

सॉफ़्टवेयर सेट अप करना

Geospatial Creator सॉफ़्टवेयर का इस्तेमाल शुरू करने के लिए, यह तरीका अपनाएं:

  1. इस रिपॉज़िटरी का क्लोन बनाएं.
  2. Unity Hub डाउनलोड करें और इसका इस्तेमाल करके, Unity का 2022.3 वर्शन इंस्टॉल करें. पक्का करें कि आपने Android या iOS के लिए, वैकल्पिक बिल्ड टूल इंस्टॉल किए हों.
  3. Unity Hub में, जोड़ें > डिस्क से प्रोजेक्ट जोड़ें दबाएं.
  4. हायरार्की पैनल में, AR Geospatial Creator Origin चुनें.
  5. Google Maps Tile API पासकोड टेक्स्ट बॉक्स में, एपीआई पासकोड डालें. इसके बाद, Enter (macOS पर return) दबाएं.Geospatial Creator Origin में अपना एपीआई पासकोड डालें
  6. Edit > Project Settings > XR Plug-in Management > ARCore Extensions में जाकर, Android या iOS के लिए एपीआई पासकोड की पुष्टि करने की सुविधा का इस्तेमाल करें और एपीआई पासकोड डालें.
  7. फ़ाइल > बिल्ड सेटिंग में जाकर, टारगेट प्लैटफ़ॉर्म को Android या iOS पर स्विच करें.

3. अपना पहला ऐंकर बनाना

इस कोडलैब में, आपको एक एआर ऐंकर बनाना है. इसका इस्तेमाल कई जगहों पर किया जा सकता है. हमने उदाहरण के तौर पर, कैलिफ़ोर्निया के सैन फ़्रांसिस्को में मौजूद सार्वजनिक लाइब्रेरी का इस्तेमाल किया है. हालांकि, आपके पास अपने आस-पास की जगहों का इस्तेमाल करने का विकल्प है.

Geospatial Creator के Origin कॉम्पोनेंट के बारे में जानकारी

Geospatial Creator की मदद से बनाए गए हर Unity सीन में, Geospatial Creator Origin का सिर्फ़ एक ऑब्जेक्ट होना चाहिए. यह गेम ऑब्जेक्ट, असल दुनिया के अक्षांश, देशांतर, और ऊंचाई की वैल्यू को Unity गेम के निर्देशांकों में बदलने के लिए रेफ़रंस पॉइंट होता है.

सैंपल प्रोजेक्ट में Geospatial Creator Origin शामिल है. यह Cesium का इस्तेमाल करके, एडिटर के Scene व्यू में फ़ोटोरियलिस्टिक 3D टाइल रेंडर करता है. इससे आपको यह देखने में मदद मिलती है कि दुनिया में किस जगह पर आपका एआर कॉन्टेंट दिखेगा.

ऑरिजिन को दूसरी जगह ले जाना

Geospatial Creator के ओरिजन को सैन फ़्रांसिस्को की मुख्य लाइब्रेरी ब्रांच के अक्षांश और देशांतर पर ले जाएं.

Places API के साथ Geospatial Creator के बिल्ट-इन इंटिग्रेशन का इस्तेमाल करके, ओरिजन को सही जगह पर अपने-आप ले जाने के लिए, यह तरीका अपनाएं:

  1. Hierarchy पैनल में, Geospatial Creator Origin गेम ऑब्जेक्ट चुनें.
  2. Inspector पैनल में, Search for Location पर क्लिक करें.
  3. खोज डायलॉग में, San Francisco Public Library टाइप करें. पहला नतीजा, 100 Larkin Street पर होना चाहिए.
  4. खोज के नतीजे को ओरिजनल इमेज पर लागू करने के लिए, ऑब्जेक्ट पर लागू करें पर क्लिक करें. आपको दिखेगा कि ऑरिजिन के अक्षांश और देशांतर, नए निर्देशांकों में अपडेट हो गए हैं.

बिल्डिंग दिख रही हो

सीन में Geospatial Creator ऐंकर जोड़ना

अब ओरिजिन मौजूद है. इसलिए, GameObject > XR > AR Geospatial Creator Anchor का इस्तेमाल करके, Geospatial Creator ऐंकर जोड़ें. डिफ़ॉल्ट रूप से, ऐंकर को ऑरिजिन के साथ रखा जाएगा.

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

अपनी सीन में किताब रखने के लिए, यह तरीका अपनाएं:

  1. प्रोजेक्ट पैनल में, किताब मॉडल को खींचकर एडिटर व्यू पैनल में छोड़ें.
  2. हायरार्की पैनल में जाकर पक्का करें कि बुक, उस ऐंकर का चाइल्ड हो जिसे आपने पहले बनाया था. Geospatial Creator ऐंकर का कोई भी चाइल्ड गेम ऑब्जेक्ट, ऐंकर के हिसाब से पोज़िशन किया जाएगा.
  3. हायरार्की पैनल में जाकर, किताब चुनें. इसकी पोज़िशन की वैल्यू को 0, 0, 0 पर सेट करें.

किताब को सीन में जोड़ा गया

एडिटर व्यू में इस मॉडल को देखने पर पता चलता है कि इसमें कुछ गड़बड़ी है: ऐंकर की डिफ़ॉल्ट ऊंचाई, लाइब्रेरी की छत की सतह से नीचे है. हालांकि, इसे इससे काफ़ी ऊपर होना चाहिए.

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

  • इसके लिए, ऐंकर के इंस्पेक्टर पैनल को खोलें और Altitude Type प्रॉपर्टी को Rooftop पर सेट करें.

इंस्पेक्टर पैनल

ऐसा करने के बाद, ध्यान दें कि एडिटर व्यू में ऐंकर की ऊंचाई नहीं बदलती. ऐसा इसलिए होता है, क्योंकि रूफ़टॉप और टेरेन ऐंकर के लिए ऐंकर को हल करते समय, रनटाइम में ऐंकर की ऊंचाई तय की जाती है. Scene व्यू में छत पर मौजूद ऐंकर को विज़ुअलाइज़ करने के लिए, टाइल पर स्नैप करें बटन का इस्तेमाल किया जा सकता है. इससे ऐंकर की ऊंचाई, Scene व्यू में मौजूद टाइल से मैच हो जाती है. हालांकि, इससे रनटाइम में हल किए गए ऐंकर की ऊंचाई पर कोई असर नहीं पड़ता.

  • अगर आपको मॉडल को लाइब्रेरी की छत पर रखने के बजाय, उसके ऊपर दिखाना है, तो Altitude relative to rooftop पैरामीटर को बदलकर, छत से 15 मीटर ऊपर करें.

अब मॉडल, लाइब्रेरी के ऊपर अच्छी तरह से तैर रहा है!

किताब की ऊंचाई सही हो

आपके प्रोजेक्ट में अब पूरा Geospatial AR सीन है. इसमें एआर सिस्टम के सभी ज़रूरी कॉम्पोनेंट, Geospatial Creator Origin, और अटैच किए गए मॉडल के साथ एक ऐंकर शामिल है.

इसके बाद, लाइब्रेरी की अन्य जगहों पर डुप्लीकेट ऐंकर बनाएं.

4. Places API की मदद से, नई ऐंकर लोकेशन ढूंढना

Google Maps Platform के Places API की मदद से, 20 करोड़ से ज़्यादा जगहों का डेटा पाया जा सकता है. इस कोडलैब में, इस एपीआई का इस्तेमाल सैन फ़्रांसिस्को में सार्वजनिक पुस्तकालयों की अन्य शाखाओं का पता लगाने के लिए किया जाता है. साथ ही, उन नतीजों का इस्तेमाल अगले दस खोज नतीजों के लिए, Geospatial Creator ऐंकर जनरेट करने के लिए किया जाता है.

  • शुरू करने के लिए, ऐसेट > स्क्रिप्ट > एडिटर पर क्लिक करें. इसके बाद, ‘AnchorDuplicator.cs' फ़ाइल खोलें. इस फ़ाइल में कुछ बॉयलरप्लेट कोड दिया गया है. इससे आपको Places API का इस्तेमाल शुरू करने और उसके नतीजों को पार्स करने में मदद मिलती है.

Places API की मदद से पुष्टि करना

  1. AnchorDuplicator क्लास में यह लाइन ढूंढें:
    private const string API_KEY = "<YOUR_API_KEY_HERE>";
    
  2. <YOUR_API_KEY_HERE> को सेटअप के चरणों में मिले पासकोड से बदलें.

खोज के लिए इस्तेमाल हुए किसी शब्द के लिए, Places API में क्वेरी करना

Places API के लिए ऑथराइज़ेशन सेटअप पूरा होने के बाद, ऐसा कोड लिखा जा सकता है जो POST अनुरोध शुरू करता है.

  • इसके लिए, CreatePlacesRequest तरीका ढूंढें और तरीके की यह परिभाषा इस्तेमाल करें:
    string postBody = "{ \"textQuery\": \"" + searchTerm + "\", " + 
                        "   \"locationBias\": { \"circle\": { " +
                        "      \"center\": { \"latitude\": " + lat + ", \"longitude\": " + lon + " }, " +
                        "      \"radius\": 10000 }" +
                        "   }" +
                        "}";
    
    string url = "https://places.googleapis.com/v1/places:searchText";
    
    UnityWebRequest request = UnityWebRequest.Post(url, postBody, "application/json");
    request.SetRequestHeader("X-Goog-Api-Key", apiKey);
    request.SetRequestHeader("X-Goog-FieldMask", "places.displayName,places.location");
    
    return request;
    
    अब, जब CreatePlacesRequest मेथड को कॉल किया जाता है, तो एक अनुरोध किया जाता है. यह अनुरोध, lat और lon के बीच में मौजूद सर्कल में searchTerm को खोजता है.

अपने काम की जांच करना

जारी रखने से पहले, आपको यह पुष्टि करनी होगी कि Places API को किए गए कॉल पूरे हो गए हैं.

  1. Unity Editor में फ़ंक्शन चलाएं:
    1. Google AR Codelab में, Run Places Request पर क्लिक करें.
    2. Unity कंसोल खोलें. आपको नतीजे दिखने चाहिए.जगहों की जानकारी Console में दिखती है

5. जगहों में ऐंकर को प्रोग्राम के हिसाब से जोड़ना

अब जब आपने यह पुष्टि कर ली है कि Places API से नतीजे मिल रहे हैं, तो नतीजों में बताई गई हर जगह पर नए Geospatial Creator ऐंकर बनाएं.

मेन्यू आइटम बनाना

  1. AnchorDuplicator क्लास में, CreateNewAnchorsFromPlaces तरीका ढूंढें और तरीके की यह परिभाषा इस्तेमाल करें:
    if (_places == null)
    {
        Debug.LogError("Cannot create anchors: Places has not been initialized.");
        return;
    }
    
    // You start with only one anchor in the scene, which you want to copy:
    var prototypeAnchorObject = GameObject
        .FindObjectOfType<ARGeospatialCreatorAnchor>()
        .gameObject;
    
    foreach (var place in _places)
    {
        var newAnchorObject = GameObject.Instantiate(prototypeAnchorObject);
        var anchor = newAnchorObject.GetComponent<ARGeospatialCreatorAnchor>();
        anchor.Latitude = place.location.latitude;
        anchor.Longitude = place.location.longitude;
    
        newAnchorObject.name = place.displayName.text;
    }
    
    यह मेन्यू आइटम, पहले शुरू किए गए अनुरोध की जांच करता है. साथ ही, Places API के नतीजे में मौजूद हर जगह के लिए एक ऐंकर बनाने के लिए, आपकी सीन में मौजूद पहले ARGeospatialCreatorAnchor का इस्तेमाल प्रोटोटाइप के तौर पर करता है.
  2. ऐंकर बनाने के लिए, Google AR Codelab में जगहों की जानकारी से मिले जवाब से नए ऐंकर बनाएं मेन्यू आइटम का इस्तेमाल करें.
  3. आपको हायरार्की पैनल में कई ऐंकर दिखने चाहिए.

ऐंकर की पोज़िशन की पुष्टि करना

ऐप्लिकेशन चलाने से पहले, यह पुष्टि करने के लिए कि सभी ऐसेट सही जगहों पर ऐंकर की गई हैं, यह तरीका अपनाएं:

  1. हायरार्की पैनल में, जोड़े गए ऐंकर पर क्लिक करें.
  2. F दबाएं.
  3. Scene व्यू में ऐंकर की जांच करें.
  4. अगर ऐंकर सही जगह पर नहीं है, तो टाइल पर स्नैप करें पर क्लिक करें या Latitude, Longitude या Editor Override Altitude वैल्यू को मैन्युअल तरीके से बदलें.

6. ऐसेट को एआर में देखना

अगर आपको ARCore के साथ काम करने वाले Android या iOS डिवाइस पर, ऐसेट को एआर में देखना है, तो यह तरीका अपनाएं:

  1. फ़ाइल > बिल्ड सेटिंग पर क्लिक करें. इसके बाद, Android या iOS बिल्ड प्लैटफ़ॉर्म में से कोई एक चुनें.
  2. प्लैटफ़ॉर्म बदलें पर क्लिक करें.
  3. पक्का करें कि आपका डेवलपमेंट डिवाइस कनेक्ट हो और डेवलपमेंट के लिए कॉन्फ़िगर किया गया हो.
  4. बनाएं और चलाएं पर क्लिक करें.
  5. पुष्टि करें कि ऐप्लिकेशन आपके डिवाइस पर काम करता हो.
  6. उन जगहों पर जाएं जहां आपने कॉन्टेंट को ऐंकर किया है. अगर आपने उदाहरणों में बदलाव नहीं किया है, तो ये जगहें सैन फ़्रांसिस्को की सार्वजनिक लाइब्रेरी हैं.

एआर का अनुभव देखना

7. नतीजा

बधाई हो! आपने एक Unity ऐप्लिकेशन बनाया है. यह ऐप्लिकेशन, Geospatial Creator और Google Maps Platform Places API का इस्तेमाल करके, शुरुआती टेंप्लेट की मदद से कई जियोस्पेशल अनुभव बनाता है. हमें उम्मीद है कि इस जानकारी का इस्तेमाल करके, जियोस्पेशल क्रिएटर कॉन्टेंट की पहुंच को बढ़ाया जा सकेगा!

ज़्यादा जानें