原始帖子有点过时了。以前,我们没有getMatrixTransformAtTime()。因此,您必须使用Tango.getPoseAtTime来查询每个转换,然后使用矩阵将它们链接起来。
但是现在,使用getMatrixTransformAtTime,即使在opengl框架中,您也可以直接查询area_description_T_depth。为了将点云转换为opengl中的ADF框架,可以使用以下代码(伪代码):
TangoSupport.TangoMatrixTransformData transform =
TangoSupport.getMatrixTransformAtTime(pointCloud.timestamp,
TangoPoseData.COORDINATE_FRAME_START_OF_SERVICE,
TangoPoseData.COORDINATE_FRAME_CAMERA_DEPTH,
TangoSupport.TANGO_SUPPORT_ENGINE_OPENGL,
TangoSupport.TANGO_SUPPORT_ENGINE_TANGO);
// Convert it into the matrix format you use in render.
// This is a pure data structure conversion, transform is
// in opengl world frame already.
Matrix4x4 model_matrix = ConvertMatrix(transform);
foreach (Point p in pointCloud) {
p = model_matrix * p;
}
// Now p is in opengl world frame.
但请注意,在使用ADF重新定位或处于学习模式后,您必须具有有效的区域描述框架才能根据区域描述查询姿势。