В гугле образцы Я могу получить образцы о получении матрица из поза генерируется 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>
работает отлично, проверено в гугл образцах.
Чего не хватает?
Для решения этой проблемы нужно было предварительно проверить состояние камеры.
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;
}
Других решений пока нет …