ARKit – 变换矩阵中的不同列代表啥?
Posted
技术标签:
【中文标题】ARKit – 变换矩阵中的不同列代表啥?【英文标题】:ARKit – What do the different columns in Transform Matrix represent?ARKit – 变换矩阵中的不同列代表什么? 【发布时间】:2018-01-08 06:34:57 【问题描述】:ARAnchor
的 4x4 矩阵有 4 列。矩阵的第四列包含 x
、y
和 z
坐标的 3 个平移值。
我想知道其他 3 列代表什么?
【问题讨论】:
我讨厌只删除一个链接,但这是转换矩阵的一个很好的起点:en.wikipedia.org/wiki/Transformation_matrix 【参考方案1】:ARKit、RealityKit 和 SceneKit 框架使用
4 x 4
Transformation Matrices
来平移、旋转、缩放和剪切 3D 对象(就像simd_float4x4
矩阵类型一样)。让我们看看这些矩阵长什么样。
在 3D 图形中,我们经常使用包含 16 个有用元素的 4
x4
矩阵。身份4
x4
矩阵如下:
在这 16 个元素之间有 6 个不同的剪切系数:
shear XY
shear XZ
shear YX
shear YZ
shear ZX
shear ZY
在剪切矩阵中它们如下:
因为在此矩阵中根本没有Rotation coefficients
,所以六个Shear coefficients
和三个Scale coefficients
允许您围绕X
、Y
和@987654345 旋转3D 对象@axis 使用神奇的三角函数(sin
和 cos
)。
下面是一个如何使用剪切和缩放元素围绕其Z
轴旋转 3D 对象 (CCW) 的示例:
使用剪切和缩放元素查看 3 种不同的旋转模式:
当然,4
x4
Matrix
中的 3 个翻译元素(tx
,ty
,tz
)位于最后一列:
┌ ┐
| 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 的插图故事。
透视和正交投影
位于4x4 matrix
底行的值用于perspective projection。
当然,您还需要查看如何设置orthographic projection 的示例。
【讨论】:
【参考方案2】:如果您是 3D 新手,那么这些转换矩阵看起来就像魔术一样。基本上,ARKit 空间中的每个“点”都由一个 4x4 变换矩阵表示。该矩阵描述了距 ARKit 原点(ARKit 唤醒到世界的点)的距离,通常称为平移,以及设备的方向,即俯仰、滚动和偏航。变换矩阵也可以描述比例,但通常在渲染之前您不会处理比例。
这些列是什么意思?这很复杂,但请记住第 4 列的前 3 个元素是 x、y、z 平移。那会派上用场的。其余部分保存缩放和旋转信息。
【讨论】:
以上是关于ARKit – 变换矩阵中的不同列代表啥?的主要内容,如果未能解决你的问题,请参考以下文章