tutorial programming guide swift scenekit arkit

swift - tutorial - scenekit programming guide



La instantánea de Scenekit() no incluye los ajustes de exposición de la cámara (1)

Proporciono la funcionalidad de captura de pantalla para mi aplicación AR, y noté que las capturas de pantalla que tomo (a través de sceneView.snapshot() ) son mucho más oscuras de lo que veo desde la cámara. Estoy usando el código de ejemplo de ARKit de Apple, y parece que esto lo está afectando:

camera.wantsHDR = true camera.wantsExposureAdaptation = true camera.exposureOffset = -1 camera.minimumExposure = -1 camera.maximumExposure = 3

Cuando elimino la configuración de exposición, la instantánea funciona bien. ¿Alguna forma de asegurarse de que la instantánea tenga en cuenta esos ajustes de exposición?


Debe tener en cuenta una variable de whitePoint también conocida como nivel de luminancia para usar como el extremo superior de una curva de mapeo de tonos.

var whitePoint: CGFloat { get set }

Cuando se usa una cámara de alto rango dinámico (HDR), SceneKit aplica un proceso llamado mapeo de tonos para traducir el amplio rango de valores de luminancia en la escena visible al rango más estrecho de valores de brillo que se pueden mostrar en una pantalla. SceneKit determina una curva de mapeo de tonos a partir de las minimumExposure exposureOffset maximumExposure , exposureOffset minimumExposure , maximumExposure exposureOffset y whitePoint , junto con una medida de la luminancia de la escena.

El valor predeterminado es 1.0 . Al establecer esta propiedad en un valor más alto o más bajo, puede producir transiciones más graduales o más abruptas entre sombras y luces. Esta propiedad no tiene efecto si el valor wantsHDR es false .

camera.whitePoint = 1.0