iOS 12 中autoenablesDefaultLighting 太亮,SCNView.pointOfView 无效
Posted
技术标签:
【中文标题】iOS 12 中autoenablesDefaultLighting 太亮,SCNView.pointOfView 无效【英文标题】:autoenablesDefaultLighting is too bright in iOS 12 and SCNView.pointOfView is not effective 【发布时间】:2019-03-03 16:59:11 【问题描述】:我正在使用 SceneView 的 SceneKit 的 autoenablesDefaultLighting
和 allowsCameraControl
函数为应用程序中的 obj 3D 模型提供光,并在 Objective-C 中围绕该对象旋转。升级到ios12后,autoenablesDefaultLighting
的默认光照强度变高了,3D模型看起来很亮!
有人遇到过同样的问题吗?如果是,有没有办法控制autoenablesDefaultLighting
在其值为“YES”时的光强度?如果它不可编辑,我尝试通过创建节点将全向光或定向光附加/约束到相机,将光分配给该节点并添加为SCNView.pointOfView
的子节点,但没有灯光照亮场景。
示例:3D object displayed before iOS 123D object displayed in iOS 12
如果有人能帮助我,那就太好了。
非常感谢!
编辑以解决此问题
我创建一个新的 SCNCamera 并将其添加到节点中并设置我的 scnView 的 PointOfView。
使用scnView.pointOfView.wantHDR = YES;
激活此相机的 HDR
但是 a 的背景是灰色的。
要删除灰色背景,我使用scnView.backgroundColor = [UIColor ClearColor]
删除背景颜色
并将相机的曝光设置为-1:
self.scnView.pointOfView.camera.minimumExposure = -1;
self.scnView.pointOfView.camera.maximumExposure = -1;
谢谢
【问题讨论】:
【参考方案1】:您可以尝试启用 HDR。它应该导致平衡的曝光
scnView?.pointOfView?.camera?.wantsHDR = true
启用 HDR 后,您甚至可以使用
控制曝光补偿scnView?.pointOfView?.camera?.exposureOffset
【讨论】:
感谢您的回答我试试这个,它的工作!但即使我设置了,我现在也有灰色背景:self.scnView.backgroundColor = [UIColor whiteColor];
不知道为什么你的背景是灰色的。我希望您没有添加任何自己的光源,因为这可能会禁用默认照明。 “如果将值更改为 true,SceneKit 在渲染不包含灯光或仅包含环境光的场景时会自动添加并放置全向光源。” developer.apple.com/documentation/scenekit/scnscenerenderer/… 作为一种解决方法,您也可以尝试使用清晰的颜色并在 scnView 后面添加白色视图。【参考方案2】:
.camera?.wantsHDR = true
.camera?.wantsExposureAdaptation = false
应该能解决问题!
【讨论】:
以上是关于iOS 12 中autoenablesDefaultLighting 太亮,SCNView.pointOfView 无效的主要内容,如果未能解决你的问题,请参考以下文章