首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS 10: Omni类型的SCNLight忽略衰减值?

iOS 10: Omni类型的SCNLight忽略衰减值?
EN

Stack Overflow用户
提问于 2016-09-23 11:37:08
回答 1查看 323关注 0票数 2

我有一个简单的SceneKit场景,只有两个光源(环境光和泛光灯)和一个模型。我已经注意到,当我在iOS 10上运行时(甚至在我用iOS 10 SDK重新编译我的应用程序之前),我的场景就会变得完全黑暗。经过调查,我意识到我的环境光是影响我的模型的唯一因素。

使我的泛光灯影响我的模型的唯一方法是使它非常接近它,或者通过5000000因子增加它的强度(使用新的setIntensity:选择器)。

更改attenuationStartDistanceattenuationEndDistanceattenuationFalloffExponent的值并没有改变结果,这真的很奇怪,考虑到如果我在两个距离上都使用0.0,那么我应该不会期望任何衰减,但它发生了(因此需要使用这个巨大的强度值)。

即使我将SCNDisableLinearSpaceRendering密钥添加到我的Info.plistSCNDisableWideGamut密钥中,这个结果也不会改变。

我是不是遗漏了一些新参数,或者是一个iOS 10错误?

EN

回答 1

Stack Overflow用户

发布于 2016-09-23 12:27:10

在更改了attenuationStartDistanceattenuationEndDistanceattenuationFalloffExponent的值之后,我已经设法更改了结果,但仅在使用巨大的intensity值时。iOS 10绝对没有忽略这些参数。

然而,似乎iOS 10在前一个上应用了另一个衰减。它还会自动衰减intensity值,而不管这些参数是什么。也许它将这个新的intensity参数视为基于物理的渲染器,即使它不是?

因此,如果你有一个远距离的泛光灯,似乎你仍然需要一个大的intensity才能让它从远处足够亮,即使你禁用了衰减。

编辑

iOS 10确实使用了基于物理的照明模型作为新的默认模型!加载模型后,对于材质的lightingModelName属性,iOS 9将具有SCNLightingModelBlinn,而iOS 10将具有SCNLightingModelPhysicallyBased。您可以通过在加载模型后更改该属性的值来实现iOS 9行为。

代码语言:javascript
复制
for(SCNMaterial * mt in model.geometry.materials)
    mt.lightingModelName = SCNLightingModelBlinn;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39652173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档