Какой формат Matrix4x4 от ARCore NDK Pose?

При использовании этой функции в 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 ... так как столбец майор.

Как мне узнать правильный формат?

3

Решение

Заказ комплектующих в ARCore *out_matrix_col_major_4x4 такой же, как в OpenGL Matrix:

ARCore документация говорит об этом явно:

out_matrix_col_major_4x4 является указателем на массив из 16 чисел с плавающей запятой, который должен быть заполнен матрицей однородного преобразования по главному столбцу, как используется OpenGL.

введите описание изображения здесь

Первые три элемента в крайний правый столбец [0,0,0,1] для перевода по x,y,z ось:

введите описание изображения здесь

Первые три элемента в нижний ряд [0,0,0,1] в этой матрице 4×4 предназначены для аффинного отображения. Итак, последняя строка матрицы 4×4 должна соблюдаться при применении преобразований после проекции.

Срок Колонка-майор означает: элементы этой матрицы можно получить и установить с помощью порядок столбцов. Таким образом, перевести x, y, z элементы расположены в крайнем правом четвертом столбце.

1

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

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

По вопросам рекламы [email protected]