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 vào 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ế độ 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.
}
Không phải thiết bị thực tế mở rộng nào cũng hỗ trợ chế độ HeadTrackingMode.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)
// 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
Lấy thông tin về phép tịnh tiến và xoay tư thế 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.
Căn chỉnh thế giới trung gian: Tư thế này được Geospatial API sử dụng để tính toán vị trí thực tế.
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ẽ biến nội dung thực tế tăng cường của bạn từ một trải nghiệm tạm thời, riêng biệt thành 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.