• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iOS 10 : SCNLight of type Omni ignoring attenuation values?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 22:11:43 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

让泛光灯影响我的模型的唯一方法是让它非常接近它,或者将其强度(使用新的 setIntensity: 选择器)增加 倍5000000.

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

即使我将 SCNDisableLinearSpaceRendering 键添加到我的 Info.plistSCNDisableWideGamut 键,此结果也不会改变。

是我遗漏了一些新参数还是 iOS 10 错误?



Best Answer-推荐答案


在更改 attenuationStartDistanceattenuationEndDistanceattenuationFalloffExponent 的值后,我设法更改了结果,但仅在使用那个巨大的 强度值。 iOS 10 绝对不会忽略这些参数。

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

因此,如果您有一个遥远的全向光源,您似乎仍然需要一个较大的 intensity 才能使其在远处足够亮,即使您禁用了衰减。

编辑

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

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

关于iOS 10 : SCNLight of type Omni ignoring attenuation values?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39652173/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap