Algorithm 创建雨水效果/水滴的算法?

Algorithm 创建雨水效果/水滴的算法?,algorithm,effects,Algorithm,Effects,无论使用何种特定语言,都会产生雨效果或水滴,其背后的原理是什么。我在Flash中看到了一些令人印象深刻的雨和水效果,但它实际上是如何工作的呢 他们可能使用的最多。这里有一个由Mandelbrot和Lovejoy创作的作品,这是最常被引用的关于开发分形模型来表示雨水的作品之一。一种非常便宜的老式方法是使用调色板循环。基本上,您可以设置颜色渐变,并以固定的间隔将一种颜色移动到下一种颜色。运动的颜色给人以运动的错觉。我曾参与过一些游戏,其中雨、风、雪、瀑布、火等都使用调色板循环来设置动画。这是一门垂

无论使用何种特定语言,都会产生雨效果或水滴,其背后的原理是什么。我在Flash中看到了一些令人印象深刻的雨和水效果,但它实际上是如何工作的呢


他们可能使用的最多。

这里有一个由Mandelbrot和Lovejoy创作的作品,这是最常被引用的关于开发分形模型来表示雨水的作品之一。

一种非常便宜的老式方法是使用调色板循环。基本上,您可以设置颜色渐变,并以固定的间隔将一种颜色移动到下一种颜色。运动的颜色给人以运动的错觉。我曾参与过一些游戏,其中雨、风、雪、瀑布、火等都使用调色板循环来设置动画。这是一门垂死的艺术,但它仍然有效

第二个例子(雨滴水效应例子)可能是用模拟器完成的

你在问一个问题,好像这两个例子是相关的,但实际上你有

1) 模拟空中看到的雨滴(雨滴轨迹;简单,但真实感很大程度上取决于灯光)

为此,您需要模拟以下事件:

for each time step:
    create new drops
    move existing drops vertically down
    remove (or/and animate) the drops hitting the ground
正如其他答案所指出的,可以使用各种算法创建新的液滴(大小和位置)。 至于速度,它们以恒定的速度移动。 最后,要显示您的轨迹,您需要查看简单的

2) 模拟飞溅波(水模拟,示例中显示了反射面)

为此,你只需要知道水滴落在哪里,它们有多大,剩下的就是波的传播。然而,只有在有反射的情况下才真正可见,这可能有点棘手

注: 有许多因素决定了现实主义,但大部分都归结为细节。 例如,通常只有在奇怪的照明条件下才能清楚地看到雨水——靠近灯具或在高对比度背景下。否则就相当惨淡了

还有互动中的细节——溅到它碰到的表面上,会留下气泡(如果足够近,可以注意到),或者产生波浪

另一个例子——如果你看这个例子,这并不真实,但它确实说明了一点,你会发现,尽管雨看起来更像雪,但它暴露了你第一个例子的“平坦度”(绝对没有深度)

所以,一切都是关于细节的


试着根据你必须模拟的事件对你所拥有的进行建模,然后分别解决模拟每个事件的问题——例如,使用分形对降雨进行播种可能是一种过分的做法,但如果你很好地对你的工作进行建模,你就从随机播种开始,然后用更精确/复杂的方法来代替后者。

无法获得链接:(谈论会话cookie:)你应该定义什么是给你留下深刻印象的雨和水的效果(可能有很多不同的东西)。如果你有示例,请发布链接。@unreason:查看我上面发布的链接。:)正如我所想的-这两个示例几乎没有共同点。。。好吧,我来回答一个问题,在这种情况下,粒子系统会有点过头,特别是如果你想要一个大的可见雨场的话。如下文所述,存在更简单的解决方案。