Android — Как получить Matrix4x4 из позы от ArCamera в ARCore NDK?

В гугле образцы Я могу получить образцы о получении матрица из поза генерируется ArAnchor или из ArPlane, Но когда я пытаюсь получить от ArCamera не работает, мой результат Единичная матрица.

Небольшая часть из моего кода:

ScopedArPose scopedArPose(ar_session_);
ArCamera_getPose(ar_session_, ar_camera, scopedArPose.GetArPose());
std::array<float, 16> out_matrix_col_major_4x4;

ArPose_getMatrix(ar_session_, scopedArPose.GetArPose(), out_matrix_col_major_4x4.data());

Что работает:

ArSession работает, ArFrame в порядке, я могу получить ArCamera, ArCameraIntrinsicsв порядке, ArImage в порядке, AImage в порядке

Формат и NumberOfPlanes из изображения в порядке.

ScopedArPose класс равен от образцов Google. array<float, 16> работает отлично, проверено в гугл образцах.

Чего не хватает?

1

Решение

Для решения этой проблемы нужно было предварительно проверить состояние камеры.

ArTrackingState camera_tracking_state;
ArCamera_getTrackingState(ar_session_, ar_camera, &camera_tracking_state);
// If the camera isn't tracking don't bother to go forward
if (camera_tracking_state != AR_TRACKING_STATE_TRACKING) {
LOGI("ARCoreOdometry: Camera Not Tracking");
return;
}
0

Другие решения

Других решений пока нет …