ติดตามท่าทางของอุปกรณ์โดยใช้ ARCore สำหรับ Jetpack XR

อุปกรณ์ XR ที่ใช้ได้
คำแนะนำนี้จะช่วยให้คุณสร้างประสบการณ์การใช้งานสำหรับอุปกรณ์ XR ประเภทต่างๆ เหล่านี้ได้
ชุดหูฟัง XR
แว่นตา XR แบบมีสาย
แว่นตา AI

เมื่อใช้ ARCore สำหรับ Jetpack XR แอปจะดึงท่าทางของอุปกรณ์ได้ ซึ่งก็คือ การวางแนว (ระดับเสียง การหมุนรอบแกนตั้ง การหมุนรอบแกนนอน) และตำแหน่ง (X, Y, Z) ของอุปกรณ์ที่สัมพันธ์ กับจุดกำเนิดของโลก

ใช้ข้อมูลนี้เพื่อแสดงเนื้อหาดิจิทัลในโลกแห่งความเป็นจริง หรือแปลงท่าทางของอุปกรณ์เป็นท่าทางเชิงพื้นที่เพื่อสร้างข้อมูลที่รับรู้ตำแหน่ง

เข้าถึงเซสชัน

เข้าถึงข้อมูลท่าทางของอุปกรณ์ผ่าน Jetpack XR Runtime Session ซึ่งแอปของคุณต้องสร้าง

กำหนดค่าเซสชัน

ระบบไม่ได้เปิดใช้ข้อมูลท่าทางของอุปกรณ์ในเซสชัน 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() สำเร็จ แสดงว่าอุปกรณ์รองรับโหมดนี้

รับท่าทางของอุปกรณ์

เมื่อกำหนดค่าเซสชันแล้ว คุณจะรับท่าทางของอุปกรณ์ภายในระบบพิกัด AR ได้โดยใช้ออบเจ็กต์ 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

รับการแปลและการหมุนของท่าทางอุปกรณ์

อุปกรณ์ Pose แสดงตำแหน่ง (การแปล) และการวางแนว (การหมุน) ของอุปกรณ์เทียบกับจุดเริ่มต้นของการติดตาม ใช้ข้อมูลนี้ในแอปเพื่อปรับปรุงประสบการณ์การใช้งานแอป ดังนี้

  1. ระบุวิธีการนำทางที่ถูกต้องตามตำแหน่ง: ข้อมูลตำแหน่ง สามารถใช้เพื่อช่วยให้ผู้ใช้ทราบตำแหน่งของตนเองและนำทางในสภาพแวดล้อมรอบตัว โดยใช้เนื้อหาดิจิทัลที่ซ้อนทับ

  2. การจัดแนวโลกกลาง: 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