SKEmitterNode 如何在不同背景下使用混合模式“添加”保持相同的效果

Posted

技术标签:

【中文标题】SKEmitterNode 如何在不同背景下使用混合模式“添加”保持相同的效果【英文标题】:SKEmitterNode how to maintain same effect with blend mode "add" across different backgrounds 【发布时间】:2016-11-06 00:29:38 【问题描述】:

我有一个非常酷的效果,我喜欢在 xcode 中使用 sks 文件和混合模式“添加”。现在我当时并没有意识到,但是在查看了苹果文档后,我发现效果实际上是基于背景颜色的,具体来说:

添加粒子和底层图像的像素值。如果此值大于 1,则创建一个白色像素

现在,我希望在每种不同的背景颜色上都具有相同的效果,但据我所知,唯一的方法是使用“Alpha”混合效果。但这只是给了我选择纯色的选择。这是我想应用于所有不同背景颜色的图形:

我怎样才能在所有不同的背景颜色上产生这种效果?我使用的是默认的 spark 粒子文件。

更新:

在苹果想出一种方法来做我想做的事或其他人找到方法之前,我不会回答这个问题。

【问题讨论】:

【参考方案1】:

由于粒子系统和the very limited masking facilities of SpriteKit 的独特性,我认为这无法做到。

反转掩码的可用性,以一种非嵌套的方式,不是我们目前所知的 SpriteKit 中的集群掩码,将立即解决这个问题。

做到这一点的方法,通常没有反转遮罩,将有两个完全相同的粒子系统实例,一个用作遮罩以去除多余的黑色,一个是您在黑色上看到的视觉元素,那就是然后在你的背景上合成(作为一个整体)。

KnightOfDragon 在另一个用例中受到粒子系统个性的影响:Duplicating a particle emitter effect in Sprite Kit

【讨论】:

你确定没有办法吗?如果粒子效果根据背景发生变化,我看不出“添加”效果的目的是什么。拥有这种混合模式似乎完全没有意义。如果我可以复制完全相同的粒子发射器,在它后面加上你说的黑色,那就完美了。我不知道该怎么做,我什至不确定这是否可能。它必须在相同的位置生成相同的粒子,但必须是具有不同颜色的不同发射器。 是的,您评论的最后一部分完美地解释了这个问题。这是一个由其他原因导致的问题,即在 SpriteKit 中没有很好的掩蔽,这是我在最后几个问题中一直在烦恼的问题。可复制的粒子系统或适当的(和完整的)掩蔽系统都可以解决这个问题。在这两者中,适当的(和完整的)掩蔽更有用。可悲的是,Apple 似乎已经开始着手处理它了:***.com/questions/40436047/… 如果我们能完成这个反转,就完成了! 而且,至于添加剂混合没用,年轻人,用肥皂漱口!添加剂混合是地球上最好的混合模式!当您开始更频繁地使用粒子时,您会发现这绝对是惊人的。与此同时,在 Apple 为我们提供反转遮罩之前,请确保您在游戏场景的真实描绘上创建所有粒子系统,以便它们与关卡的颜色和主题相匹配和工作。颗粒和添加剂混合就像花生酱和果酱一样,生来就在一起。 还有其他方法可以做到这一点吗?也许没有 SpriteKit 和其他框架? 你可以使用虚幻引擎。它具有惊人的粒子、混合技术和掩蔽能力。但将涉及改变你的生活。获得您想要的结果的最好和最快的方法是重新开始,使用 SK 粒子编辑器和游戏的背景代表,尽可能地获得它。您还需要更多粒子,才能在非黑色背景上获得这种水平的活力。

以上是关于SKEmitterNode 如何在不同背景下使用混合模式“添加”保持相同的效果的主要内容,如果未能解决你的问题,请参考以下文章

如何停止粒子效果? (SKEmitterNode)

如何让 SKEmitterNode 在 SwiftUI 中工作?

点亮 SpriteKit SKEmitterNode

在 SpriteKit 中使用 SKEmitterNode 和粒子创建轨迹

无法在 iOS9 中暂停 SKEmitterNode

从 SKEmitterNode 动画粒子