Что представляют собой значения в матрицах преобразования ARKit? - PullRequest
0 голосов
/ 17 января 2019

Прямо сейчас я пытаюсь понять значения в матрице преобразования ARKit, чтобы я мог количественно оценить перемещения моего SCNNode. Из предыдущего сообщения о переполнении стека я узнал, что матрица содержит информацию о текущем перемещении, масштабе, повороте и положении узла.

Что я не понимаю, так это то, какие ценности конкретно связаны с этими четырьмя вещами. Например, я выяснил, что первый элемент 3-го столбца представляет движение X (горизонтальное) на экране, а 2-е значение 3-го столбца представляет движение Y (вертикальное). Но кроме этого я не уверен, что означают остальные значения в матрице.

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 17 января 2019

МохаммедРФ ответил, прояснил ситуацию для меня лучше всего. Тем не менее, матрицы ARKit расположены в главном порядке строк, поэтому, если вы должны были транспонировать матрицы из предоставленной им информации, это применимо к ARKit.

0 голосов
/ 17 января 2019

В матрице преобразования информация находится в последнем столбце. С учетом матрицы преобразования вы можете извлечь перевод из последнего столбца, как показано ниже:

let translation = SCNVector3(transform.columns.3.x, transform.columns.3.y, transform.columns.3.z)

Вращение и масштабирование используют первые три столбца и являются более сложными. Масштаб - это длина первых трех векторов столбцов, и для извлечения вращения необходимо разделить первые три вектора столбцов на только что упомянутые коэффициенты масштабирования. Вы можете обратиться к по этой ссылке для лучшего понимания масштаба и поворота и как их извлечь.

...