Streetscape Geometry API किसी सीन में इलाके, इमारतों या अन्य स्ट्रक्चर की ज्यामिति उपलब्ध कराता है. ज्यामिति का इस्तेमाल हिट-टेस्ट एपीआई की मदद से एआर कॉन्टेंट को शामिल करने, रेंडर करने या रखने के लिए किया जा सकता है. Streetscape ज्यामिति डेटा, Google Street View की तस्वीरों के ज़रिए लिया जाता है.
सैंपल आज़माएं
geospatial_java सैंपल ऐप्लिकेशन में, Streetscape की ज्यामिति पाने और उन्हें रेंडर करने का तरीका बताया गया है.
Geospatial API को सेट अप करना
Streetscape Geometry का इस्तेमाल करने के लिए, आपको अपने प्रोजेक्ट में Geospatial API को सेट अप करना होगा. Geospatial API को सेट अप करने के लिए, Geospatial API को चालू करने से जुड़े निर्देशों का पालन करें.
Streetscape ज्यामिति चालू करें
GeospatialMode
को GeospatialMode.ENABLED
और StreetscapeGeometryMode
को StreetscapeGeometryMode.ENABLED
पर सेट करने पर Geospatial API को Streetscape जियोमेट्री डेटा मिल जाता है.
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 ज्यामिति का सरफ़ेस रीकंस्ट्रक्शन दिखाता है.
हर Mesh
में एक वर्टेक्स बफ़र और इंडेक्स बफ़र होता है:
Mesh.getVertexListSize()
इस मेश में वर्टेक्स की संख्या का पता लगाता है.Mesh.getVertexList()
के सापेक्ष निर्देशांक में, मेश शीर्षों की जुड़ी हुई स्थिति पाएंStreetscapeGeometry.getMeshPose()
.Mesh.getIndexListSize()
इस मेश में इंडेक्स की संख्या की जानकारी हासिल करता है.Mesh.getIndexList()
चेहरे को बनाने वाले शीर्षों के इंडेक्स पाएं.
StreetscapeGeometry
में एआर (ऑगमेंटेड रिएलिटी) कॉन्टेंट अटैच करें
Streetscape की ज्यामिति में एआर कॉन्टेंट अटैच करने के दो तरीके हैं:
- जियोस्पेशियल डेप्थ चालू करें और डेप्थ हिट-टेस्ट का इस्तेमाल करें. यह सबसे आसान और सुझाया गया तरीका है.
StreetscapeGeometry
के साथ अटैच किए गए किसी पोज़ में ऐंकर बनाने के लिए,Trackable.createAnchor()
का इस्तेमाल करें. यह ऐंकर, पैरंटStreetscapeGeometry
से ट्रैकिंग की स्थिति इनहेरिट करेगा.
StreetscapeGeometry
के लिए हिट-टेस्ट करें
Frame.hitTest()
का इस्तेमाल, Streetscape की ज्यामिति के साथ हिट-टेस्ट करने के लिए किया जा सकता है. अगर इंटरसेक्शन मिलते हैं, तो HitResult
में हिट की गई जगह के बारे में पोज़ की जानकारी होती है. साथ ही, उस StreetscapeGeometry
का रेफ़रंस भी होता है जिसे हिट किया गया था. इस Streetscape ज्यामिति को 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) } }
जियोस्पेशल डेप्थ की सुविधा चालू करें
जियोस्पेशियल डेप्थ में स्ट्रीटस्केप ज्यामिति शामिल है इसमें स्थानीय सेंसर इनपुट इस्तेमाल किया जाता है, ताकि डेप्थ डेटा को बेहतर बनाया जा सके. जियोस्पेशियल डेप्थ की सुविधा चालू होने पर, आउटपुट डेप्थ और रॉ डेप्थ इमेज में बदलाव किया गया है, ताकि स्थानीय तौर पर देखी गई डेप्थ के साथ-साथ रास्टराइज़्ड स्ट्रीटस्केप ज्यामिति भी शामिल की जा सके. इससे, डेप्थ का इस्तेमाल करके पोज़ की सटीक जानकारी मिल सकती है.