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!
但是,在某些情况下 cameraTransform
比 transform
更方便 属性。
我在将 相机的旋转 应用到 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 theTransform
from a 4x4 matrix is a lossy operation. It may result in certain transformations (such as shearing) being dropped!
但是,在某些情况下 cameraTransform
比 transform
更方便 属性。