我一直在研究Scenekit中的灯光,虽然现在我可以应用灯光节点来照亮某些东西,但我正在寻找一种从对象内部照明的方法。
例如,想象一下霓虹灯发光或者灯泡照亮其他物体。
有什么好的想法吗?
非常感谢。
我一直在研究Scenekit中的灯光,虽然现在我可以应用灯光节点来照亮某些东西,但我正在寻找一种从对象内部照明的方法。
例如,想象一下霓虹灯发光或者灯泡照亮其他物体。
有什么好的想法吗?
非常感谢。
正如@DavidRönnqvist在评论中暗示的那样,让一个对象看起来发光有多种方法。您可以分别或同时使用这些方法 - 您可能需要调整它们的组合方式以获得所需的效果。
对于发出光线的对象,您可能不希望场景中的其他光源产生遮挡效果。使用材质的emission
通道,为对象添加颜色或纹理,以覆盖其他光源的遮挡效果。(如果使用纹理,则亮度较高的部分将会发出发光,就像在前面链接文档中展示的那样)。
您可能希望场景中的其他元素也受到发光物体的照明。 emission
材料属性只能使对象免受光照/遮挡的影响,而不能成为光源。要创建光源,您需要向包含对象的节点树添加至少一个SCNLight
。
根据您的场景,您可能只需要一个光源;例如,如果对象是灯泡,则可以将光源放置在其中心并完成它。(好吧,您可能还需要调整节点和光的类别位掩码,以确保光线穿过灯泡而不是被遮挡。)如果您有一个大型复杂的霓虹灯牌,您可能需要创建多个光源,否则,附近物体的照明将揭示它是单点光源。(如果没有任何物体靠近标志进行照明,则单点光源可能已经足够了。)
如果您想要在光源周围产生发光光晕,就比较难了。那是体积照明,SceneKit无法直接为您完成。但是有几种方法可以伪造出来:
SCNParticleSystem
,因为它可以在几何体表面上生成粒子。emission
)。编辑:哎呀,我可能误解了问题... Rickster的回答更适合你的需求。
华丽的3D是我的专长!
有几种方法可以使一个物体在SceneKit中发光。
最直接的方法是使用GLSL在SCNTechnique
中进行设置。您需要多次通过渲染照明然后连续X和Y模糊它(比同时处理更快)。关于这方面的内容,有一篇非常棒的文章可供参考 GPU Gems。但是如果过度使用此方法会很重,而且我不确定您是否只能在SCNTechnique
中定位照明。
第二种方法是使用CI滤镜。只需添加高斯模糊并将其组合在顶部即可。您可能需要其他效果来选择/增强发光元素。如果您正在寻找围绕对象发光的方式,则这个问题也可能对您有所帮助。
第三种方法是使用广告牌来伪造发光效果。在Photoshop或您的3D软件中制作一个模板,将其放置在始终朝向相机的平面上。将它的混合模式更改为Screen,您就能够获得非常廉价的发光效果!
最后,对于您想要实现的光线照射效果,您可能需要查看神光(Godrays)。它们也很容易使用GLSL设置,因此SCNTechnique
应该能够胜任。这里有一篇关于此的文章。
SCNTechnique
渲染通道限制为特定节点 - 请参见技术定义字典中的includeCategoryMask
/excludeCategoryMask
。 - rickster