1. शुरू करने से पहले
ARCore, Google का एक फ़्रेमवर्क है. इसका इस्तेमाल करके, स्मार्टफ़ोन पर ऑगमेंटेड रिएलिटी (एआर) के अनुभव बनाए जाते हैं. जियोस्पेशल स्ट्रीटस्केप ज्योमेट्री और रूफ़टॉप ऐंकर एपीआई की मदद से, एआर अनुभव को यह समझने में मदद मिलती है कि आपके उपयोगकर्ताओं के आस-पास कौनसी इमारतें हैं.
इस कोडलैब में, आपको एक एआर ऐप्लिकेशन बनाना है. यह ऐप्लिकेशन, आपके इलाके में सड़क के किनारे मौजूद इमारतों की ज्यामिति को विज़ुअलाइज़ करता है. साथ ही, आपको इसकी साइड को सजाने की सुविधा देता है. इसके बाद, आस-पास की छतों पर सजावट जोड़ने के लिए, रूफ़टॉप ऐंकर का इस्तेमाल किया जाता है.

ज़रूरी शर्तें
- AR के बारे में बुनियादी जानकारी
- ARCore Geospatial API के बारे में बुनियादी जानकारी
आपको क्या सीखने को मिलेगा
- ARCore Geospatial API का इस्तेमाल करने वाले Google Cloud प्रोजेक्ट को सेट अप करने का तरीका.
- Geospatial API से स्ट्रीटस्केप ज्यामिति पाने का तरीका.
- स्ट्रीटस्केप ज्यामिति से मिली इमारतों और इलाकों को विज़ुअलाइज़ करने का तरीका.
- मिले हुए पॉलीगॉन पर बुनियादी कैलकुलेशन कैसे करें.
- ज्यामिति पर हिट-टेस्ट कैसे किया जाता है.
- बिल्डिंग की छत पर कॉन्टेंट जोड़ने के लिए, रूफ़टॉप ऐंकर का इस्तेमाल कैसे करें.
आपको किन चीज़ों की ज़रूरत होगी
- ARCore के साथ काम करने वाला Android डिवाइस. यह डिवाइस, यूएसबी केबल की मदद से आपकी डेवलपमेंट मशीन से कनेक्ट होना चाहिए. साथ ही, इस पर यूएसबी डीबगिंग की सुविधा कॉन्फ़िगर होनी चाहिए.
- Android डेवलपमेंट डिवाइस पर, Google Play Services for AR 1.37 या इसके बाद का वर्शन इंस्टॉल होना चाहिए.
- Android ऐप्लिकेशन बनाने के लिए, Android Studio इंस्टॉल और कॉन्फ़िगर किया गया हो.
2. अपना एनवायरमेंट सेट अप करने का तरीका
Kotlin और Android Studio के साथ Geospatial API का इस्तेमाल करने के लिए, आपके पास Google Cloud प्रोजेक्ट और हमारा स्टार्टर प्रोजेक्ट होना चाहिए.
Google Cloud प्रोजेक्ट सेट अप करना
ARCore Geospatial API, Google Cloud से कनेक्ट होता है. इससे, Google Street View की सुविधा वाले इलाकों में, Google के विज़ुअल पोज़िशनिंग सिस्टम (वीपीए) से स्थानीय जानकारी मिलती है.
अपने प्रोजेक्ट में इस सर्वर का इस्तेमाल करने के लिए, यह तरीका अपनाएं:
- Google Cloud में कोई प्रोजेक्ट बनाएं.

