如何从ARCore NDK中的ArCamera的Pose中获取Matrix4x4?

时间:2018-11-19 16:32:51

标签: android c++ android-ndk arcore

在Google Samples上,我可以获取有关从ArAnchor或{{1}生成的 Pose 中获取 Matrix 的示例。 }。但是,当我尝试从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正常,我能够得到ArFrameArCamera正常,ArCameraIntrinsics正常,{{1 }}可以。

图像的格式和NumberOfPlanes都可以。

ArImage类与Google示例相同。 AImage运作良好,已在google示例中进行了测试。

缺少什么?

1 个答案:

答案 0 :(得分:0)

要解决此问题,需要先检查相机状态。

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;
}