با استفاده از ARCore برای Jetpack XR، موقعیت دستگاه را ردیابی کنید

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

با ARCore برای Jetpack XR، برنامه شما می‌تواند موقعیت دستگاه را بازیابی کند: جهت‌گیری (گام، انحراف، غلتش) و موقعیت (X، Y، Z) دستگاه نسبت به مبدا جهان.

از این اطلاعات برای رندر کردن محتوای دیجیتال در دنیای واقعی استفاده کنید، یا موقعیت دستگاه را به یک موقعیت مکانی تبدیل کنید تا داده‌های آگاه از موقعیت مکانی تولید کنید.

دسترسی به یک جلسه

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

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

اطلاعات موقعیت دستگاه به طور پیش‌فرض در جلسات XR فعال نیست. برای فعال کردن برنامه خود برای بازیابی اطلاعات موقعیت دستگاه، جلسه را پیکربندی کرده و حالت HeadTrackingMode.LAST_KNOWN را تنظیم کنید:

// Define the configuration object to enable tracking device pose.
val newConfig = session.config.copy(
    headTrackingMode = Config.HeadTrackingMode.LAST_KNOWN
)
// Apply the configuration to the session.
try {
    when (val configResult = session.configure(newConfig)) {
        is SessionConfigureSuccess -> {
            // The session is now configured to track the device's pose.
        }
        else -> {
            // Catch-all for other configuration errors returned using the result class.
        }
    }
} catch (e: UnsupportedOperationException) {
    // Handle configuration failure. For example, if the specific mode is not supported on the current device or API version.
}

همه دستگاه‌های XR از حالت HeadTrackingMode.LAST_KNOWN پشتیبانی نمی‌کنند. اگر Session.configure() با موفقیت اجرا شود، دستگاه از این حالت پشتیبانی می‌کند.

موقعیت دستگاه را بدست آورید

پس از پیکربندی جلسه، می‌توانید با استفاده از شیء ArDevice ، موقعیت دستگاه را در سیستم مختصات AR به دست آورید:

// Get the ArDevice instance
val arDevice = ArDevice.getInstance(session)

// Collect the state to process the device pose
arDevice.state.collect { state ->
      // processDevicePose gets called automatically when a new pose is available.
      processDevicePose(state.devicePose)
}

// Or, get the current device Pose from the AR Device's state.
// This is the device's position and orientation relative to the tracking origin.
val devicePose = ArDevice.getInstance(session).state.value.devicePose

دریافت ترجمه و چرخش موقعیت دستگاه

Pose دستگاه، موقعیت (انتقال) و جهت (چرخش) دستگاه را نسبت به مبدا ردیابی نشان می‌دهد. از این اطلاعات در برنامه خود برای بهبود تجربه برنامه خود استفاده کنید:

  1. ارائه دستورالعمل‌های ناوبری دقیق از نظر موقعیتی : داده‌های موقعیتی می‌توانند برای کمک به کاربر در جهت‌یابی و پیمایش محیط اطراف خود با کمک محتوای دیجیتالیِ پوشش داده شده، مورد استفاده قرار گیرند.

  2. ترازبندی میانی جهان : این موقعیت توسط API جغرافیایی برای محاسبه موقعیت مکانی در دنیای واقعی استفاده می‌شود.

fun processDevicePose(pose: Pose) {

    // Extract Translation and Rotation
    val translation = pose.translation // Vector3(x, y, z)
    val rotation = pose.rotation // Quaternion (x, y, z, w)

    TODO(/* Use the translation and rotation in your app. */)
}

تبدیل وضعیت دستگاه به وضعیت مکانی

وقتی حالت دستگاه را دارید، می‌توانید از آن یک حالت جغرافیایی-مکانی به دست آورید. تبدیل به یک حالت جغرافیایی-مکانی، محتوای واقعیت افزوده شما را از یک تجربه موقت و مجزا به یک ویژگی دائمی، جهانی و آگاه از متن در دنیای واقعی تبدیل می‌کند.

بیاموزید که چگونه یک موقعیت دستگاه را به یک موقعیت مکانی در مستندات API مکانی ما تبدیل کنید .