Streetscape Geometry API, किसी सीन में मौजूद इलाके, इमारतों या अन्य स्ट्रक्चर की ज्यामिति की जानकारी देते हैं. हिट-टेस्ट एपीआई की मदद से, ज्यामिति का इस्तेमाल ऑब्स्क्यूरेशन, रेंडरिंग या एआर कॉन्टेंट को प्लेस करने के लिए किया जा सकता है. Streetscape Geometry का डेटा, Google Street View की इमेज से मिलता है.
Geospatial API सेट अप करना
Streetscape Geometry का इस्तेमाल करने के लिए, आपको अपने प्रोजेक्ट में Geospatial API सेट अप करना होगा. जियोस्पेशियल एपीआई सेट अप करने के लिए, जियोस्पेशियल एपीआई चालू करने के निर्देशों का पालन करें.
स्ट्रीटस्केप ज्यामिति की सुविधा चालू करना
जब ArGeospatialMode
को ArGeospatialModeEnabled
और ArStreetscapeGeometryMode
को ArStreetscapeGeometryModeEnabled
पर सेट किया जाता है, तब Geospatial API, Streetscape Geometry का डेटा हासिल करता है.
// 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 सेशन में Streetscape की जियोमेट्री पाना
नतीजों को फ़िल्टर करने के लिए,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 स्टैंडर्ड में बताया गया है.
बिल्डिंग का एलओडी 1
AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_1
में, इमारत के फ़ुटप्रिंट को ऊपर की ओर एक सपाट टॉप तक एक्सट्रूज़न किया जाता है. हो सकता है कि इमारतों की ऊंचाई की जानकारी गलत हो.
बिल्डिंग का एलओडी 2
AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_2
में बेहतर क्वालिटी की ज्यामिति होगी. मेश की दीवारें और छतें, इमारत के आकार से ज़्यादा मेल खाएंगी. चिमनी या छत के वेंट जैसी छोटी चीज़ें, अब भी मेश के बाहर दिख सकती हैं.
ArMesh
के बारे में जानकारी
ArMesh
एक पॉलीगॉन मेश है, जो Streetscape Geometry की सतह को फिर से बनाने की सुविधा दिखाता है.
हर 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);
भौगोलिक डेटा की गहराई की सुविधा चालू करना
जियोस्पेशल डेप्थ, डेप्थ डेटा को बेहतर बनाने के लिए, Streetscape Geometry को लोकल सेंसर इनपुट के साथ जोड़ता है. भौगोलिक डेटा के आधार पर गहराई का पता लगाने की सुविधा चालू होने पर, आउटपुट की गहराई और रॉ डेप्थ इमेज में बदलाव किया जाता है. ऐसा इसलिए किया जाता है, ताकि स्थानीय तौर पर गहराई का पता लगाने के साथ-साथ, रेस्टर की गई Streetscape ज्यामिति को भी शामिल किया जा सके. इससे, डेप्थ का इस्तेमाल करके पोज़ की सटीक जानकारी मिल सकती है.