با ARCore برای Jetpack XR، برنامه شما میتواند موقعیت دستگاه را بازیابی کند: جهتگیری (گام، انحراف، غلتش) و موقعیت (X، Y، Z) دستگاه نسبت به مبدا جهان.
از این اطلاعات برای رندر کردن محتوای دیجیتال در دنیای واقعی استفاده کنید، یا موقعیت دستگاه را به یک موقعیت مکانی تبدیل کنید تا دادههای آگاه از موقعیت مکانی تولید کنید.
دسترسی به یک جلسه
دسترسی به اطلاعات موقعیت دستگاه از طریق یک Session زمان اجرای Jetpack XR که برنامه شما باید ایجاد کند .
پیکربندی جلسه
اطلاعات موقعیت دستگاه به طور پیشفرض در جلسات XR فعال نیست. برای فعال کردن برنامه خود برای بازیابی اطلاعات موقعیت دستگاه، جلسه را پیکربندی کرده و حالت DeviceTrackingMode.SPATIAL_LAST_KNOWN را تنظیم کنید:
// Define the configuration object to enable tracking device pose. val newConfig = session.config.copy( deviceTracking = DeviceTrackingMode.SPATIAL_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 از حالت DeviceTrackingMode.SPATIAL_LAST_KNOWN پشتیبانی نمیکنند. اگر Session.configure() با موفقیت اجرا شود، دستگاه از این حالت پشتیبانی میکند.
موقعیت دستگاه را بدست آورید
پس از پیکربندی جلسه، میتوانید با استفاده از شیء ArDevice ، موقعیت دستگاه را در سیستم مختصات AR به دست آورید:
// Get the ArDevice instance val arDevice = ArDevice.getInstance(session) // There are two ways to get the device pose. // 1. Get the current device pose once. // This is the device's position and orientation relative to the tracking origin. val devicePose = arDevice.state.value.devicePose processDevicePose(devicePose) // 2. Continuously receive updates for the device pose. // `collect` is a suspending function that will run indefinitely and process new poses. arDevice.state.collect { state -> processDevicePose(state.devicePose) }
دریافت ترجمه و چرخش موقعیت دستگاه
Pose دستگاه، موقعیت (انتقال) و جهت (چرخش) دستگاه را نسبت به مبدا ردیابی نشان میدهد. از این اطلاعات در برنامه خود برای بهبود تجربه برنامه خود استفاده کنید:
- دستورالعملهای ناوبری دقیق از نظر موقعیتی ارائه دهید : از دادههای موقعیتی برای کمک به کاربر در جهتیابی و پیمایش محیط اطراف خود با کمک محتوای دیجیتالیِ پوشش داده شده استفاده کنید.
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. */) }