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

เมื่อกําหนดการตั้งค่าแอปให้ใช้ Geospatial API แล้ว คุณสามารถเรียกใช้ ArEarth_getCameraGeospatialPose เพื่อรับ ArGeospatialPose ที่อธิบายตําแหน่งเชิงพื้นที่ของอุปกรณ์สําหรับกล้องในเฟรมล่าสุด ท่าทางนี้ซึ่งจัดการในออบเจ็กต์ ArEarth มีข้อมูลต่อไปนี้

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

ตรวจสอบสถานะการติดตาม

ค่าเชิงพื้นที่จะใช้งานได้เฉพาะเมื่อ ArEarth.ArTrackingState เป็น ArTrackingState.AR_TRACKING_STATE_TRACKING และ ArEarth.ArEarthState เป็น AR_EARTH_STATE_ENABLED ตรวจสอบว่าได้รวมการเรียก Geospatial API ทั้งหมดในบล็อกการควบคุม ArEarth.ArTrackingState แล้ว

if (ar_earth != NULL) {
  ArTrackingState earth_tracking_state = AR_TRACKING_STATE_STOPPED;
  ArTrackable_getTrackingState(ar_session, (ArTrackable*)ar_earth,
                               &earth_tracking_state);
  if (earth_tracking_state == AR_TRACKING_STATE_TRACKING) {
    ArGeospatialPose* camera_geospatial_pose = NULL;
    ArGeospatialPose_create(ar_session, &camera_geospatial_pose);
    ArEarth_getCameraGeospatialPose(ar_session, ar_earth,
                                    camera_geospatial_pose);
    // camera_geospatial_pose contains geodetic location, rotation, and
    // confidences values.
    ArGeospatialPose_destroy(camera_geospatial_pose);
  }
}

หาก ArEarth.ArTrackingState ไม่ได้เปลี่ยนเป็น ArTrackingState.AR_TRACKING_STATE_TRACKING แสดงว่า ArEarth.ArTrackingState อาจเปลี่ยนเป็น AR_TRACKING_STATE_PAUSED หรือ AR_TRACKING_STATE_STOPPED หากเงื่อนไขเหล่านี้ไม่เป็นจริง ให้เลือก ArEarth.ArEarthState ซึ่งแสดงสถานะข้อผิดพลาดอื่นๆ ที่อาจทำให้ออบเจ็กต์ ArEarth ติดตามไม่ได้

ปรับท่าทางเพื่อความแม่นยำ

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

ArGeospatialPose_getOrientationYawAccuracy() ระบุค่าประมาณความแม่นยำสำหรับมุมเอียง (Y+) ของมุมเอียงหนึ่งๆ ArGeospatialPose ความแม่นยำในการเอียงของการวางแนวคือตัวเลขที่อธิบายรัศมีเป็นองศาของระดับความเชื่อมั่นของเปอร์เซ็นไทล์ที่ 68 รอบๆ มุมเอียงที่แสดงผลจาก ArGeospatialPose_getEastUpSouthQuaternion() กล่าวคือ มีโอกาส 68% ที่มุมเอียงที่แท้จริงของ ArGeospatialPose จะแม่นยำ

ค่าที่ยิ่งมากแสดงถึงความแม่นยำที่ต่ำลง เช่น หากมุมเอียงโดยประมาณคือ 60 องศาและความแม่นยำในการเอียงคือ 10 องศา โอกาสที่มุมเอียงจริงจะอยู่ระหว่าง 50 ถึง 70 องศาคือ 68%

ขั้นตอนถัดไป