任何人都知道如何更改zFar或ARKIT ARCamera? 或者获取它的当前值。
我有一个非常大的模型被剪裁。我认为。 在搅拌机中我遇到了同样的问题并通过在Frustum上设置远值来修复它。
我可以为每个相机框架创建投影矩阵,但无法设置它。
func session(_ session: ARSession, cameraDidChangeTrackingState camera: ARCamera) {
textManager.showTrackingQualityInfo(for: camera.trackingState, autoHide: true)
let projectionMatrix: matrix_float4x4 = camera.projectionMatrix(withViewportSize: camera.viewport.size,
orientation: .portrait,
zNear: 0.1,
zFar: 5000)
//ERROR - readonly
camera.projectionMatrix = matrix_float4x4
...
答案 0 :(得分:1)
ARCamera
与渲染3D虚拟内容无关。正如其文档所述,它只是关于AR会话中捕获的视频帧的相机位置和成像特征的信息。"也就是说,它提供的数据可以帮助您设置用于渲染的任何技术(即SceneKit,使用Metal的自定义渲染器等)。
camera.projectionMatrix(...)
方法是该信息提供角色的一部分 - 它使用ARKit知道的物理设备相机的方向,以及您提供的zNear和zFar值,来构建您可以使用的矩阵你的渲染器。
如果您正在使用SceneKit,则可以将该矩阵传递给SCNCamera
。 (您可能需要从simd_float4x4
转换为SCNMatrix4
。)如果您正在使用其他渲染器,则可以在那里使用该矩阵。