ARKit变换矩阵中的值代表什么?

时间:2019-01-17 15:07:49

标签: ios iphone arkit

现在,我试图理解ARKit变换矩阵中的值,以便可以量化SCNNode的运动。从上一篇有关堆栈溢出的文章中,我了解到矩阵包含有关节点当前平移,缩放,旋转和位置的信息。

我不理解的是哪些值与这四件事具体相关。例如,我发现第三列的第一个元素代表屏幕上的X(水平)运动,第三列的第二个值代表Y(垂直)运动。但是除此之外,我不确定矩阵中其余的值是什么意思。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

在转换矩阵中,翻译信息位于最后一列。 给定一个转换矩阵,您可以从最后一列中提取翻译,如下所示:

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

旋转和缩放使用前三列,并且更复杂。 Scale 是前三个列向量的长度,要提取 rotation ,您需要将前三个列向量除以刚才提到的比例因子。 您可以参考this link,以更好地了解比例尺和旋转度以及如何提取它们。

答案 1 :(得分:0)

MohammadRF的回答为我最好地解决了问题。但是,ARKit的矩阵按行顺序排列,因此,如果您要根据他提供的信息对矩阵进行转置,那么它将适用于ARKit。