استخدِم تقنية "العمق الجغرافي المكاني" لزيادة مدى وصولك

بطل العمق الجغرافي المكاني

تتوافق واجهة برمجة التطبيقات ARCore Depth API الآن مع ميزة Geospatial Depth التي تزيد تلقائيًا من نطاق وسرعة واجهة برمجة التطبيقات Depth API عند تفعيل ميزة Streetscape Geometry أيضًا. عند التواجد في موقع به تغطية VPS مع تمكين ميزة Streetscape Geometry، تشمل الصور الناتجة من واجهة برمجة التطبيقات Depth API التضاريس وهندسة المباني التي تم استردادها في المنطقة على بُعد 65 مترًا من الموقع الحالي. يتم دمج بيانات العمق هذه المستردة من الهندسة مع ملاحظات العمق المحلية ويتم تحديثها كلما انتقل المستخدم إلى موقع جديد.

توفر طلبات البيانات من واجهة برمجة التطبيقات ARCore Depth API الآن كلاً من الملاحظات المحلية من الكاميرا وكذلك المباني والتضاريس من هندسة "التجوّل الافتراضي"، تم دمجها في صورة بعمق واحد.

توافق الجهاز

تتوفّر ميزة "العمق الجغرافي المكاني" على جميع الأجهزة المتوافقة مع واجهة برمجة التطبيقات Depth API. لا تتطلّب هذه الميزة استخدام جهاز استشعار عمق خارجي متوافق، مثل أداة استشعار مدة الرحلة (ToF). ومع ذلك، تستفيد واجهة برمجة التطبيقات Depth API من أي أدوات استشعار متوافقة في الأجهزة والتي قد يحتوي عليها الجهاز.

تأثير الأداء

يقدم Geospatial Depth (العمق الجغرافي المكاني) عملية حسابية صغيرة لمرة واحدة في بداية الجلسة لدمج Streetscape Geometry في تمثيل العمق عند تنزيلها من البداية، ولكن بخلاف ذلك لا تؤدي إلى زيادة تكلفة حساب العمق بشكل ملحوظ.

نطاق العمق

بدون العمق الجغرافي المكاني، تكون النطاقات النموذجية للصور بعمق 20-30 مترًا تقريبًا، مع انخفاض كثافة ودقة ملاحظات العمق إلى ما هو أبعد من هذا النطاق. عند تفعيل "العمق الجغرافي المكاني"، من الطبيعي أن ترى قيم عمق مأخوذة بكثافة مكثفة تصل إلى 65.535 مترًا كحد أقصى، حتى مع حركات أولية قليلة.

حالات الاستخدام

يمكن استخدام ARCore Depth API لجميع حالات الاستخدام المتاحة حاليًا. باستخدام "العمق الجغرافي المكاني"، ستتم تعبئة صور العمق التي يتم الحصول عليها في المواقع الجغرافية التي تتيح استخدام VPS بعمق بعيد المدى بشكل أسرع من ذي قبل، ما يتيح حالات الاستخدام التي تستهدف العمق البعيد المدى في البيئات الخارجية. تتضمن بعض حالات الاستخدام ما يلي:

  • إضافة محتوى افتراضي ومؤثرات بصرية أخرى على مستوى البنية
  • الملاحة في الهواء الطلق
  • قياسات المسافة

القيود

لا تتوفّر ميزة "العمق الجغرافي المكاني" إلا في المناطق التي توفِّر أقلمة VPS وتقنية Streetscape Geometry. في مناطق أخرى، ستعمل واجهة برمجة التطبيقات ARCore Depth API كالمعتاد بدون استخدام القيم الجغرافية المكانية.

المتطلبات الأساسية

احرص على فهم مفاهيم الواقع المعزّز الأساسية. وكيفية ضبط جلسة ARCore قبل المتابعة.

تفعيل العمق الجغرافي المكاني

في جلسة ARCore جديدة، التحقق مما إذا كان جهاز المستخدم يتوافق مع Depth وGeospatial API. لا تتيح بعض الأجهزة المتوافقة مع ARCore استخدام واجهة Depth API بسبب قيود طاقة المعالجة.

لحفظ الموارد، يتم إيقاف ميزة "العمق" تلقائيًا على ARCore. عليك تفعيل وضع العمق لكي يستخدم تطبيقك واجهة برمجة التطبيقات Depth API. بالإضافة إلى ذلك، يمكنك تفعيل الوضع الجغرافي المكاني وهندسة التجوّل الافتراضي نستخدم العمق الجغرافي المكاني.

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

الخطوات التالية