जियोस्पेशियल डेप्थ की मदद से रेंज बढ़ाएं

जियोस्पेशियल डेप्थ हीरो

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

ARCore depth API कॉल में अब कैमरे से आस-पास के हिसाब से आंकड़े पाए जा सकते हैं. साथ ही, Streetस्केप जियोमेट्री से इमारतों और इलाकों की जानकारी को एक डेप्थ इमेज में मर्ज किया जा सकता है.

मेरे डिवाइस पर यह सुविधा काम नहीं करती

जियोस्पेशियल डेप्थ उन सभी डिवाइसों पर उपलब्ध है जिन पर डेंसिटी एपीआई काम करता है. इस सुविधा के लिए ऐसे हार्डवेयर डेप्थ सेंसर की ज़रूरत नहीं होती जिसके साथ यह काम करता हो. जैसे, फ़्लाइट के समय (ToF) सेंसर. हालांकि, डेप्थ एपीआई किसी डिवाइस में मौजूद ऐसे सभी हार्डवेयर सेंसर का इस्तेमाल करता है जो इसके साथ काम करते हैं.

परफ़ॉर्मेंस पर असर

जियोस्पेशियल गहराई में, सेशन की शुरुआत में एक बार इस्तेमाल होने वाला छोटा सा कैलकुलेशन किया जाता है, ताकि शुरुआत में स्ट्रीटस्केप जियोमेट्री को डेप्थ रिप्रज़ेंटेशन के साथ इंटिग्रेट किया जा सके. हालांकि, गहराई से कंप्यूटेशन की लागत कम नहीं होती.

गहराई की सीमा

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

इस्तेमाल के उदाहरण

ARCore Description API का इस्तेमाल, इस्तेमाल के उन सभी मौजूदा उदाहरणों के लिए किया जा सकता है जिन पर यह पहले से काम करता है. जियोस्पेशियल डेप्थ की मदद से, वीपीएस के साथ काम करने वाली जगहों में ली गई डेप्थ इमेज को पहले की तुलना में ज़्यादा तेज़ी से लॉन्ग-रेंज डेप्थ से भरा जाएगा. इससे इस्तेमाल के उदाहरण के लिए आउटडोर एनवायरमेंट में लंबी दूरी की डेप्थ को टारगेट किया जा सकेगा. यहां, इस्तेमाल के कुछ उदाहरण दिए गए हैं:

  • वर्चुअल कॉन्टेंट और दूसरे विज़ुअल इफ़ेक्ट को बड़े पैमाने पर शामिल करना
  • आउटडोर नेविगेशन
  • दूरी की माप

सीमाएं

जियोस्पेशियल डेप्थ सिर्फ़ उन इलाकों में काम करती है जहां VPS लोकलाइज़ेशन और Streetscape जियोमेट्री का इस्तेमाल किया जा सकता है. दूसरे इलाकों में, ARCore depth API भौगोलिक वैल्यू के बिना सामान्य तरीके से काम करेगा.

ज़रूरी शर्तें

आगे बढ़ने से पहले, पक्का करें कि आपने बुनियादी एआर (ऑगमेंटेड रिएलिटी) सिद्धांत और ARCore सेशन को कॉन्फ़िगर करने का तरीका समझ लिया है.

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

नए ARCore सेशन में, देखें कि उपयोगकर्ता के डिवाइस पर डेंसिटी और भौगोलिक एपीआई काम करता है या नहीं. प्रोसेस करने में कम समय लगता है, इसलिए ARCore के साथ काम करने वाले सभी डिवाइस depth API के साथ काम नहीं करते हैं.

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

Java

Config config = session.getConfig();

// Check whether the user's device supports the Depth API.
boolean isDepthSupported = session.isDepthModeSupported(Config.DepthMode.AUTOMATIC);
boolean isGeospatialSupported =
    session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED);
if (isDepthSupported && isGeospatialSupported) {
  // These three settings are needed to use Geospatial Depth.
  config.setDepthMode(Config.DepthMode.AUTOMATIC);
  config.setGeospatialMode(Config.GeospatialMode.ENABLED);
  config.setStreetscapeGeometryMode(Config.StreetscapeGeometryMode.ENABLED);
}
session.configure(config);

Kotlin

val config = session.config

// Check whether the user's device supports the Depth API.
val isDepthSupported = session.isDepthModeSupported(Config.DepthMode.AUTOMATIC)
val isGeospatialSupported = session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED)
if (isDepthSupported && isGeospatialSupported) {
  // These three settings are needed to use Geospatial Depth.
  config.depthMode = Config.DepthMode.AUTOMATIC
  config.geospatialMode = Config.GeospatialMode.ENABLED
  config.streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED
}
session.configure(config)

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

Java

// Retrieve the depth image for the current frame, if available.
Image depthImage = null;
try {
  depthImage = frame.acquireDepthImage16Bits();
  // Use the depth image here.
} catch (NotYetAvailableException e) {
  // This means that depth data is not available yet.
  // Depth data will not be available if there are no tracked
  // feature points. This can happen when there is no motion, or when the
  // camera loses its ability to track objects in the surrounding
  // environment.
} finally {
  if (depthImage != null) {
    depthImage.close();
  }
}

Kotlin

// Retrieve the depth image for the current frame, if available.
try {
  frame.acquireDepthImage16Bits().use { depthImage ->
    // Use the depth image here.
  }
} catch (e: NotYetAvailableException) {
  // This means that depth data is not available yet.
  // Depth data will not be available if there are no tracked
  // feature points. This can happen when there is no motion, or when the
  // camera loses its ability to track objects in the surrounding
  // environment.
}

आगे क्या होगा