Scenekit snapshot()不包括相机曝光设置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scenekit snapshot()不包括相机曝光设置相关的知识,希望对你有一定的参考价值。

我正在为我的AR应用程序提供屏幕截图功能,我注意到我拍摄的截图(通过sceneView.snapshot())比我从相机看到的更暗。我正在使用Apple的ARKit示例代码,似乎这会影响它:

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

当我删除曝光设置时,快照工作正常。有什么方法可以确保快照考虑那些曝光设置?

答案

您应该考虑一个whitePoint变量,也称为亮度级别,用作色调映射曲线的上端。

var whitePoint: CGFloat { get set }

使用高动态范围(HDR)相机时,SceneKit会应用称为色调映射的过程,将可见场景中的宽范围亮度值转换为可在显示屏上显示的较窄亮度值范围。 SceneKit根据minimumExposuremaximumExposureexposureOffsetwhitePoint属性确定色调映射曲线,并测量场景亮度。

默认值为1.0。通过将此属性设置为更高或更低的值,可以在阴影和高光之间产生更多渐变或更突然的过渡。如果wantsHDR值为false,则此属性无效。

camera.whitePoint = 1.0

以上是关于Scenekit snapshot()不包括相机曝光设置的主要内容,如果未能解决你的问题,请参考以下文章

SceneKit Cocoa 快照失败断言

在 Scenekit 中移动相机

没有渲染/虚拟内容的 ARKit/SceneKit 屏幕截图

SceneKit 球体法线似乎随着相机移动而改变?

Scenekit - 将子节点(平面节点)添加到相机前面的父节点(球体节点)

SceneKit + ARKit:无需相机滚动的广告牌