デバイスのカメラの地理空間ポーズを取得する

Geospatial API を使用するようにアプリの設定を構成したら、ArEarth_getCameraGeospatialPose を呼び出して、最新のフレーム内のカメラのデバイスのジオ空間位置情報を記述する ArGeospatialPose を取得できます。このポーズは ArEarth オブジェクトで管理され、次の情報が含まれます。

  • 緯度と経度で表した位置情報
  • 標高
  • EUS 座標系でユーザーが向いている方向に近い向き(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.ArTrackingStateArTrackingState.AR_TRACKING_STATE_TRACKING にならない場合、ArEarth.ArTrackingStateAR_TRACKING_STATE_PAUSED または AR_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% です。

次のステップ