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

Ash*_*dey 2 augmented-reality scenekit swift arkit realitykit

A ARAnchor有6列,其中最后3列代表x,y和z坐标.
我想知道其他(第一)3列代表什么?

Joh*_*alo 7

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

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


ARG*_*Geo 5

ARKit,RealityKit和SceneKit框架用于4 x 4 Transformation Matrices平移,旋转,缩放和剪切3D对象(就像simd_float4x4矩阵类型一样)。让我们看看这些矩阵的样子。

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

在此处输入图片说明

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

shear XY
shear XZ
shear YX
shear YZ
shear ZX
shear ZY
Run Code Online (Sandbox Code Playgroud)

在Shear Matrix中,它们如下:

在此处输入图片说明

由于没有Rotation coefficients在所有在这个矩阵中,六Shear coefficients三个一起Scale coefficients让你旋转3D对象有关XY以及Z使用魔法三角(轴sincos)。

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

在此处输入图片说明

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

在此处输入图片说明

而且,当然,3个元素翻译(txtytz)在4X 4 Matrix位于最后一列:

 ?               ?
 |  1  0  0  tx  |
 |  0  1  0  ty  |
 |  0  0  1  tz  |
 |  0  0  0  1   |
 ?               ?
Run Code Online (Sandbox Code Playgroud)

列在ARKit,SceneKit和RealityKit指标是:0123

第四列(索引3)用于转换值:

var translation = matrix_identity_float4x4

translation.columns.3.x
translation.columns.3.y
translation.columns.3.z
Run Code Online (Sandbox Code Playgroud)