在 NDK 中使用此功能时:
void ArPose_getMatrix(
const ArSession *session,
const ArPose *pose,
float *out_matrix_col_major_4x4
)
我得到一个Pointer to an array of 16 floats, to be filled with a column-major homogenous transformation matrix, as used by OpenGL.
但是我不知道这个矩阵是否是:
x.x, x.y, x.z, 0
y.x, y.y, y.z, 0
z.x, z.y, z.z, 0
t.x, t.y, t.z, 1
或
x.x, x.y, x.z, x.t
y.x, y.y, y.z, y.t
z.x, z.y, z.z, z.t
0, 0, 0, 1
我只知道读顺序:x.x, y.x, z.x ...
,因为它是专栏文章。
我怎么知道正确的格式?
答案 0 :(得分:1)
ARCore *out_matrix_col_major_4x4
中组件的顺序与OpenGL Matrices中的顺序相同:
ARCore文档says about it obviously :
out_matrix_col_major_4x4
是指向16个浮点数的数组的指针,将由OpenGL使用的,以列为主的均匀变换矩阵填充。
最右列中的前三个元素[0,0,0,1]用于沿x
,y
,z
轴平移:
此4x4矩阵最低行 [0,0,0,1]中的前三个元素用于仿射映射。因此,在投影后应用转换时,必须注意4x4矩阵的最后一行。
术语主要列的意思是:此矩阵的元素可以使用列的顺序获取和设置。因此,翻译
x
,y
,z
元素位于最右边的第四列。