Scenekit快照()不包括相机曝光设置。

17

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

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

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


我不是百分之百确定(因为我在ARKit上的经验很少),但我认为有一个变量sceneView.automaticallyUpdatesLighting = true,尝试一下,看它是否有帮助。 - E. Huckabee
你已经读过这篇文章了吗?它还解释了sceneView的照明 https://blog.markdaws.net/arkit-by-example-part-4-realism-lighting-pbr-b9a0bedb013e - StuiterSlurf
1个回答

1

更新日期:2019年11月25日

#第一个原因

AR应用程序中拍摄的快照比从后置RGB相机传来的视频流暗的主要原因是由于你有两个完全不同的场景:第一个是具有自己曝光度的3D模型的SCNScene,而第二个是具有自己曝光度的RGB相机视图。在ARSCNView中,这些曝光值相加形成一个平均曝光度值,可能会更(像在你的情况下)或可能会更

#第二个原因

此外,您需要考虑一个名为whitePoint的实例属性,也称为用作色调映射曲线上限的亮度级别。

var whitePoint: CGFloat { get set }

当使用高动态范围(HDR)相机时,SceneKit会应用一种称为色调映射的过程,将可见场景中宽范围的亮度值转换为显示器可以显示的较窄的亮度值范围。SceneKit从minimumExposure、maximumExposure、exposureOffset和whitePoint属性以及场景亮度的测量确定一个色调映射曲线。
whitePoint的默认值是1.0。通过将此属性设置为更高或更低的值,您可以在阴影和高光之间产生更渐进或更突然的转换。如果wantsHDR值为false,则此属性无效。
camera.whitePoint = 1.5

#第三个原因

RGB相机流、渲染的SCNView和iPhone显示器的颜色模型在Gamma校正方面略有不同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接