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

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

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

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

Geospatial API सेट अप करना

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

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

जब GARGeospatialMode को GARGeospatialModeEnabled और GARStreetscapeGeometryMode को GARStreetscapeGeometryModeEnabled पर सेट किया जाता है, तब Geospatial API, Streetscape Geometry का डेटा हासिल करता है.

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

किसी ArCore सेशन में Streetscape की जियोमेट्री पाना

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

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

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

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

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

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

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

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

GARMesh एक पॉलीगॉन मेश है, जो Streetscape Geometry की सतह को फिर से बनाने की सुविधा दिखाता है. हर 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];