5

ARAnchor4x4 矩阵有 4 列。矩阵的第四列包含 、 和坐标的 3 个x平移yz

我想知道其他 3 列代表什么?

4

2 回答 2

19

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

在 3D 图形中,我们经常使用包含 16 个有用元素的4x4矩阵。Identity 4x4矩阵如下:

在此处输入图像描述

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

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

在剪切矩阵中,它们如下所示:

在此处输入图像描述

因为在这个矩阵中根本没有,六个三个Rotation coefficientsShear coefficients允许您使用神奇的三角函数(和)围绕、和轴Scale coefficients旋转 3D 对象。XYZsincos

下面是一个如何Z使用剪切和缩放元素围绕其轴旋转 3D 对象 (CCW) 的示例:

在此处输入图像描述

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

在此处输入图像描述

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

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

ARKit、SceneKit 和 RealityKit 中的列索引为:0, 1, 2,3 .

第四列(索引 3)用于翻译值:

var translation = matrix_identity_float4x4

translation.columns.3.x
translation.columns.3.y
translation.columns.3.z


你可以在 Medium 上阅读我关于MATRICES的插图故事。


透视和正交投影

位于 a 底行的4x4 matrix值用于透视投影

而且,当然,您需要查看如何设置正交投影的示例。

于 2019-04-15T18:32:01.630 回答
15

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

列是什么意思?这变得很复杂,但请记住第 4 列的前 3 个元素是 x、y、z 平移。那会派上用场的。其余的保存比例和旋转信息。

于 2017-08-03T23:00:57.203 回答