استرداد معلومات العمق في تطبيقك باستخدام ARCore for Jetpack XR

يمكن لتطبيقك استرداد معلومات العمق من خلال ARCore for Jetpack XR لتحديد مدى قرب الأجسام المادية من الجهاز.

إنشاء جلسة ARCore لـ Jetpack XR

الحصول على معلومات حول وضعية الرأس من خلال جلسة ARCore for Jetpack XR راجِع مقالة التعرّف على رحلة المستخدِم خلال الجلسة للحصول على Session.

ضبط الجلسة

لا يتم تفعيل استرداد خريطة العمق تلقائيًا في جلسات الواقع الممتد. لتفعيل استرداد خريطة العمق، اضبط الجلسة وحدِّد DepthEstimationMode على النحو التالي:

val newConfig = session.config.copy(
    depthEstimation = Config.DepthEstimationMode.SMOOTH_ONLY,
)
when (val result = session.configure(newConfig)) {
    is SessionConfigureSuccess -> TODO(/* Success! */)
    is SessionConfigureConfigurationNotSupported ->
        TODO(/* Some combinations of configurations are not valid. Handle this failure case. */)
    else ->
        TODO(/* The session could not be configured. See SessionConfigureResult for possible causes. */)
}

تتوفّر القيم التالية لـ DepthEstimationMode:

  • DISABLED: لم يتم تقديم أي معلومات حول عمق المشهد.
  • RAW_ONLY: يتم تفعيل تقدير العمق باستخدام قيم العمق ومستوى الثقة الأولية.
  • SMOOTH_ONLY: يتم تفعيل تقدير العمق باستخدام قيم العمق والثقة السلسة.
  • SMOOTH_AND_RAW: يتم تفعيل تقدير العمق باستخدام كلّ من قيم العمق الخام والسلسلة وقيم الثقة.

توفّر خرائط العمق الأولية تقديرات للعمق بدقة أعلى، ولكن قد لا تتضمّن صور العمق الأولية تقديرات للعمق لجميع وحدات البكسل في صورة الكاميرا. في المقابل، توفّر خرائط العمق السلسة عمقًا تقديريًا لكل بكسل، ولكن قد تكون بيانات العمق لكل بكسل أقل دقة بسبب التنعيم والاستيفاء للتقديرات.

استرداد بيانات العمق

للحصول على بيانات العمق لكاميرا معيّنة، استخدِم DepthMap:

val depthMap = DepthMap.left(session) ?: return

تختلف إمكانيات الأجهزة باختلاف أنواعها. تعرض الأجهزة التي تتضمّن إعدادات كاميرا مجسّمة خرائط عمق غير فارغة للكاميرات left وright. وبالمثل، تعرض الأجهزة التي تحتوي على كاميرا واحدة خريطة عمق غير فارغة باستخدام mono.

حساب قيم العمق

يمكنك الحصول على قيم العمق والثقة من خريطة العمق الناتجة:

val depthMap = DepthMap.left(session) ?: return

استنادًا إلى إعدادات الضبط المستخدَمة، يمكنك الوصول إلى خريطة العمق المناسبة باستخدام smoothDepthMap أو rawDepthMap. يتم التعبير عن القياسات الواردة في هذه الخرائط بالمتر. يمكنك أيضًا الوصول إلى قيم الثقة باستخدام smoothConfidenceMap وrawConfidenceMap. وتتراوح هذه القيم بين 0 و255، حيث يمثّل الرقم 255 أعلى مستوى من الثقة.

لعرض خريطة العمق لأغراض تصحيح الأخطاء أو العرض المرئي، راجِع قسم العمق في تطبيق اختبار ARCore.