ARCore for Jetpack XR ช่วยให้แอปดึงข้อมูล ท่าทาง ของอุปกรณ์ได้ ซึ่งก็คือ การวางแนว (ก้มเงย, หันซ้ายขวา, เอียง) และตำแหน่ง (X, Y, Z) ของอุปกรณ์ที่สัมพันธ์ กับจุดเริ่มต้นของโลก
ใช้ข้อมูลนี้เพื่อแสดงเนื้อหาดิจิทัลในโลกจริง หรือแปลงท่าทางของอุปกรณ์เป็นท่าทางทางภูมิสารสนเทศเพื่อสร้างข้อมูลที่รับรู้ตำแหน่ง
เข้าถึงเซสชัน
เข้าถึงข้อมูลท่าทางของอุปกรณ์ผ่าน Jetpack XR Runtime Session,
ซึ่ง แอปของคุณต้องสร้างขึ้น
กำหนดค่าเซสชัน
ระบบไม่ได้เปิดใช้ข้อมูลท่าทางของอุปกรณ์ในเซสชัน 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() สำเร็จ แสดงว่าอุปกรณ์รองรับโหมดนี้
รับท่าทางของอุปกรณ์
หลังจากกำหนดค่าเซสชันแล้ว คุณจะรับท่าทางของอุปกรณ์ภายในระบบพิกัด
AR ได้โดยใช้ออบเจ็กต์ 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) }
รับการเคลื่อนที่และการหมุนของท่าทางของอุปกรณ์
Pose ของอุปกรณ์แสดงถึงตำแหน่ง (การเคลื่อนที่) และการวางแนว (การหมุน) ของอุปกรณ์ที่สัมพันธ์กับจุดเริ่มต้นของการติดตาม ใช้ข้อมูลนี้ในแอปเพื่อปรับปรุงประสบการณ์การใช้งานแอป ดังนี้
ให้คำแนะนำการนำทางที่แม่นยำตามตำแหน่ง: คุณสามารถใช้ข้อมูลตำแหน่ง เพื่อช่วยให้ผู้ใช้กำหนดทิศทางและนำทางในสภาพแวดล้อมรอบตัวได้ ด้วยความช่วยเหลือจากเนื้อหาดิจิทัลที่ซ้อนทับ
คำนวณการจัดตำแหน่งโลกระดับกลาง: Geospatial 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. */) }
แปลงท่าทางของอุปกรณ์เป็นท่าทางทางภูมิสารสนเทศ
เมื่อได้ท่าทางของอุปกรณ์แล้ว คุณจะรับท่าทางทางภูมิสารสนเทศจากท่าทางดังกล่าวได้ การแปลงเป็นท่าทางทางภูมิสารสนเทศจะเปลี่ยนเนื้อหา AR จากประสบการณ์การใช้งานชั่วคราวและแยกกันไปเป็นฟีเจอร์ถาวรที่แชร์กันได้ทั่วโลกและรับรู้บริบทในโลกจริง
ดูวิธีแปลงท่าทางของอุปกรณ์เป็นท่าทางทางภูมิสารสนเทศในเอกสารประกอบของ Geospatial API