Với ARCore cho Jetpack XR, ứng dụng của bạn có thể truy xuất tư thế của thiết bị: hướng (độ nghiêng, góc xoay ngang, góc xoay dọc) và vị trí (X, Y, Z) của thiết bị so với gốc của thế giới thực.
Sử dụng thông tin này để hiển thị nội dung kỹ thuật số trong thế giới thực hoặc chuyển đổi tư thế của thiết bị thành tư thế không gian địa lý để tạo dữ liệu nhận biết vị trí.
Truy cập vào một phiên
Truy cập thông tin về tư thế của thiết bị thông qua Session Jetpack XR Runtime mà ứng dụng của bạn phải tạo.
Định cấu hình phiên
Theo mặc định, thông tin về tư thế của thiết bị không được bật trên các phiên XR. Để cho phép ứng dụng truy xuất thông tin về tư thế của thiết bị, hãy định cấu hình phiên và đặt chế độ DeviceTrackingMode.LAST_KNOWN:
// Define the configuration object to enable tracking device pose. val newConfig = session.config.copy( deviceTracking = DeviceTrackingMode.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. }
Không phải thiết bị thực tế mở rộng nào cũng hỗ trợ chế độ DeviceTrackingMode.LAST_KNOWN. Nếu Session.configure() thành công, tức là thiết bị hỗ trợ chế độ này.
Lấy tư thế của thiết bị
Sau khi định cấu hình phiên, bạn có thể lấy tư thế của thiết bị trong hệ toạ độ AR bằng cách sử dụng đối tượng ArDevice:
// 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) }
Lấy thông tin về vị trí và hướng xoay của thiết bị
Pose của thiết bị biểu thị vị trí (phép tịnh tiến) và hướng (phép xoay) của thiết bị so với nguồn gốc theo dõi. Sử dụng thông tin này trong ứng dụng để nâng cao trải nghiệm của ứng dụng:
Cung cấp chỉ dẫn điều hướng chính xác về vị trí: Dữ liệu vị trí có thể được dùng để giúp người dùng định hướng bản thân và điều hướng môi trường xung quanh với sự trợ giúp của nội dung kỹ thuật số được phủ lên.
Tính toán sự liên kết trung gian của thế giới thực: Tư thế này được Geospatial API sử dụng để tính toán vị trí trong thế giới thực.
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. */) }
Chuyển đổi tư thế của thiết bị thành tư thế không gian địa lý
Sau khi có tư thế của thiết bị, bạn có thể lấy tư thế không gian địa lý từ tư thế đó. Việc chuyển đổi sang tư thế không gian địa lý sẽ giúp nội dung thực tế tăng cường của bạn chuyển từ trải nghiệm tạm thời, riêng biệt sang một tính năng vĩnh viễn, được chia sẻ trên toàn cầu và nhận biết bối cảnh trong thế giới thực.
Tìm hiểu cách chuyển đổi tư thế của thiết bị thành tư thế không gian địa lý trong tài liệu về Geospatial API.