热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iOS10:Omni类型的SCNLight忽略衰减值?-iOS10:SCNLightoftypeOmniignoringattenuationvalues?

IhaveasimpleSceneKitscenewithonlytwolightsources(ambientandomni)andonemodel.Ihave

I have a simple SceneKit scene with only two light sources (ambient and omni) and one model. I have noticed that my scene appears totally dark when running on iOS 10 (even before I recompiled my app with the iOS 10 SDK). After investigating I realized that my ambient light was the only one affecting my model.

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

The only way to make my omni light affect my model was to bring it really close to it, or to increase its intensity (using the new setIntensity: selector) by a factor of 5000000.

使我的全向光影响我的模型的唯一方法是使它非常接近它,或者将其强度(使用新的setIntensity:selector)增加5000000倍。

Changing the values of attenuationStartDistance, attenuationEndDistance, and attenuationFalloffExponent didn't change the result, which is really odd, considering that if I use 0.0 for both distances then I shouldn't expect any attenuation, and yet it happened (hence the need to use this huge intensity value).

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

This result doesn't change even if I add the SCNDisableLinearSpaceRendering key to my Info.plist or the SCNDisableWideGamut key.

即使我将SCNDisableLinearSpaceRendering键添加到我的Info.plist或SCNDisableWideGamut键,此结果也不会更改。

Am I missing some new parameter or is it an iOS 10 bug?

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

1 个解决方案

#1


2  

I have managed to change the result after changing the values of attenuationStartDistance, attenuationEndDistance, and attenuationFalloffExponent, but only when using that huge intensity value. iOS 10 is definitely not ignoring these parameters.

我已经设法在更改attenuationStartDistance,attenuationEndDistance和attenuationFalloffExponent的值后更改结果,但仅在使用该巨大强度值时。 iOS 10绝对不会忽略这些参数。

However, it seems that iOS 10 is applying yet another attenuation on top the previous one. It is also attenuating the intensity value automatically, regardless of those parameters. Perhaps it's treating this new intensity parameter as if in a physically based renderer, even when it's not?

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

So, if you have a distant omni light source, it seems that you'll still need a big intensity for it to be bright enough from a distance, even if you disable the attenuation.

所以,如果你有一个遥远的全向光源,你似乎仍需要一个很大的强度,即使你禁用了衰减,它也能从远处获得足够的亮度。

EDIT

编辑

iOS 10 is indeed using a physically based lighting model as the new default! After loading a model, iOS 9 will have SCNLightingModelBlinn for the lightingModelName property of the material whereas iOS 10 will have SCNLightingModelPhysicallyBased. You can achieve iOS 9 behavior by changing the value of that property after loading your model.

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

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

推荐阅读
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 本文详细介绍了如何通过RPM包在Linux系统(如CentOS)上安装MySQL 5.6。涵盖了检查现有安装、下载和安装RPM包、配置MySQL以及设置远程访问和开机自启动等步骤。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 解读MySQL查询执行计划的详细指南
    本文旨在帮助开发者和数据库管理员深入了解如何解读MySQL查询执行计划。通过详细的解析,您将掌握优化查询性能的关键技巧,了解各种访问类型和额外信息的含义。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 反向投影技术主要用于在大型输入图像中定位特定的小型模板图像。通过直方图对比,它能够识别出最匹配的区域或点,从而确定模板图像在输入图像中的位置。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 本文详细介绍了Java中org.w3c.dom.Text类的splitText()方法,通过多个代码示例展示了其实际应用。该方法用于将文本节点在指定位置拆分为两个节点,并保持在文档树中。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • 本文详细介绍了如何准备和安装 Eclipse 开发环境及其相关插件,包括 JDK、Tomcat、Struts 等组件的安装步骤及配置方法。 ... [详细]
  • 在创建新的Android项目时,您可能会遇到aapt错误,提示无法打开libstdc++.so.6共享对象文件。本文将探讨该问题的原因及解决方案。 ... [详细]
author-avatar
一代天骄的小男人_580
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有