Какой формат Matrix4x4 от ARCore NDK Pose? - PullRequest
0 голосов
/ 11 октября 2018

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

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

1 Ответ

0 голосов
/ 27 октября 2018

Порядок компонентов в ARCore *out_matrix_col_major_4x4 такой же, как в OpenGL Matrices :

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

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

enter image description here

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

enter image description here

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

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

...