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

أجهزة XR المعنيّة
تساعدك هذه الإرشادات في إنشاء تجارب لهذه الأنواع من أجهزة الواقع الممتد.
سماعات رأس بنظام الواقع الممتد
نظارات الواقع الممتد السلكية

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

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

الحصول على معلومات العمق من خلال ARCore for Jetpack XR Session إذا كنت بصدد تحسين واجهة المستخدم المكانية باستخدام Jetpack Compose للواقع الممتد، يمكنك الوصول إلى جلسة من Jetpack Compose للواقع الممتد. إذا كنت تعمل باستخدام كيانات مجسّمة من مكتبة Jetpack SceneCore، يمكنك الوصول إلى جلسة من Jetpack XR Runtime.

ضبط الجلسة

لا يتم تفعيل استرجاع خريطة العمق تلقائيًا في جلسات الواقع الممتد. لتفعيل استرداد خريطة العمق، اضبط الجلسة وحدِّد 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.