Streetscape Geometry API, किसी सीन में मौजूद इलाके, इमारतों या अन्य स्ट्रक्चर की ज्यामिति की जानकारी देते हैं. हिट-टेस्ट एपीआई की मदद से, ज्यामिति का इस्तेमाल ऑब्स्क्यूरेशन, रेंडरिंग या एआर कॉन्टेंट को प्लेस करने के लिए किया जा सकता है. Streetscape Geometry का डेटा, Google Street View की इमेज से मिलता है.
सैंपल आज़माएं
geospatial_java सैंपल ऐप्लिकेशन में, Streetscape की ज्यामिति पाने और उसे रेंडर करने का तरीका बताया गया है.
Geospatial API सेट अप करना
Streetscape Geometry का इस्तेमाल करने के लिए, आपको अपने प्रोजेक्ट में Geospatial API सेट अप करना होगा. जियोस्पेशियल एपीआई सेट अप करने के लिए, जियोस्पेशियल एपीआई चालू करने के निर्देशों का पालन करें.
स्ट्रीटस्केप ज्यामिति की सुविधा चालू करना
जब GeospatialMode
को GeospatialMode.ENABLED
और StreetscapeGeometryMode
को StreetscapeGeometryMode.ENABLED
पर सेट किया जाता है, तब Geospatial API, Streetscape Geometry का डेटा हासिल करता है.
Java
Config config = session.getConfig(); // Streetscape Geometry requires the Geospatial API to be enabled. config.setGeospatialMode(Config.GeospatialMode.ENABLED); // Enable Streetscape Geometry. config.setStreetscapeGeometryMode(Config.StreetscapeGeometryMode.ENABLED); session.configure(config);
Kotlin
session.configure( session.config.apply { // Streetscape Geometry requires the Geospatial API to be enabled. geospatialMode = Config.GeospatialMode.ENABLED // Enable Streetscape Geometry. streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED } )
किसी ArCore सेशन में Streetscape की जियोमेट्री पाना
नतीजों को फ़िल्टर करने के लिए,Session.getAllTrackables()
का इस्तेमाल करें. इसके बाद, StreetscapeGeometry.class
का इस्तेमाल करें.
Java
session.getAllTrackables(StreetscapeGeometry.class);
Kotlin
session.getAllTrackables(StreetscapeGeometry::class.java)
StreetscapeGeometry
के बारे में जानकारी
StreetscapeGeometry
में किसी बिल्डिंग के बारे में जानकारी होती है:
-
StreetscapeGeometry.getType()
StreetscapeGeometry को टेरेन या बिल्डिंग के तौर पर पहचानता है. -
StreetscapeGeometry.getMesh()
इस इलाके या इमारत से जुड़ा पॉलीगॉनMesh
पाएं. -
StreetscapeGeometry.getMeshPose()
यह ज्यामिति के ऑरिजिन के बारे में बताता है.Mesh
में मौजूद सभी पॉइंट कोStreetscapeGeometry.getMeshPose()
से बदला जाना चाहिए. -
StreetscapeGeometry.getQuality()
मेश डेटा की क्वालिटी दिखाता है. ज़्यादा जानकारी के लेवल के बारे में CityGML 2.0 स्टैंडर्ड में बताया गया है.
बिल्डिंग का एलओडी 1
StreetscapeGeometry.Quality.BUILDING_LOD_1
में, इमारत के फ़ुटप्रिंट को ऊपर की ओर एक सपाट टॉप तक एक्सट्रूज़न किया जाता है. हो सकता है कि इमारतों की ऊंचाई की जानकारी गलत हो.
बिल्डिंग का एलओडी 2
StreetscapeGeometry.Quality.BUILDING_LOD_2
में बेहतर क्वालिटी की ज्यामिति होगी. मेश की दीवारें और छतें, इमारत के आकार से ज़्यादा मेल खाएंगी. चिमनी या छत के वेंट जैसी छोटी चीज़ें, अब भी मेश के बाहर दिख सकती हैं.
Mesh
के बारे में जानकारी
Mesh
एक पॉलीगॉन मेश है, जो Streetscape Geometry की सतह को फिर से बनाने का तरीका दिखाता है.
हर Mesh
में एक वर्टिक्स बफ़र और इंडेक्स बफ़र शामिल होता है:
Mesh.getVertexListSize()
इस मेश में मौजूद वर्टिसेस की संख्या दिखाता है.Mesh.getVertexList()
StreetscapeGeometry.getMeshPose()
के हिसाब से निर्देशांक में, मेश वर्टिसेस की जोड़ी गई पोज़िशन पाएं.Mesh.getIndexListSize()
इस मेश में इंडेक्स की संख्या दिखाता है.Mesh.getIndexList()
किसी चेहरे को बनाने वाले वर्टेक्स के इंडेक्स पाएं.
StreetscapeGeometry
से एआर कॉन्टेंट अटैच करना
Streetscape Geometry में एआर कॉन्टेंट अटैच करने के दो तरीके हैं:
- जियोस्पेशल डेप्थ चालू करें और डेप्थ हिट-टेस्ट का इस्तेमाल करें. यह सबसे आसान और सुझाया गया तरीका है.
StreetscapeGeometry
से जुड़े किसी पोज़ में ऐंकर बनाने के लिए,Trackable.createAnchor()
का इस्तेमाल करें. यह ऐंकर, पैरंटStreetscapeGeometry
से ट्रैकिंग की स्थिति इनहेरिट करेगा.
StreetscapeGeometry
के लिए हिट-टेस्ट करना
Frame.hitTest()
का इस्तेमाल, Streetscape Geometry के हिसाब से हिट-टेस्ट करने के लिए किया जा सकता है. अगर इंटरसेक्शन मिलते हैं, तो HitResult
में हिट की गई जगह के बारे में पोज़ की जानकारी होती है. साथ ही, उस StreetscapeGeometry
का रेफ़रंस भी होता है जिसे हिट किया गया था. इस स्ट्रीटस्केप ज्यामिति को Trackable.createAnchor()
को पास किया जा सकता है, ताकि उससे जुड़ा ऐंकर बनाया जा सके.
Java
for (HitResult hit : frame.hitTest(singleTapEvent)) { if (hit.getTrackable() instanceof StreetscapeGeometry) { Pose hitPose = hit.getHitPose(); hit.getTrackable().createAnchor(hitPose); } }
Kotlin
for (hit in frame.hitTest(singleTapEvent)) { if (hit.trackable is StreetscapeGeometry) { val hitPose = hit.hitPose hit.trackable.createAnchor(hitPose) } }
भौगोलिक डेटा की गहराई की सुविधा चालू करना
जियोस्पेशल डेप्थ, डेप्थ डेटा को बेहतर बनाने के लिए, Streetscape Geometry को लोकल सेंसर इनपुट के साथ जोड़ता है. भौगोलिक डेटा के आधार पर गहराई का पता लगाने की सुविधा चालू होने पर, आउटपुट की गहराई और रॉ डेप्थ इमेज में बदलाव किया जाता है. ऐसा इसलिए किया जाता है, ताकि स्थानीय तौर पर गहराई का पता लगाने के साथ-साथ, रेस्टर की गई Streetscape ज्यामिति को भी शामिल किया जा सके. इससे, डेप्थ का इस्तेमाल करके पोज़ की सटीक जानकारी मिल सकती है.