5

正如Apple 论坛上的这个帖子所提到的,iOS 10 上的灯光现在变弱了,并且改变了场景的外观。

该线程建议设置SCNDisableLinearSpaceRendering为“是”,但这不起作用。换句话说,使用SCNDisableLinearSpaceRendering不会使您的场景在 iOS 10 上看起来与在 iOS 9 上相同——至少在我们的测试中不会。

我们也试过:

floorNode.geometry?.firstMaterial?.lightingModel = SCNMaterial.LightingModel.blinn

下面的屏幕截图显示了同一场景之间的差异。请注意,即使照明相同,地板也是如何从绿色变为黄色的。

场景包含一种定向光和一种环境光。

重现场景的文件:https ://www.dropbox.com/sh/cg5f7hyf1oonxfu/AAAJef7LhpSxuJyUSjqfGbmca?dl=0 。

即使它确实有效,设置SCNDisableLinearSpaceRendering为 YES 似乎也会禁用 PBR。

我们的应用程序允许用户自定义定向光的颜色。目标是在利用 PBR 的同时,在 iOS 10 场景中重现来自 iOS 9 场景的相同自定义光照。

1) 我们如何确保 iOS 10 场景看起来与 iOS 8/9 场景相同?

2) 如何在受益于 PBR 的同时实现 #1?

iOS 8/9(在模拟器上运行):

在此处输入图像描述

iOS 10(在用户设备上运行):

在此处输入图像描述

4

2 回答 2

1

您可以通过将其材质的照明模型从 更改为来渲染您的场景,iOS 10就像它被渲染一样。iOS 9SCNLightingModelPhysicallyBasedSCNLightingModelBlinn

示例:如果场景中只有一个 3D 模型:

for(SCNMaterial * mt in model.geometry.materials)
    mt.lightingModelName = SCNLightingModelBlinn;

但是,这样做您将无法利用 PBR。如果您想继续使用 PBR,那么您可以使用intensity和的temperature属性SCNLight来实现不同的结果。

于 2016-09-23T05:29:09.460 回答
0

这是 Scene Kit 中已确认的错误。我们在 Bug Reporter 中提交了错误号 28459280 的报告。问题是 Metal在 iOS 10 上总是设置locksAmbientWithDiffuse为。true

根据一位 Scene Kit 工程师的说法,一种解决方法是手动设置locksAmbientWithDiffuse相关true节点(在本例中为地板节点),然后在 iOS 8/9 上调整照明,直到获得所需的外观。

这应该确保 iOS 10 场景看起来与 iOS 8/9 场景相同。

于 2016-09-26T06:43:34.293 回答