Streetscape Geometry API किसी सीन में इलाके, इमारतों या अन्य स्ट्रक्चर की ज्यामिति उपलब्ध कराता है. हिट-टेस्ट एपीआई की मदद से, ज्यामिति का इस्तेमाल ऑब्स्क्यूरेशन, रेंडरिंग या एआर कॉन्टेंट को प्लेस करने के लिए किया जा सकता है. Streetscape ज्यामिति डेटा, Google Street View की तस्वीरों के ज़रिए लिया जाता है.
Geospatial API को सेट अप करना
Streetscape Geometry का इस्तेमाल करने के लिए, आपको अपने प्रोजेक्ट में Geospatial API को सेट अप करना होगा. जियोस्पेशियल एपीआई सेट अप करने के लिए, जियोस्पेशियल एपीआई चालू करने के निर्देशों का पालन करें.
Streetscape ज्यामिति चालू करें
जब 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 ज्यामिति का सरफ़ेस रीकंस्ट्रक्शन दिखाता है.
हर 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 ज्यामिति को भी शामिल किया जा सके. इससे डेप्थ का इस्तेमाल करके, पोज़ को ज़्यादा सटीक बनाने में मदद मिल सकती है.