0

有人知道如何更改 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


...
4

1 回答 1

1

ARCamera与渲染 3D 虚拟内容无关。正如其文档所说,它只是“有关 AR 会话中捕获的视频帧的相机位置和成像特征的信息”。也就是说,它提供的数据可帮助您设置用于渲染的任何技术(例如 SceneKit、使用 Metal 的自定义渲染器等)。

camera.projectionMatrix(...)方法是信息提供角色的一部分——它使用 ARKit 知道的关于物理设备摄像头方向的信息,加上你提供的 zNear 和 zFar 值,来构建一个可以在渲染器中使用的矩阵。

如果您使用的是 SceneKit,则可以将该矩阵传递给SCNCamera. (您可能需要从 转换simd_float4x4SCNMatrix4。)如果您使用其他渲染器,您可以在那里使用该矩阵。

于 2017-07-25T18:37:11.297 回答