arView.session.currentFrame.camera.transform 和 arview.cameraTransform 有什么区别?

What is the difference between arView.session.currentFrame.camera.transform and arview.cameraTransform?

我在将 相机的旋转 应用到 RealityKit 中的实体时偶然发现了这一点。我以为我必须做一些矩阵数学运算才能从 arView.session.currentFrame.camera.transform 矩阵获得欧拉角,但是从 arview.cameraTransform.rotation 检索旋转就成功了(找到 here)。

所以:这两个矩阵有什么区别,什么时候应该使用哪个?

您的第一个示例是 transform matrix,它定义了相机在世界坐标中的 rotation/translation。

open var transform: simd_float4x4 { get }

您的第二个示例是 transform matrix.

的特殊类型
public var cameraTransform: Transform { get }

// or

@MainActor var cameraTransform: Transform { get }

Apple 的定义:

Note that Transform is a specialized type that does not support all transformations that can be represented by a general 4x4 matrix. Setting the Transform from a 4x4 matrix is a lossy operation. It may result in certain transformations (such as shearing) being dropped!

但是,在某些情况下 cameraTransformtransform 更方便 属性。