我正在使用画架并尝试根据此physics liquid演示生成简单的水模拟。我正在努力解决的问题是作者声称他们“变得艰难”的最后一步。正是这一步骤将粒子合并为无定形的团块,从而产生凝聚力和流动性。
如果链接不再可用,总而言之,我已经按照模拟“步骤”创建了粒子液体原型,具体如下:
所以我编写了一些代码,使用阈值检查将红色(0xFF0000)任何符合条件的形状/粒子着色。在这种情况下,标准是任何颜色大于RGB(0,0,200)的标准。如果没有,它们将显示为蓝色(0x0000FF)。
var blurFilter = new createjs.BlurFilter(emitter.size, emitter.size*3, 1);
var thresholdFilter = new createjs.ThresholdFilter(0, 0, 200, 0xFF0000, 0x0000FF);
请注意,由于前面提到的阈值过滤器,只显示蓝色和红色。作为参考,生成的颜色是RGB(0,0,0-255)。方法r()只生成一个随机数,直到传入的值。
graphics.beginFill(createjs.Graphics.getRGB(0,0,r(255)));
我正在使用这个应用阈值标准的想法,以便我以后可以围绕粒子粘附设置一些边界。我的想法是更大的形状会有更大的“引力”。 你可以从下面附带的粒子喷泉中看到我已经完成上面的步骤#1-2,但是这个步骤#3我不确定如何应用。我无法识别我可以从画架中应用的单个滤镜,它可以转换形状或以任何方式合并它们。
我正在考虑我可以做一个getBounds()并绘制一个新的形状,但那时他们不会真正合并。它们也不会表现出液体的性质,尽管它们更大并且看起来更合并。
bounds = blurFilter.getBounds(); // emitter.size+bounds.x, etc.
问题实际上变成了如何定义图像中模糊的形状。除了眯着眼睛和用我的想象力,我还没有找到解决办法。
我还四处寻找一种解决方案,在形状之间应用重力,这样它们可能会合并在一起并结合起来,但也许简单来说,画架不是正确的工具。
感谢您对我如何处理此问题的任何想法。