取得裝置相機's 地理空間姿勢

完成應用程式的設定使用 Geospatial API 後,您可以呼叫 ArEarth_getCameraGeospatialPose 取得 ArGeospatialPose,說明裝置在最新影格中相機的地理空間定位。這個姿勢會在 ArEarth 物件中管理,並包含下列資訊:

  • 位置 (以緯度和經度表示)
  • 海拔高度
  • 使用者所在位置的近似方向,以 X+ 指向東方、Y+ 指向正向、Z+ 指向南方,再模擬使用者面對的方向

查看追蹤狀態

地理空間值只有在 ArEarth.ArTrackingStateArTrackingState.AR_TRACKING_STATE_TRACKING,且 ArEarth.ArEarthStateAR_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_TRACKINGArEarth.ArTrackingState 可能會是 AR_TRACKING_STATE_PAUSEDAR_TRACKING_STATE_STOPPED。如果上述兩個條件都不成立,請檢查 ArEarth.ArEarthState,這會顯示其他可能導致 ArEarth 物件無法追蹤的錯誤狀態。

調整姿勢以提高準確度

裝置在預設方向直立時,由於 AR 追蹤的自然對齊,所以傾斜 (X+) 和擲骰 (Z+) 角度通常可以精確,不過,偏航角 (Y+) 可能會因 VPS 資料可用性和位置的時間條件而異。您的應用程式可能需要進行調整,以確認準確度。

ArGeospatialPose_getOrientationYawAccuracy() 可準確預估特定 ArGeospatialPose 的偏轉角 (Y+) 角度。方向偏轉精確度是指 ArGeospatialPose_getEastUpSouthQuaternion() 傳回的偏轉角度周圍 68 百分位信心水準的半徑 (以度為單位)。換句話說,ArGeospatialPose 的實際偏航角正確的機率為 68%。

值越大,準確度越低。舉例來說,如果預估偏轉角度為 60 度,且偏轉精確度為 10 度,則實際偏轉角度介於 50 和 70 度之間的機率為 68%。

後續步驟