- प्रोजेक्ट का नाम फ़ील्ड में, कोई नाम डालें. जैसे,
ARCore Geospatial API project. इसके बाद, कोई भी जगह चुनें. - बनाएं पर क्लिक करें.
- प्रोजेक्ट चुनने वाले पेज पर, Google Cloud Console में जाकर, प्रोजेक्ट बनाएं पर क्लिक करें.
- इस प्रोजेक्ट के लिए ARCore API देखने के लिए, इस लिंक पर क्लिक करें. इसके बाद, चालू करें पर क्लिक करें:
- अपने प्रोजेक्ट के लिए एपीआई पासकोड बनाएं:
- एपीआई और सेवाएं में जाकर, क्रेडेंशियल को चुनें.
- क्रेडेंशियल बनाएं पर क्लिक करें और एपीआई पासकोड चुनें.
- कुंजी को नोट कर लें, क्योंकि आपको इसकी ज़रूरत बाद में पड़ेगी.
आपने एपीआई-कुंजी की पुष्टि करने की सुविधा के साथ एक Google Cloud प्रोजेक्ट बनाया है. अब आप सैंपल प्रोजेक्ट में Geospatial API का इस्तेमाल करने के लिए तैयार हैं.
Android Studio सेट अप करना
Geospatial API का इस्तेमाल शुरू करने के लिए, हमने एक स्टार्टर प्रोजेक्ट उपलब्ध कराया है. इसमें Geospatial API के साथ इंटिग्रेट किए गए ARCore प्रोजेक्ट की बुनियादी बातें शामिल हैं.
Android Studio सेट अप करने के लिए, यह तरीका अपनाएं:
- Android Studio खोलें और इनमें से कोई एक काम करें:
- अगर आपने पहले से ही कोई प्रोजेक्ट खोला हुआ है, तो फ़ाइल > नया > वर्शन कंट्रोल से प्रोजेक्ट पर क्लिक करें.
- अगर आपको Android Studio में आपका स्वागत है विंडो दिखती है, तो वीसीएस से पाएं पर क्लिक करें.

- प्रोजेक्ट इंपोर्ट करने के लिए, Git को चुनें और
https://github.com/google-ar/codelab-streetscape-geometry-rooftop-anchors.gitडालें.
एपीआई पासकोड को Android Studio प्रोजेक्ट के साथ इंटिग्रेट करना
Google Cloud से मिले एपीआई पासकोड को अपने प्रोजेक्ट से जोड़ने के लिए, यह तरीका अपनाएं:
- Android Studio में, app > src पर क्लिक करें. इसके बाद,
AndroidManifest.xmlपर दो बार क्लिक करें. - नीचे दी गई
meta-dataएंट्री ढूंढें:<meta-data android:name="com.google.android.ar.API_KEY" android:value="API_KEY" /> API_KEYप्लेसहोल्डर को Google Cloud प्रोजेक्ट में बनाए गए एपीआई पासकोड से बदलें.com.google.android.ar.API_KEYमें सेव की गई वैल्यू, इस ऐप्लिकेशन को Geospatial API इस्तेमाल करने की अनुमति देती है.
अपने प्रोजेक्ट की पुष्टि करना
- अपने प्रोजेक्ट की पुष्टि करने के लिए, अपने डेवलपमेंट डिवाइस पर ऐप्लिकेशन चलाएँ. आपको स्क्रीन के सबसे ऊपर, कैमरे का व्यू और जियोस्पेशल डीबग की जानकारी दिखेगी. आपको ऐसे बटन और कंट्रोल भी दिखेंगे जो काम नहीं करते. इस कोडलैब के दौरान, आपको अपने प्रोजेक्ट में उन बटन और कंट्रोल को प्रोग्राम करना होगा.

