موقعیت جغرافیایی دوربین دستگاه را بدست آورید

هنگامی که تنظیمات برنامه خود را برای استفاده از Geospatial API پیکربندی کردید، می توانید با ArEarth_getCameraGeospatialPose تماس بگیرید تا ArGeospatialPose به دست آورید که موقعیت مکانی دستگاه را برای دوربین در آخرین فریم توصیف می کند. این حالت که در یک شی ArEarth مدیریت می شود، حاوی اطلاعات زیر است:

  • مکان، بیان شده در طول و عرض جغرافیایی
  • ارتفاع
  • جهت تقریبی جهتی که کاربر با آن روبرو است در سیستم مختصات EUS با X+ به سمت شرق، Y+ به سمت بالا و Z+ به سمت جنوب.

وضعیت ردیابی را بررسی کنید

مقادیر مکانی فقط زمانی معتبر هستند که ArEarth.ArTrackingState 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 را از ردیابی باز دارد.

ژست را برای دقت تنظیم کنید

هنگامی که دستگاه در جهت پیش‌فرض عمودی است، به دلیل هم‌ترازی طبیعی با ردیابی AR، زوایای گام (X+) و رول (Z+) دقیق هستند. با این حال، زوایای انحراف (Y+) بسته به در دسترس بودن داده های VPS و شرایط زمانی در محل می تواند متفاوت باشد. برنامه شما ممکن است مجبور باشد تنظیماتی را برای دقت انجام دهد.

ArGeospatialPose_getOrientationYawAccuracy() تخمین دقتی برای زوایای انحراف (Y+) برای یک ArGeospatialPose خاص ارائه می دهد. دقت انحراف جهت گیری عددی است که شعاع سطح اطمینان صدک 68 را بر حسب درجه در اطراف زوایای انحراف برگشتی از ArGeospatialPose_getEastUpSouthQuaternion() توصیف می کند. به عبارت دیگر، 68 درصد احتمال دارد که زاویه انحراف واقعی ArGeospatialPose دقیق باشد.

مقادیر بزرگتر نشان دهنده دقت کمتر است. به عنوان مثال، اگر زاویه انحراف تخمینی 60 درجه و دقت انحراف 10 درجه باشد، به احتمال 68 درصد زاویه انحراف واقعی بین 50 تا 70 درجه است.

بعدش چی

  • با به دست آوردن موقعیت مکانی لنگر، یک لنگر Geospatial قرار دهید.
،

هنگامی که تنظیمات برنامه خود را برای استفاده از Geospatial API پیکربندی کردید، می توانید با ArEarth_getCameraGeospatialPose تماس بگیرید تا ArGeospatialPose به دست آورید که موقعیت مکانی دستگاه را برای دوربین در آخرین فریم توصیف می کند. این حالت که در یک شی ArEarth مدیریت می شود، حاوی اطلاعات زیر است:

  • مکان، بیان شده در طول و عرض جغرافیایی
  • ارتفاع
  • جهت تقریبی جهتی که کاربر با آن روبرو است در سیستم مختصات EUS با X+ به سمت شرق، Y+ به سمت بالا و Z+ به سمت جنوب.

وضعیت ردیابی را بررسی کنید

مقادیر مکانی فقط زمانی معتبر هستند که ArEarth.ArTrackingState 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 را از ردیابی باز دارد.

ژست را برای دقت تنظیم کنید

هنگامی که دستگاه در جهت پیش‌فرض عمودی است، به دلیل هم‌ترازی طبیعی با ردیابی AR، زوایای گام (X+) و رول (Z+) دقیق هستند. با این حال، زوایای انحراف (Y+) بسته به در دسترس بودن داده های VPS و شرایط زمانی در محل می تواند متفاوت باشد. برنامه شما ممکن است مجبور باشد تنظیماتی را برای دقت انجام دهد.

ArGeospatialPose_getOrientationYawAccuracy() تخمین دقتی برای زوایای انحراف (Y+) برای یک ArGeospatialPose خاص ارائه می دهد. دقت انحراف جهت گیری عددی است که شعاع سطح اطمینان صدک 68 را بر حسب درجه در اطراف زوایای انحراف برگشتی از ArGeospatialPose_getEastUpSouthQuaternion() توصیف می کند. به عبارت دیگر، 68 درصد احتمال دارد که زاویه انحراف واقعی ArGeospatialPose دقیق باشد.

مقادیر بزرگتر نشان دهنده دقت کمتر است. به عنوان مثال، اگر زاویه انحراف تخمینی 60 درجه و دقت انحراف 10 درجه باشد، به احتمال 68 درصد زاویه انحراف واقعی بین 50 تا 70 درجه است.

بعدش چی

  • با به دست آوردن موقعیت مکانی لنگر، یک لنگر Geospatial قرار دهید.