קבלת המיקום הגיאו-מרחבי של מצלמת המכשיר

אחרי שקובעים את ההגדרות של האפליקציה לשימוש ב-Geospatial API, תוכלו להפעיל את ArEarth_getCameraGeospatialPose כדי לקבל ArGeospatialPose שמתאר את המיקום הגאו-מרחבי של המכשיר ביחס למצלמה בפריים האחרון. התנוחה הזו, שמנוהלת באובייקט ArEarth, מכילה את המידע הבא:

  • מיקום, מבוטא בקווי רוחב ואורך
  • גובה
  • כיוון שקרוב מאוד לכיוון המשתמש במערכת הקואורדינטות של האיחוד האירופי, כאשר 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 מעלות, אז תהיה הסתברות של 68% שזווית הזווית האמיתית היא בין 50 ל-70 מעלות.

המאמרים הבאים