3. स्ट्रीटस्केप-ज्यामिति डेटा को विज़ुअलाइज़ करना
इस बात की पुष्टि करने के बाद कि Geospatial API आपके डिवाइस पर काम करता है, Geospatial API से स्ट्रीटस्केप ज्योमेट्री पाएं.
स्ट्रीटस्केप की ज्यामिति की सुविधा चालू करना
StreetscapeGeometryActivity.ktफ़ाइल में, यह लाइन ढूंढें:// TODO: Enable Streetscape Geometry.- इस लाइन के बाद, streetscape-geometry मोड चालू करें:
Geospatial API और streetscape-geometry मोड चालू होने पर, आपका ऐप्लिकेशन उपयोगकर्ता के आस-पास की streetscape-geometry की जानकारी पा सकता है.streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED
स्ट्रीटस्केप की ज्यामिति पाना
StreetscapeGeometryActivity.ktफ़ाइल में, यह लाइन ढूंढें:// TODO: Obtain Streetscape Geometry.- इस लाइन के बाद, सभी
Trackableऑब्जेक्ट पाकर औरStreetscapeGeometryके हिसाब से फ़िल्टर करके, स्ट्रीटस्केप की ज्यामिति पाएं: इन ज्यामितियों का इस्तेमाल, सैंपल प्रोजेक्ट में दिए गए सामान्य विज़ुअलाइज़ेशन में किया जाता है. इस विज़ुअलाइज़ेशन में, हर इमारत या इलाके के पॉलीगॉन को अलग-अलग रंग में दिखाया गया है.val streetscapeGeometry = session.getAllTrackables(StreetscapeGeometry::class.java) - अगली लाइन में, यह कोड जोड़ें:
streetscapeGeometryRenderer.render(render, streetscapeGeometry) - ऐप्लिकेशन चलाएं और अपने इलाके में किसी इमारत पर जाएं.
- जियोस्पेशल लोकलाइज़ेशन पूरा होने के बाद,
सेटिंग पर टैप करें. इसके बाद, स्ट्रीटस्केप-ज्यामिति विज़ुअलाइज़ेशन चालू करें. - किसी इमारत को एआर में देखें. सेगमेंट किए गए हर बिल्डिंग का अपना रंग होता है. साथ ही, सबसे बीच वाली ज्यामिति के
QualityऔरTypeएनम दिखाए जाते हैं.

4. स्ट्रीटस्केप-ज्यामिति डेटा की मदद से हिट-टेस्ट करना
अब आपको स्ट्रीटस्केप की ज्यामिति दिख रही है. इसलिए, बिल्डिंग को सजाने के लिए हिट-टेस्ट का इस्तेमाल किया जा सकता है. हिट-टेस्ट से, वर्चुअल ज्यामिति और रे के बीच इंटरसेक्शन का पता चलता है. उपयोगकर्ता जिस ज्यामिति पर टैप करता है उसे ढूंढने के लिए, हिट-टेस्ट का इस्तेमाल किया जाता है.
हिट-टेस्ट करना
इस सेक्शन में, उपयोगकर्ता के बिल्डिंग की ज्यामिति पर टैप करने पर, बिल्डिंग के सामने वाले हिस्से पर स्टार लगाया जाता है. इसके लिए, आपको उपयोगकर्ता के नज़रिए से हिट-टेस्ट करना होगा. साथ ही, यह रजिस्टर करना होगा कि एआर ऑब्जेक्ट को बाहर निकलते समय कौनसे ऑब्जेक्ट मिले. इसके बाद, इस जानकारी का इस्तेमाल यह देखने के लिए किया जाता है कि उपयोगकर्ता ने किसी बिल्डिंग पॉलीगॉन पर टैप किया है या नहीं.
StreetscapeCodelabRenderer.ktफ़ाइल में, यह लाइन ढूंढें:// TODO: determine the Streetscape Geometry at the center of the viewport- इस लाइन के बाद, यह कोड जोड़ें:
यह कोड, सेंटर के निर्देशांकों का इस्तेमाल करके, सड़क के नज़ारे की ऐसी ज्यामिति ढूंढता है जो एक इमारत है. इस नतीजे का इस्तेमाल, सजावट जोड़ने के लिए किया जाता है.val centerHits = frame.hitTest(centerCoords[0], centerCoords[1]) val hit = centerHits.firstOrNull { val trackable = it.trackable trackable is StreetscapeGeometry && trackable.type == StreetscapeGeometry.Type.BUILDING } ?: return
टैप करने पर स्टार वाली सजावट जोड़ना
StreetscapeCodelabRenderer.ktफ़ाइल में, यह लाइन ढूंढें:// TODO: Create an anchor for a star, and add it to the starAnchors object.- इस लाइन के बाद, यह कोड जोड़ें:
val transformedPose = ObjectPlacementHelper.createStarPose(hit.hitPose) val anchor = hit.trackable.createAnchor(transformedPose) starAnchors.add(anchor)ObjectPlacementHelperक्लास, हिट पोज़ को देखकर यह तय करती है कि स्टार को कहां रखना है.starAnchorsऑब्जेक्ट का इस्तेमाल, एआर व्यू में स्टार रेंडर करने के लिए किया जाता है.
इसे आज़माएं
- ऐप्लिकेशन चलाएं और अपने इलाके में किसी इमारत पर जाएं.
- जियोस्पेशल लोकलाइज़ेशन की प्रोसेस पूरी होने के बाद, कैमरे को बिल्डिंग पर पॉइंट करें और स्क्रीन पर टैप करें. आपको स्क्रीन के बीच में मौजूद बिल्डिंग पर एक स्टार दिखेगा.

