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

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

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

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

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

ضبط الجلسة

لا يتم تفعيل ميزة استرداد خريطة العمق تلقائيًا في جلسات الواقع الممتد. لتفعيل استرداد خريطة العمق، عليك ضبط الجلسة وضبط DepthEstimationMode:

val newConfig = Config.Builder(session.config)
    .setDepthEstimation(DepthEstimationMode.SMOOTH_ONLY)
    .build()
when (val result = session.configure(newConfig)) {
    is SessionConfigureSuccess -> TODO(/* Success! */)
    else ->
        TODO(/* The session could not be configured. See SessionConfigureResult for possible causes. */)
}

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

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

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

التحقّق من إمكانات خريطة العمق

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

للتحقّق من خرائط العمق التي يتيحها الجهاز، استخدِم XrDevice.isRenderingModeSupported:

val xrDevice = XrDevice.getCurrentDevice(context)
val hasMonoDepth = xrDevice.isRenderingModeSupported(RenderingMode.MONO)
val hasStereoDepth = xrDevice.isRenderingModeSupported(RenderingMode.STEREO)

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

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

if (hasStereoDepth) {
    val depthMap = Depth.left(session)
}

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

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

if (hasStereoDepth) {
    val depthMap = Depth.left(session)
}

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

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