es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo cambiar el campo de visión de la cámara (o alejar la imagen) en ARSKView?

Estoy utilizando un ARSKView que combina 2D SpriteKit con 3D ARKit. Cuando muestra la experiencia de la cámara AR, noto que el campo de visión de la cámara es un poco estrecho (en modo retrato). Es equivalente a un aumento de 1,5x en la aplicación de cámara integrada.

Me gustaría hacer zoom hacia afuera, o ampliar un poco el campo de visión… aunque sea solo hasta la misma resolución de 1x que permite la aplicación de cámara integrada.

¿Existe alguna forma de hacer eso?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible ajustar el campo de visión de la cámara ARSKView para ampliar la vista. Esto se puede hacer ajustando la matriz de proyección de la cámara utilizando el método projectionMatrix(for:viewportSize:nearZ:farZ:) proporcionado por ARSKView.

    Aquí hay un ejemplo de cómo usar este método para ajustar el campo de visión de la cámara:

    let sceneView = ARSKView()
    
    // Configura la escena y agrégala a la jerarquía de vistas...
    
    // Obtén la matriz de proyección actual
    var projectionMatrix = sceneView.session.currentFrame?.camera.projectionMatrix(for: .portrait, viewportSize: sceneView.bounds.size, zNear: 0.001, zFar: 1000)
    
    // Ajusta el campo de visión (aquí estoy usando una constante de 60 grados)
    let fieldOfView = Float(60 * Double.pi / 180)
    projectionMatrix?.m11 = Float(1 / tan(fieldOfView / 2))
    projectionMatrix?.m22 = Float(1 / tan(fieldOfView / 2))
    
    // Establece la matriz de proyección actualizada de nuevo en la cámara de la vista
    sceneView.pointOfView?.camera?.setProjectionMatrix(projectionMatrix!, animated: false)
    

    Ten en cuenta que ajustar el campo de visión puede afectar la percepción de la profundidad y escala del contenido AR, por lo que es importante probar y ajustar en consecuencia.

Comments are closed.