รับท่า 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%

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