我一直在测试光探针,看看我是否可以像Apple的Badger演示那样重现类似的光照效果,但无论出于何种原因我都无法在SceneKit编辑器中计算光探测器。
我不确定计算光探针的要求是什么,如果我能得到一些澄清,那就太棒了。
我将列出我到目前为止尝试使用光探测器进行计算的内容。
我使用了SceneKit文档中的示例,将对象放在彩色墙旁边。我在物体和墙壁周围制作了一个光探针网格。
灯:
尝试静态模式和动态的所有灯光类型。 尝试使用和不使用基于图像的照明。 还尝试更改直接/间接照明的灯光烘焙选项。 也为灯光切换阴影。
材料:
试过Phong和基于物理的。 对于基于物理的材料,尝试将自发光设置为黑色,将物体(而不是墙壁)设置为零。
节点:
将object movability标志设置为true。 (不是墙壁)
这是编辑器中我如何将对象放置在场景中的屏幕截图。我从场景中删除了所有其他灯光,使截图看起来不那么混乱。
我认为我接下来要尝试的是使用ModelIO计算光探针,希望我能得到一些结果。
更新1:
我试图分享尽可能多的细节,但在考虑之后我觉得分享场景文件本身会提供很多我没想到的有用细节。
我删除了场景中的所有静态/动态光源,只有几何体和探针在场景中。要测试场景,请添加自己的灯光,转到SceneKit编辑器中的最后一个选项卡,然后单击“计算所有探测器”,然后在您选择的设备上运行。
场景文件链接: lightprobe_test.scn
更新2:
我只想展示一下我试图用光探针实现的截图。此屏幕截图显示了一个场景,其中所有静态对象都将光照信息烘焙到其纹理中使用光探测器,我希望获得类似的结果,但是对于场景中的动态物体。
更新3:
我一直在测试ModelIO中的光探针烘烤。到目前为止,我已经能够使用MDLAsset类方法placeLightProbes(withDensity:heuristic:using :)将光探针放置在网格图案中,无法使第二个放置选项工作。但我很高兴我使用这种方法,现在我不必花费数年时间在整个场景中放置探测器。
我确实发现了一些奇怪的东西,在导出场景文件并在Xcode中检查之后我注意到ModelIO创建的新光探针与SceneKit的光探针相比非常大。不确定这是否会导致任何问题,似乎只是一个整容问题。
我尝试使用MDLLightProbe init来烘焙来自场景中的光照信息的探针?(textureSize:forLocation:lightsToConsider:objectsToConsider:reflectiveCubemap:irradianceCubemap :)方法。但每次我运行该方法时,应用程序都会崩溃。我从发生崩溃的线程中截取了一个屏幕截图。
所以这就是我现在所处的地方,我会休息一下,明天再尝试一下。谢谢阅读。
最终更新:
经过社区的大量测试和帮助,我终于找到了为什么我无法在SceneKit编辑器中计算光探测器。为了计算光探针,你的mac需要支持Metal。不幸的是,我的mac mini 2011型号出了名。但我应该升级,这可能是我这样做的借口8)。