菜鸟教程小白 发表于 2022-12-12 22:11:43

iOS 10 : SCNLight of type Omni ignoring attenuation values?


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

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

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

<p>即使我将 <code>SCNDisableLinearSpaceRendering</code> 键添加到我的 <code>Info.plist</code> 或 <code>SCNDisableWideGamut</code> 键,此结果也不会改变。</p >

<p>是我遗漏了一些新参数还是 <code>iOS 10</code> 错误?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>在更改 <code>attenuationStartDistance</code>、<code>attenuationEndDistance</code> 和 <code>attenuationFalloffExponent</code> 的值后,我设法更改了结果,但仅在使用那个巨大的 <code>强度</code>值。 <code>iOS 10</code> 绝对不会忽略这些参数。</p>

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

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

<p><strong>编辑</strong></p>

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

<pre><code>for(SCNMaterial * mt in model.geometry.materials)
    mt.lightingModelName = SCNLightingModelBlinn;
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于iOS 10 : SCNLight of type Omni ignoring attenuation values?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/39652173/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/39652173/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iOS 10 : SCNLight of type Omni ignoring attenuation values?