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

將應用程式的設定設為使用地理空間 API 後,就可以呼叫 ArEarth_getCameraGeospatialPose 來取得 ArGeospatialPose,說明相機在最新畫面中的地理空間位置。這個姿勢 (透過 ArEarth 物件管理) 包含以下資訊:

  • 以經緯度表示的位置
  • 海拔高度
  • 這個方向會預估使用者在 EUS 座標系統中面對的方向,X+ 指向東、Y+ 朝上,Z+ 則指向南方

查看追蹤狀態

ArEarth.ArTrackingStateArTrackingState.AR_TRACKING_STATE_TRACKINGArEarth.ArEarthStateAR_EARTH_STATE_ENABLED 時,地理空間值才有效。請務必將所有地理空間 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 物件無法追蹤的錯誤狀態。

調整姿勢,提高準確性

當裝置朝著預設方向直立時,傾斜 (X+) 和滾動 (Z+) 角經常會十分精確,這是為了與 AR 追蹤自然對齊。不過,偏轉 (Y+) 角度可能會因該位置的 VPS 資料可用性和時間條件而有所不同。您的應用程式可能需要進行修正,確保準確性。

ArGeospatialPose_getOrientationYawAccuracy() 可根據特定 ArGeospatialPose 的偏轉 (Y+) 角,提供準確的預估值。方向偏差是一個數字,用於說明 ArGeospatialPose_getEastUpSouthQuaternion() 傳回的偏角距離第 68 個百分位數信賴水準的半徑 (以度為單位)。換句話說,ArGeospatialPose 真正的偏轉角度有 68% 的機率準確。

值越大表示準確率越低。舉例來說,如果預估偏角為 60 度,而偏角準確率為 10 度,則真實偏角有 68% 的機率介於 50 度到 70 度之間。

後續步驟