Android NDK (C) पर अपने आस-पास की इमारतों और इलाके की जानकारी का इस्तेमाल करना

Streetscape Geometry API किसी सीन में इलाके, इमारतों या अन्य स्ट्रक्चर की ज्यामिति उपलब्ध कराता है. ज्यामिति का इस्तेमाल हिट-टेस्ट एपीआई के ज़रिए एआर कॉन्टेंट को शामिल करने, रेंडर करने या उसमें करने के लिए किया जा सकता है. Streetscape ज्यामिति डेटा, Google Street View की तस्वीरों के ज़रिए लिया जाता है.

Geospatial API को सेट अप करना

Streetscape Geometry का इस्तेमाल करने के लिए, आपको अपने प्रोजेक्ट में Geospatial API को सेट अप करना होगा. Geospatial API को सेट अप करने के लिए, Geospatial API को चालू करने से जुड़े निर्देशों का पालन करें.

Streetscape ज्यामिति चालू करें

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 सेशन में 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 में किसी बिल्डिंग की जानकारी शामिल है:

बिल्डिंग एलओडी 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 की ज्यामिति में एआर कॉन्टेंट अटैच करने के दो तरीके हैं:

ArStreetscapeGeometry के लिए हिट-टेस्ट करें

ArFrame_hitTest का इस्तेमाल, Streetscape की ज्यामिति के साथ हिट-टेस्ट करने के लिए किया जा सकता है. अगर कोई इंटरसेक्शन मिलता है, तो ArHitResult में हिट लोकेशन के बारे में पोज़ की जानकारी के साथ-साथ हिट ArStreetscapeGeometry का रेफ़रंस भी होता है. इस Streetscape ज्यामिति को 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);

जियोस्पेशल डेप्थ की सुविधा चालू करें

जियोस्पेशियल डेप्थ में स्ट्रीटस्केप ज्यामिति शामिल है इसमें स्थानीय सेंसर इनपुट इस्तेमाल किया जाता है, ताकि डेप्थ डेटा को बेहतर बनाया जा सके. जियोस्पेशियल डेप्थ की सुविधा चालू होने पर, आउटपुट डेप्थ और रॉ डेप्थ इमेज में बदलाव किया गया है, ताकि स्थानीय तौर पर देखी गई डेप्थ के साथ-साथ रास्टराइज़्ड स्ट्रीटस्केप ज्यामिति भी शामिल की जा सके. इससे डेप्थ का इस्तेमाल करके, पोज़ को ज़्यादा सटीक बनाने में मदद मिल सकती है.