با ARCore برای Jetpack XR اطلاعات عمق را در برنامه خود بازیابی کنید

دستگاه‌های XR قابل اجرا
این راهنما به شما کمک می‌کند تا برای این نوع دستگاه‌های XR تجربه ایجاد کنید.
هدست‌های XR
عینک‌های XR سیمی

برنامه شما می‌تواند اطلاعات عمق را از طریق ARCore برای Jetpack XR بازیابی کند تا میزان نزدیکی اشیاء فیزیکی به دستگاه را تعیین کند.

یک جلسه ARCore برای Jetpack XR ایجاد کنید

اطلاعات عمق را از طریق یک Session ARCore برای Jetpack XR دریافت کنید. اگر در حال بهبود رابط کاربری مکانی با استفاده از Jetpack Compose برای XR هستید، به یک جلسه از Jetpack Compose برای XR دسترسی پیدا کنید . اگر با موجودیت‌های مکانی از کتابخانه Jetpack SceneCore کار می‌کنید، به یک جلسه از Jetpack XR Runtime دسترسی پیدا کنید .

پیکربندی جلسه

بازیابی نقشه عمق به طور پیش‌فرض در جلسات XR فعال نیست. برای فعال کردن بازیابی نقشه عمق، جلسه را پیکربندی کنید و 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 به مقادیر اطمینان دسترسی پیدا کنید. این مقادیر از ۰ تا ۲۵۵ متغیر هستند، که ۲۵۵ نشان دهنده بالاترین میزان اطمینان است.

برای رندر کردن یک نقشه عمق برای اهداف اشکال‌زدایی یا تجسم، به بخش عمق برنامه آزمایشی ARCore مراجعه کنید.