Streetscape Geometry API का इस्तेमाल करके, किसी सीन में इलाके, इमारतों या अन्य स्ट्रक्चर की ज्यामिति की जानकारी मिलती है. ज्यामिति का इस्तेमाल हिट-टेस्ट एपीआई के ज़रिए एआर (ऑगमेंटेड रिएलिटी) कॉन्टेंट को रोकने, रेंडर करने या उसे रखने के लिए किया जा सकता है. Streetscape Geometry का डेटा, Google Street View की तस्वीरों के ज़रिए लिया जाता है.
Geospatial API को सेट अप करना
Streetscape Geometry का इस्तेमाल करने के लिए, आपको अपने प्रोजेक्ट में Geospatial API को सेट अप करना होगा. Geospatial API को सेट अप करने के लिए, Geospatial API को चालू करना से जुड़े निर्देशों का पालन करें.
स्ट्रीटस्केप जियोमेट्री चालू करें
जब ArGeospatialMode
को ArGeospatialModeEnabled
पर और ArStreetscapeGeometryMode
को ArStreetscapeGeometryModeEnabled
पर सेट किया जाता है, तो Geospatial API, Streetscape की ज्यामिति का डेटा इकट्ठा करता है.
// Create a session config. ArConfig* ar_config = NULL; ArConfig_create(ar_session, &ar_config); // Enable the Geospatial API. ArConfig_setGeospatialMode(ar_session, ar_config, AR_GEOSPATIAL_MODE_ENABLED); CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS); // Enable Streetscape Geometry. ArConfig_setStreetscapeGeometryMode(ar_session, ar_config, AR_STREETSCAPE_GEOMETRY_MODE_ENABLED); CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS); // Release config resources. ArConfig_destroy(ar_config);
किसी ARCore सत्र में स्ट्रीटस्केप ज्यामिति पाएं
नतीजों को फ़िल्टर करने के लिए,ArSession_getAllTrackables()
और AR_TRACKABLE_STREETSCAPE_GEOMETRY
का इस्तेमाल करें.
ArTrackableList* trackable_list = NULL; ArTrackableList_create(ar_session, &trackable_list); ArSession_getAllTrackables(ar_session, AR_TRACKABLE_STREETSCAPE_GEOMETRY, trackable_list);
ArStreetscapeGeometry
को समझें
ArStreetscapeGeometry
में किसी इमारत की जानकारी है:
-
ArStreetscapeGeometry_getType()
StreetscapeGeometry की पहचान इलाके या इमारत के तौर पर करता है. -
ArStreetscapeGeometry_acquireMesh()
कोई ऐसा पॉलीगॉनArMesh
चुनें जो इस इलाके या इमारत से मेल खाता हो. -
ArStreetscapeGeometry_getMeshPose()
ज्यामिति की शुरुआत कहां से हुई.ArMesh
के सभी पॉइंट,ArStreetscapeGeometry_getMeshPose()
तक बदल जाने चाहिए. -
ArStreetscapeGeometry_getQuality()
इससे मेश डेटा की क्वालिटी के बारे में पता चलता है. जानकारी के लेवल CityGML 2.0 स्टैंडर्ड में बताए गए हैं.
बिल्डिंग LOD 1
AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_1
में, इमारत के पैरों के निशान होते हैं, जिन्हें सपाट ऊपरी हिस्से से, ऊपर की ओर निकाला जाता है. इमारत की ऊंचाई गलत हो सकती है.
बिल्डिंग एलओडी 2
AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_2
की फ़िडेलिटी वाली ज्यामिति ज़्यादा होगी. मेश दीवारें और छतें इमारत के आकार से ज़्यादा बारीकी से मेल खाएंगी. चिमनी या छत के छेद जैसी छोटी सुविधाएं अब भी मेश के बाहर निकल सकती हैं.
ArMesh
को समझें
ArMesh
एक पॉलीगॉन मेश है, जो स्ट्रीटस्केप जियोमेट्री की सतह को फिर से बनाने का तरीका दिखाता है.
हर ArMesh
में एक वर्टेक्स बफ़र और इंडेक्स बफ़र शामिल होता है:
ArMesh_getVertexListSize()
इस मेश में मौजूद वर्टेक्स की संख्या को फिर से हासिल करता है.ArMesh_getVertexList()
ArStreetscapeGeometry_getMeshPose()
के हिसाब से, मेश वर्टेक्स की जोड़ी गई पोज़िशन को निकालें.ArMesh_getIndexListSize()
इस मेश में मौजूद इंडेक्स की संख्या को फिर से हासिल करता है.ArMesh_getIndexList()
फ़ेस बनाने वाले वर्टेक्स का इंडेक्स पाएं.
ArStreetscapeGeometry
में एआर (ऑगमेंटेड रिएलिटी) कॉन्टेंट अटैच करना
Streetscape Geometry में एआर (ऑगमेंटेड रिएलिटी) कॉन्टेंट को जोड़ने के दो तरीके हैं:
- जियोस्पेशियल डेप्थ की सुविधा चालू करें और डेप्थ हिट-टेस्ट का इस्तेमाल करें. यह सुझाया गया और आसान तरीका है.
ArStreetscapeGeometry
से जुड़े दिए गए पोज़ में ऐंकर बनाने के लिए,ArTrackable_acquireNewAnchor()
का इस्तेमाल करें. यह ऐंकर अपनी ट्रैकिंग स्थिति को पैरंटArStreetscapeGeometry
से इनहेरिट करेगा.
ArStreetscapeGeometry
के लिए हिट-टेस्ट करना
ArFrame_hitTest
का इस्तेमाल, Streetscape Geometry की जांच करने के लिए किया जा सकता है. अगर चौराहे, दोनों का पता चलता है, तो ArHitResult
में हिट की जगह के बारे में पोज़ के बारे में जानकारी के साथ-साथ, हिट हुए ArStreetscapeGeometry
का रेफ़रंस भी शामिल होता है. इस स्ट्रीटस्केप ज्यामिति को ArTrackable_acquireNewAnchor()
से पास किया जा सकता है, ताकि इससे जुड़ा ऐंकर बनाया जा सके.
ArHitResultList *hit_result_list = NULL; ArHitResult *hit_result = NULL; ArHitResultList_create(ar_session, &hit_result_list); ArHitResult_create(ar_session, &hit_result); ArFrame_hitTestRay(ar_session, ar_frame, origin, direction, hit_result_list); ArHitResultList_getItem(ar_session, hit_result_list, 0, hit_result); ArAnchor *out_anchor = NULL; ArStatus status = ArHitResult_acquireNewAnchor(ar_session, hit_result, &out_anchor); CHECK(status == AR_SUCCESS);
जियोस्पेशियल गहराई चालू करें
भौगोलिक डेटा की गहराई डेप्थ डेटा को बेहतर बनाने के लिए, Streetस्केप जियोमेट्री को स्थानीय सेंसर इनपुट के साथ जोड़ती है. जियोस्पेशियल डेप्थ को चालू करने पर, आउटपुट डेप्थ और रॉ डेप्थ की इमेज में बदलाव किया जाता है. ऐसा करने पर, स्थानीय तौर पर देखी गई गहराई के साथ-साथ Streetscape की जियोमेट्री को भी शामिल किया जाता है. इससे डेप्थ का इस्तेमाल करके पोज़ को ज़्यादा सटीक बनाया जा सकता है.