ARKIt 和 RealityKit——为什么相机矩阵的最后一行总是零?
ARKIt and RealityKit – Why in Camera matrix last line always zero?
我已经使用 Xcode 的默认模板开始了一个新的增强现实项目。
我做了arView.session.delegate = self
override func viewDidLoad() {
super.viewDidLoad()
// Load the "Box" scene from the "Experience" Reality File
let boxAnchor = try! Experience.loadBox()
// Add the box anchor to the scene
arView.scene.anchors.append(boxAnchor)
arView.session.delegate = self
}
并在我打印相机变换的地方添加了这个委托方法
func session(_ session: ARSession, didUpdate frame: ARFrame) {
print(frame.camera.transform)
}
打印出来是这样的:
simd_float4x4([[-0.99477124, -0.02513871, 0.09898488, 0.0],
[0.04075573, -0.98642635, 0.15906614, 0.0],
[0.09364258, 0.16226865, 0.9822931, 0.0],
[-0.031830817, -0.025311433, 0.007536184, 1.0]])
这个打印是列出列的,对吧?并且列顺序是 x
、y
、z
和 w
,对吗?
如果是这样,该矩阵的最后一行总是 0 0 0 1
。
为什么?这条线代表什么?
simd_float4x4
结构表示四个 列 ,具有以下索引:0
、1
、2
和 3
。索引为 3 的最后一列包含 x
、y
和 z
的翻译值。最后一列第四个元素不像四元数中的w
,它代表齐次坐标。三个对角线 1
值是 x
、y
和 z
轴的比例。
┌ ┐
| 1 0 0 tx |
| 0 1 0 ty |
| 0 0 1 tz |
| 0 0 0 1 |
└ ┘
如果您需要有关 4x4 矩阵的更详细信息,请阅读 this post。
最低行的前三个值用于 projection purposes。
我已经使用 Xcode 的默认模板开始了一个新的增强现实项目。
我做了arView.session.delegate = self
override func viewDidLoad() {
super.viewDidLoad()
// Load the "Box" scene from the "Experience" Reality File
let boxAnchor = try! Experience.loadBox()
// Add the box anchor to the scene
arView.scene.anchors.append(boxAnchor)
arView.session.delegate = self
}
并在我打印相机变换的地方添加了这个委托方法
func session(_ session: ARSession, didUpdate frame: ARFrame) {
print(frame.camera.transform)
}
打印出来是这样的:
simd_float4x4([[-0.99477124, -0.02513871, 0.09898488, 0.0],
[0.04075573, -0.98642635, 0.15906614, 0.0],
[0.09364258, 0.16226865, 0.9822931, 0.0],
[-0.031830817, -0.025311433, 0.007536184, 1.0]])
这个打印是列出列的,对吧?并且列顺序是 x
、y
、z
和 w
,对吗?
如果是这样,该矩阵的最后一行总是 0 0 0 1
。
为什么?这条线代表什么?
simd_float4x4
结构表示四个 列 ,具有以下索引:0
、1
、2
和 3
。索引为 3 的最后一列包含 x
、y
和 z
的翻译值。最后一列第四个元素不像四元数中的w
,它代表齐次坐标。三个对角线 1
值是 x
、y
和 z
轴的比例。
┌ ┐
| 1 0 0 tx |
| 0 1 0 ty |
| 0 0 1 tz |
| 0 0 0 1 |
└ ┘
如果您需要有关 4x4 矩阵的更详细信息,请阅读 this post。
最低行的前三个值用于 projection purposes。