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

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

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

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

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

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

स्ट्रीटस्केप जियोमेट्री चालू करें

जब GeospatialMode को GeospatialMode.ENABLED पर और StreetscapeGeometryMode को StreetscapeGeometryMode.ENABLED पर सेट किया जाता है, तो Geospatial API, Streetscape की ज्यामिति का डेटा इकट्ठा करता है.

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 सत्र में स्ट्रीटस्केप ज्यामिति पाएं

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

Java

session.getAllTrackables(StreetscapeGeometry.class);

Kotlin

session.getAllTrackables(StreetscapeGeometry::class.java)

StreetscapeGeometry को समझें

StreetscapeGeometry में किसी इमारत की जानकारी है:

बिल्डिंग LOD 1

StreetscapeGeometry.Quality.BUILDING_LOD_1 में, इमारत के पैरों के निशान होते हैं, जिन्हें सपाट ऊपरी हिस्से से, ऊपर की ओर निकाला जाता है. इमारत की ऊंचाई गलत हो सकती है.

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

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

Mesh को समझें

Mesh एक पॉलीगॉन मेश है, जो स्ट्रीटस्केप जियोमेट्री की सतह को फिर से बनाने का तरीका दिखाता है. हर 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)
  }
}

जियोस्पेशियल गहराई चालू करें

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