5. छत पर लगे ऐंकर के डेटा का इस्तेमाल करना
आखिर में, इमारत की छत पर सजावट जोड़ने के लिए, रूफ़टॉप ऐंकर का इस्तेमाल किया जाता है. रूफ़टॉप ऐंकर की मदद से, अक्षांश और देशांतर की जानकारी का इस्तेमाल करके, एआर ऐंकर को इमारतों की छत से जोड़ा जा सकता है. इन ऐंकर का इस्तेमाल करके, उपयोगकर्ता के आस-पास की इमारतों से गुब्बारे अटैच किए जाते हैं.
बैलून मोड में व्यवहार जोड़ना
प्रोजेक्ट में ऐसेट प्लेसमेंट के दो मोड हैं: सनफ़्लावर मोड, जिसका इस्तेमाल आपने पहले ही कर लिया है और दूसरा है बलून मोड.
बैलून मोड के लिए प्रोग्रामिंग करने के लिए, यह तरीका अपनाएं:
StreetscapeCodelabRenderer.ktफ़ाइल में, यह लाइन ढूंढें:// TODO: Create an anchor for a balloon and add it to the balloonAnchors object.- गुब्बारे को अच्छी तरह से चिपकाने के लिए, हिट पोज़ का इस्तेमाल करें:
val transformedPose = ObjectPlacementHelper.createBalloonPose(frame.camera.pose, hit.hitPose) transformedPoseवैरिएबल को जियोस्पेशल पोज़ में बदलें:val earth = session?.earth ?: return val geospatialPose = earth.getGeospatialPose(transformedPose)- बदले गए अक्षांश और देशांतर की मदद से, छत पर ऐंकर बनाएं:
earth.resolveAnchorOnRooftopAsync( geospatialPose.latitude, geospatialPose.longitude, 0.0, transformedPose.qx(), transformedPose.qy(), transformedPose.qz(), transformedPose.qw() ) { anchor, state -> if (!state.isError) { balloonAnchors.add(anchor) } }
इसे आज़माएं
- ऐप्लिकेशन चलाएं और अपने इलाके में किसी इमारत पर जाएं.
- जियोस्पेशल लोकलाइज़ेशन पूरा होने के बाद, बलून मोड पर जाएं और किसी इमारत पर टैप करें. आपको इमारत के ऊपर एक गुब्बारा दिखता है.

6. नतीजा
बधाई हो! आपने एक ऐसा एआर ऐप्लिकेशन बनाया है जो आपके इलाके में सड़क के नज़ारे की ज्यामिति दिखाता है. साथ ही, आपको इसकी साइड को तारों से सजाने की सुविधा देता है. आपने अपने आस-पास की छतों पर गुब्बारे जोड़ने के लिए, रूफ़टॉप ऐंकर का भी इस्तेमाल किया.
