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 的 autoenablesDefaultLightingallowsCameraControl 函数为应用程序中的 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 无效的主要内容,如果未能解决你的问题,请参考以下文章

UIStackView 在 iOS 12 中运行良好,但在 iOS 11 中却不行

iOS 12 中未提供 FCM 通知

iOS12是啥字体

iOS12系统应用发送邮件中的附件

ios12后台定位服务停止

UIImageView 中的矢量图像在 iOS 12 和 13 中呈现不同