iOS पर अपने आस-पास की इमारतों और इलाकों का इस्तेमाल करें

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

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

GeospatialExample ऐप्लिकेशन से पता चलता है कि Streetscape Geometrys को फ़ेच और रेंडर कैसे किया जाता है.

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

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

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

जब GARGeospatialMode को GARGeospatialModeEnabled पर और GARStreetscapeGeometryMode को GARStreetscapeGeometryModeEnabled पर सेट किया जाता है, तो Geospatial API, Streetscape की ज्यामिति का डेटा इकट्ठा करता है.

GARSessionConfiguration *configuration = [[GARSessionConfiguration alloc] init];
configuration.geospatialMode = GARGeospatialModeEnabled;
configuration.streetscapeGeometryMode = GARStreetscapeGeometryModeEnabled;
[garSession setConfiguration:configuration error:&error];

किसी ARCore सत्र में स्ट्रीटस्केप ज्यामिति पाएं

सभी GARStreetscapeGeometry ऑब्जेक्ट पाने के लिए, GARFrame.streetscapeGeometries का इस्तेमाल करें.

GARStreetscapeGeometry को समझें

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

बिल्डिंग LOD 1

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

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

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

GARMesh को समझें

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

  • GARMesh.vertexCount
    इस मेश में मौजूद वर्टेक्स की संख्या को फिर से हासिल करता है.
  • GARMesh.vertices
    GARStreetscapeGeometry.meshTransform के हिसाब से, मेश वर्टेक्स की जोड़ी गई पोज़िशन को निकालें.
  • GARMesh.triangleCount
    इस मेश में मौजूद इंडेक्स की संख्या को फिर से हासिल करता है.
  • GARMesh.triangles
    फ़ेस बनाने वाले वर्टेक्स का इंडेक्स पाएं.

GARStreetscapeGeometry में एआर (ऑगमेंटेड रिएलिटी) कॉन्टेंट अटैच करना

GARStreetscapeGeometry.meshTransform के पास दिए गए पोज़ में ऐंकर बनाने के लिए, GARSesssion.createAnchorOnStreetscapeGeometry:transform:error: का इस्तेमाल करें. यह ऐंकर अपनी ट्रैकिंग स्थिति को पैरंट GARStreetscapeGeometry से इनहेरिट करेगा.

GARStreetscapeGeometry के लिए हिट-टेस्ट करना

GARSession.raycastStreetscapeGeometry:direction:error: का इस्तेमाल, Streetscape Geometry की जांच करने के लिए किया जा सकता है. अगर चौराहे, दोनों का पता चलता है, तो GARStreetscapeGeometryRaycastResult में हिट की जगह के बारे में पोज़ के बारे में जानकारी के साथ-साथ, हिट हुए GARStreetscapeGeometry का रेफ़रंस भी शामिल होता है. इस स्ट्रीटस्केप ज्यामिति को GARSesssion.createAnchorOnStreetscapeGeometry:transform:error: से पास किया जा सकता है, ताकि इससे जुड़ा ऐंकर बनाया जा सके.

NSArray<GARStreetscapeGeometryRaycastResult *> *results =
    [session raycastStreetscapeGeometry:arRaycastQuery.origin
                              direction:arRaycastQuery.direction
                                  error:&error];
[session createAnchorOnStreetscapeGeometry:results[0].streetscapeGeometry
                                 transform:results[0].worldTransform
                                     error:&error];