ARKIT ARCamera zFar

Кто-нибудь знает, как сменить 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


...

1 ответ

ARCamera не имеет ничего общего с рендерингом вашего виртуального 3D-контента. Как говорится в его документации, это просто "информация о положении камеры и характеристиках изображения для захваченного видеокадра в сеансе AR". То есть он предоставляет данные, которые помогут вам настроить любую технологию, которую вы используете для рендеринга (будь то SceneKit, пользовательский рендер, использующий Metal и т. Д.).

camera.projectionMatrix(...) Метод является частью этой роли по предоставлению информации - он использует то, что ARKit знает об ориентации камеры вашего физического устройства, а также предоставленные вами значения zNear и zFar, для построения матрицы, которую вы можете использовать в вашем рендерере.

Если вы используете SceneKit, вы можете передать эту матрицу SCNCamera, (Вам, вероятно, нужно конвертировать из simd_float4x4 в SCNMatrix4.) Если вы используете какой-то другой рендер, вы можете использовать эту матрицу там.

Другие вопросы по тегам