Streetscape Geometry API का इस्तेमाल करके, किसी सीन में इलाके, इमारतों या अन्य स्ट्रक्चर की ज्यामिति की जानकारी मिलती है. ज्यामिति का इस्तेमाल हिट-टेस्ट एपीआई के ज़रिए एआर (ऑगमेंटेड रिएलिटी) कॉन्टेंट को रोकने, रेंडर करने या उसे रखने के लिए किया जा सकता है. Streetscape Geometry का डेटा, Google Street View की तस्वीरों के ज़रिए लिया जाता है.
सैंपल आज़माएं
geospatial_java सैंपल ऐप्लिकेशन में, Streetscape GeoMetry की जानकारी पाने और रेंडर करने का तरीका बताया गया है.
Geospatial API को सेट अप करना
Streetscape Geometry का इस्तेमाल करने के लिए, आपको अपने प्रोजेक्ट में Geospatial API को सेट अप करना होगा. Geospatial API को सेट अप करने के लिए, Geospatial API को चालू करना से जुड़े निर्देशों का पालन करें.
स्ट्रीटस्केप जियोमेट्री चालू करें
जब 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 सत्र में स्ट्रीटस्केप ज्यामिति पाएं
नतीजों को फ़िल्टर करने के लिए,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 स्टैंडर्ड में बताए गए हैं.
बिल्डिंग LOD 1
StreetscapeGeometry.Quality.BUILDING_LOD_1
में, इमारत के पैरों के निशान होते हैं, जिन्हें सपाट ऊपरी हिस्से से, ऊपर की ओर निकाला जाता है. इमारत की ऊंचाई गलत हो सकती है.
बिल्डिंग एलओडी 2
StreetscapeGeometry.Quality.BUILDING_LOD_2
की फ़िडेलिटी वाली ज्यामिति ज़्यादा होगी. मेश दीवारें और छतें इमारत के आकार से ज़्यादा बारीकी से मेल खाएंगी. चिमनी या छत के छेद जैसी छोटी सुविधाएं अब भी मेश के बाहर निकल सकती हैं.
Mesh
को समझें
Mesh
एक पॉलीगॉन मेश है, जो स्ट्रीटस्केप जियोमेट्री की सतह को फिर से बनाने का तरीका दिखाता है.
हर 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) } }
जियोस्पेशियल गहराई चालू करें
भौगोलिक डेटा की गहराई डेप्थ डेटा को बेहतर बनाने के लिए, Streetस्केप जियोमेट्री को स्थानीय सेंसर इनपुट के साथ जोड़ती है. जियोस्पेशियल डेप्थ को चालू करने पर, आउटपुट डेप्थ और रॉ डेप्थ की इमेज में बदलाव किया जाता है. ऐसा करने पर, स्थानीय तौर पर देखी गई गहराई के साथ-साथ Streetscape की जियोमेट्री को भी शामिल किया जाता है. इससे डेप्थ का इस्तेमाल करके पोज़ को ज़्यादा सटीक बनाया जा सकता है.