gpt4 book ai didi

iOS SceneKit NEON 发光

转载 作者:IT王子 更新时间:2023-10-29 05:47:07 28 4
gpt4 key购买 nike

一直在研究 Scenekit 上的照明,虽然我现在可以应用照明节点来照亮某些东西,但我正在寻找一种从对象内部照明的方法。

举个例子,想象一下 NEON 或将光转换到其他物体上的灯泡。

有什么想法可以实现吗?

非常感谢。

最佳答案

正如@DavidRönnqvist 在评论中暗示的那样,有多种方法可以使物体看起来发光。您可以一起或单独执行这些操作 — 您可能需要调整组合它们的方式以获得您想要的效果。

  1. 对于发光的对象,您可能不希望场景中的其他光源产生阴影。使用 emission Material 的 channel ,为对象提供覆盖其他光源阴影的颜色或纹理。 (如果您使用纹理,较亮的部分会发光,如上述文档中的示例所示。)

  2. 您可能希望场景中的其他元素被发光的物体照亮。 emission Material 属性只是防止对象因照明/阴影而变暗,它不会使其成为光源。要获得光源,您需要将至少一个 SCNLight 添加到包含您的对象的节点树中。

    根据您的场景,您也许可以只使用一个光源;例如如果对象是灯泡,您可以在其中心放置一盏灯并完成它。 (好吧,您可能还需要尝试使用节点和灯光的类别位掩码,以确保灯光通过灯泡发出而不是被它遮挡。)如果您有一个大而复杂的 NEON 标志,您可能需要创建多个光源——否则,标志附近物体上的照明会暴露它是一个单点光源。 (如果它照亮的标志附近没有任何东西,单点光源可能就足够了。)

  3. 如果您希望在光源周围有一个发光的光环,事情就会变得有点困难。那是体积光照,它不是 SceneKit 可以开箱即用的东西。但是有几种方法可以伪造它:

    • 对于像灯泡这样的点光源,具有发光纹理的 2D 广告牌可能就足够了。 (请参阅@MatthewBaker 的评论。)
    • 对于像 NEON 这样更大的灯,您可以尝试沿其长度放置多个广告牌。使用 SCNParticleSystem 可能是实现它的一个好方法,因为它可以在整个几何体表面产生粒子。
    • 对于形状复杂的灯,另一个不错的选择可能是 shader modifiers . GLSL 着色器可以通过根据 View 和表面法向量之间的角度改变 alpha 来模拟体积光照。
    • 如果发光只需要出现在非常靠近光源的表面上——例如 NEON 管后面的实心标志——你可以通过将辉光烘焙成纹理并在所述表面上使用该纹理来伪造它。 (同样,emission 来拯救。)
    • 将 Core Image 滤镜附加到包含光线的节点(或其几何体的副本),以便您可以增亮、扩展和模糊渲染图像。
    • 使用techniques使用一些奇特的 GLSL 技巧进行多 channel 渲染以创建光晕,如@Moustach 的回答中所述。

关于iOS SceneKit NEON 发光,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27507530/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com