Lấy tư thế Không gian địa lý của máy ảnh

Sau khi định cấu hình chế độ cài đặt của ứng dụng để sử dụng API Không gian địa lý, bạn có thể gọi ArEarth_getCameraGeospatialPose để lấy ArGeospatialPose mô tả vị trí không gian địa lý của thiết bị cho máy ảnh trong khung hình mới nhất. Tư thế này, được quản lý trong đối tượng ArEarth, có chứa các thông tin sau:

  • Vị trí, được thể hiện bằng vĩ độ và kinh độ
  • Cao độ
  • Hướng gần đúng với hướng người dùng đang nhìn trong hệ toạ độ EUS với X+ trỏ về phía đông, Y+ trỏ lên và Z+ trỏ về phía nam

Kiểm tra trạng thái theo dõi

Giá trị không gian địa lý chỉ hợp lệ khi ArEarth.ArTrackingStateArTrackingState.AR_TRACKING_STATE_TRACKINGArEarth.ArEarthStateAR_EARTH_STATE_ENABLED. Hãy nhớ gói tất cả các lệnh gọi API Không gian địa lý vào một khối điều khiển 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);
  }
}

Nếu ArEarth.ArTrackingState không trở thành ArTrackingState.AR_TRACKING_STATE_TRACKING, ArEarth.ArTrackingState có thể là AR_TRACKING_STATE_PAUSED hoặc AR_TRACKING_STATE_STOPPED. Nếu không có điều kiện nào trong số này đúng, hãy kiểm tra ArEarth.ArEarthState để biết các trạng thái lỗi khác có thể khiến đối tượng ArEarth không thể theo dõi.

Điều chỉnh tư thế cho chính xác

Khi thiết bị nằm thẳng đứng theo hướng mặc định, các góc nghiêng (X trở lên) và các góc nghiêng (Z trở lên) có xu hướng chính xác do được căn chỉnh tự nhiên với tính năng theo dõi thực tế tăng cường. Tuy nhiên, góc nghiêng (Y trở lên) có thể thay đổi tuỳ thuộc vào lượng dữ liệu VPS sẵn có và điều kiện tạm thời tại vị trí đó. Ứng dụng của bạn có thể phải điều chỉnh để đảm bảo độ chính xác.

ArGeospatialPose_getOrientationYawAccuracy() cung cấp số liệu ước tính chính xác cho góc nghiêng (Y+) của một ArGeospatialPose nhất định. Độ chính xác của góc ngáp hướng là một số mô tả bán kính (tính bằng độ) của mức tin cậy 68 phần trăm xung quanh góc yaw được trả về từ ArGeospatialPose_getEastUpSouthQuaternion(). Nói cách khác, có 68% khả năng góc ngáp thực sự của ArGeospatialPose là chính xác.

Giá trị càng lớn thì độ chính xác càng thấp. Ví dụ: nếu góc yaw ước tính là 60 độ và độ chính xác của yaw là 10 độ, thì có xác suất 68% góc yaw thực sự nằm trong khoảng từ 50 đến 70 độ.

Các bước tiếp theo