ARKit中的变换中的不同列代表什么?

时间:2017-08-01 11:51:15

标签: ios swift scenekit augmented-reality arkit

ARAnchor有6列,其中最后3列代表xyz坐标。

我想知道其他(第一)3列代表什么?

2 个答案:

答案 0 :(得分:6)

如果你是3D的新手,那么这些转换矩阵看起来就像魔术一样。基本上,ARKit空间中的每个“点”都由4x4变换矩阵表示。该矩阵描述了从ARKit原点(ARKit醒来到世界的点)的距离,通常称为平移,以及设备的方向,即俯仰,滚转和偏航。变换矩阵也可以描述比例,但通常在渲染内容之前不会处理比例。

列是什么意思?这变得复杂但只记得第4列的前3个元素是x,y,z平移。这将派上用场。其余的包含比例和轮换信息。

答案 1 :(得分:1)

  

ARKit和SceneKit框架使用4 x 4 Transformation Matrices来平移,旋转,缩放和剪切3D对象。让我们看看这些矩阵的样子。

在3D图形中,我们经常使用具有16个有用元素的4 x 4矩阵。身份4 x 4矩阵如下:

enter image description here

在这16个元素之间,有6个不同的剪切系数:

shear XY
shear XZ
shear YX
shear YZ
shear ZX
shear ZY

在Shear Matrix中,它们如下:

enter image description here

因为该矩阵中根本没有Rotation coefficients ,所以六个Shear coefficients和三个Scale coefficients可以使X旋转3D对象,YZ轴使用魔术三角法(sincos)。

以下是使用Shear和Scale元素如何围绕其Z轴旋转3D对象(CCW)的示例:

enter image description here

使用“剪切”和“缩放”元素查看3种不同的旋转模式:

enter image description here

当然,tx x ty tz中的3个翻译元素(44Matrix)是位于最后一列:

 ┌               ┐
 |  1  0  0  tx  |
 |  0  1  0  ty  |
 |  0  0  1  tz  |
 |  0  0  0  1   |
 └               ┘
  

ARKit和SceneKit中的列索引为:0123

希望这会有所帮助。