你问的问题好像这两个例子是相关的,但你实际上有
1)模拟空气中看到的雨滴(水滴轨迹;简单,但真实性很大程度上取决于光照)
为此,您可以模拟以下事件:
for each time step:
create new drops
move existing drops vertically down
remove (or/and animate) the drops hitting the ground
Run Code Online (Sandbox Code Playgroud)
正如其他答案中指出的那样,可以使用各种算法创建新的水滴(大小和位置)。至于速度,它们以恒定的速度移动。最后,要显示您的踪迹,您需要查看简单的投影
2)模拟飞溅波(水模拟,示例中显示了反射面)
为此,您只需要知道水滴落在哪里以及它们有多大,剩下的就是波的传播。然而,只有存在反射时,这才真正可见,这可能有点棘手。
注:决定真实性的因素有很多,但主要归结为细节。例如,通常只有在奇怪的照明条件下(靠近灯或在高对比度背景下)才能清楚地看到雨。不然的话就相当惨淡了。
还有交互中的细节 - 溅到它撞击的表面上,这可能会留下气泡(如果足够近可以注意到),或产生波浪。
另一个例子 - 如果您看一下本教程,这并不现实,但它确实说明了一点,您会发现即使雨看起来更像雪,它也会暴露第一个示例的“平坦度”(这绝对是)没有深度)。
所以,一切都与细节有关。
尝试根据必须模拟的事件对您所拥有的内容进行建模,然后分别模拟每个事件来解决问题 - 例如,使用分形来播种降雨可能是一种矫枉过正,但如果您很好地对您的工作进行建模,那么您可以从随机播种开始,然后替代使用更准确/复杂的方法。