常用属性 :
用于定义摄像机在世界坐标系中的旋转和平移的变换矩阵。
transform: matrix_float4x4 { get }
我们这样简单理解为相机使用这个矩阵就可以将空间中的某个点映射到二维成像平面的一个点。
intrinsics: matrix_float3x3 { get }
相机的投影矩阵。
projectionMatrix: matrix_float4x4 { get }
常用方法
将世界坐标系中的3D点投影到2D视口空间中。
func projectPoint(_ point: vector_float3, orientation: UIInterfaceOrientation, viewportSize: CGSize) -> CGPoint
为给定的渲染参数创建相机的投影矩阵。
func projectionMatrix(for orientation: UIInterfaceOrientation, viewportSize: CGSize, zNear: CGFloat, zFar: CGFloat) -> matrix_float4x4
值得注意 :
这里面的所有属性都是get类型,所以无法修改,也就是ARCamera不需要我们过多去操作它.只要获取它的数据就好.
打印查看
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print(sceneView.session.currentFrame!.camera.transform)
print(sceneView.session.currentFrame!.camera.intrinsics)
print(sceneView.session.currentFrame!.camera.projectionMatrix)
}
结果(不要在意数值,看看样子就好)
//用于定义摄像机在世界坐标系中的旋转和平移的变换矩阵。
simd_float4x4([[-0.575047, -0.183771, 0.797213, 0.0)],
[0.774325, 0.192292, 0.602864, 0.0)],
[-0.264087, 0.963977, 0.0317212, 0.0)],
[0.0140704, -0.358925, -0.369682, 1.0)]])
//现实世界中三维空间的点映射到捕捉的图像中二维空间的点
simd_float3x3([[1081.21, 0.0, 0.0)],
[0.0, 1081.21, 0.0)],
[629.303, 362.947, 1.0)]])
//相机的投影矩阵。
simd_float4x4([[1.68939, 0.0, 0.0, 0.0)],
[0.0, 3.00336, 0.0, 0.0)],
[0.0167139, -0.00818706, -1.0, -1.0)],
[0.0, 0.0, -0.002, 0.0)]])