Android SDK (Kotlin/Java) पर अपने आस-पास की इमारतों और इलाकों का इस्तेमाल करें

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

सैंपल आज़माएं

geospatial_java सैंपल ऐप्लिकेशन में, Streetscape की ज्यामिति पाने और उसे रेंडर करने का तरीका बताया गया है.

Geospatial API सेट अप करना

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

स्ट्रीटस्केप ज्यामिति की सुविधा चालू करना

जब GeospatialMode को GeospatialMode.ENABLED और StreetscapeGeometryMode को StreetscapeGeometryMode.ENABLED पर सेट किया जाता है, तब Geospatial API, Streetscape Geometry का डेटा हासिल करता है.

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 सेशन में Streetscape की जियोमेट्री पाना

नतीजों को फ़िल्टर करने के लिए, Session.getAllTrackables() का इस्तेमाल करें. इसके बाद, StreetscapeGeometry.class का इस्तेमाल करें.

Java

session.getAllTrackables(StreetscapeGeometry.class);

Kotlin

session.getAllTrackables(StreetscapeGeometry::class.java)

StreetscapeGeometry के बारे में जानकारी

StreetscapeGeometry में किसी बिल्डिंग के बारे में जानकारी होती है:

बिल्डिंग का एलओडी 1

StreetscapeGeometry.Quality.BUILDING_LOD_1 में, इमारत के फ़ुटप्रिंट को ऊपर की ओर एक सपाट टॉप तक एक्सट्रूज़न किया जाता है. हो सकता है कि इमारतों की ऊंचाई की जानकारी गलत हो.

बिल्डिंग का एलओडी 2

StreetscapeGeometry.Quality.BUILDING_LOD_2 में बेहतर क्वालिटी की ज्यामिति होगी. मेश की दीवारें और छतें, इमारत के आकार से ज़्यादा मेल खाएंगी. चिमनी या छत के वेंट जैसी छोटी चीज़ें, अब भी मेश के बाहर दिख सकती हैं.

Mesh के बारे में जानकारी

Mesh एक पॉलीगॉन मेश है, जो Streetscape Geometry की सतह को फिर से बनाने का तरीका दिखाता है. हर Mesh में एक वर्टिक्स बफ़र और इंडेक्स बफ़र शामिल होता है:

  • Mesh.getVertexListSize()
    इस मेश में मौजूद वर्टिसेस की संख्या दिखाता है.
  • Mesh.getVertexList()
    StreetscapeGeometry.getMeshPose() के हिसाब से निर्देशांक में, मेश वर्टिसेस की जोड़ी गई पोज़िशन पाएं.
  • Mesh.getIndexListSize()
    इस मेश में इंडेक्स की संख्या दिखाता है.
  • Mesh.getIndexList()
    किसी चेहरे को बनाने वाले वर्टेक्स के इंडेक्स पाएं.

StreetscapeGeometry से एआर कॉन्टेंट अटैच करना

Streetscape Geometry में एआर कॉन्टेंट अटैच करने के दो तरीके हैं:

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)
  }
}

भौगोलिक डेटा की गहराई की सुविधा चालू करना

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