ทำงานกับท่าทางเชิงพื้นที่

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

GeospatialPose อธิบายตำแหน่งในอวกาศที่สัมพันธ์กับโลก ซึ่งประกอบด้วยคอมโพเนนต์ต่อไปนี้

  • ละติจูดและลองจิจูด ซึ่งระบุเป็นองศาตามที่กำหนดโดยข้อกำหนด WGS84
  • ระดับความสูง ซึ่งระบุเป็นเมตรเหนือทรงรี WGS84 หรือเทียบเท่ากับเมตรเหนือระดับน้ำทะเลโดยประมาณ
  • การวางแนว ซึ่งประมาณทิศทางที่ท่าทางหันไปในระบบพิกัด EUS ระบบพิกัด EUS มี X+ ชี้ไปทางทิศตะวันออก, Y+ ชี้ขึ้น และ Z+ ชี้ไปทางทิศใต้

Geospatial API ให้สิทธิ์เข้าถึงท่าทางภูมิสารสนเทศของอุปกรณ์และให้การแปลงระหว่างท่าทางภูมิสารสนเทศกับท่าทางในอุปกรณ์

สิ่งที่ต้องมีก่อน

หากต้องการรับและแปลงท่าทางภูมิสารสนเทศ แอปของคุณต้องตั้งค่าให้ใช้ Geospatial API คุณจะรับท่าทางภูมิสารสนเทศได้ก็ต่อเมื่อ Geospatial API มีสถานะ RUNNING เท่านั้น

แปลงท่าทางของอุปกรณ์ในเครื่องเป็นท่าทางเชิงภูมิสารสนเทศ

Poseในอุปกรณ์สามารถแปลงเป็น GeospatialPose ได้ เช่น เพื่อระบุตำแหน่งของอุปกรณ์ของผู้ใช้ที่สัมพันธ์กับโลก ซึ่งจะช่วยให้คุณทำสิ่งต่อไปนี้ได้

  • สร้างเนื้อหา AR แบบถาวร ซึ่งวัตถุเสมือนที่ผู้ใช้วางไว้จะยึดอยู่กับตำแหน่งทั่วโลกอย่างถูกต้องเพื่อให้เรียกดูได้ในภายหลัง
  • ทริกเกอร์ประสบการณ์ตามตำแหน่งโดยอัปเดตตำแหน่งของผู้ใช้บนแผนที่อย่างต่อเนื่องเพื่อเปิดใช้การนำทางแบบเรียลไทม์หรือเกมเพลย์ที่กำหนดเขตพื้นที่เสมือน
  • ระบุบริบทในโลกแห่งความเป็นจริงที่แน่นอนของผู้ใช้เพื่อทริกเกอร์ตรรกะแอปพลิเคชันที่เกี่ยวข้องกับตำแหน่ง

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีแปลง Pose เป็น GeospatialPose โดยใช้ Geospatial.createGeospatialPoseFromPose()

val devicePose = ArDevice.getInstance(session).state.value.devicePose

// Convert the device Pose into a GeospatialPose.
when (val result = geospatial.createGeospatialPoseFromPose(devicePose)) {
    is CreateGeospatialPoseFromPoseSuccess -> {
        val geoPose = result.pose
        val lat = geoPose.latitude
        val lon = geoPose.longitude
        val alt = geoPose.altitude
        // Orientation is in the EUS (East-Up-South) coordinate system.
        val orientation = geoPose.eastUpSouthQuaternion
    }
    is CreateGeospatialPoseFromPoseNotTracking -> {
        // Geospatial is not currently tracking.
    }

    else -> {
        // A newer exception was added, but your app is using an old version of the library
    }
}

แปลงท่าทางเชิงพื้นที่เป็นท่าทางในอุปกรณ์

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

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีใช้ Geospatial.createPoseFromGeospatialPose() เพื่อแปลงท่าทางเชิงพื้นที่เป็นท่าทางในอุปกรณ์

// Convert a GeospatialPose (lat/long/alt) back to a device-space Pose.
when (val result = geospatial.createPoseFromGeospatialPose(geoPose)) {
    is CreatePoseFromGeospatialPoseSuccess -> {
        val devicePose: Pose = result.pose
        // devicePose is now ready to be used relative to the tracking origin.
    }
    is CreatePoseFromGeospatialPoseNotTracking -> {
        // Geospatial is not currently tracking.
    }
    is CreatePoseFromGeospatialPoseInternalError -> {
        // An internal error occurred.
    }
    else -> {
        // A newer exception was added, but your app is using an old version of the library
    }
}