2011-09-22 87 views
6

我成功地使用Perlin噪音来生成地形,云层和其他一些漂亮的东西。不过,我现在正在尝试制作一组​​飞虫(特别是萤火虫),并且还建议我使用Perlin噪音。但是,我不太确定如何去做这件事。Perlin运动噪声?

发生到我的是,给定一个噪声图像这样的第一件事情:

  1. 分配每个萤火虫一个随机的初始位置,速度和角加速度。
  2. 在框架上,将苍蝇的位置跟随其方向矢量。
  3. 在新位置读取噪声图,并使用它来调整角加速度,导致飞向“转向”更亮的像素。
  4. 再次通过其他苍蝇的接近来调整角​​加速度,以避免它们聚集在局部最大值附近。

但是,这并不包括苍蝇到达地图边缘的情况,或者它们可能只是绕着单个点进行绕行的情况。第二种情况可能不是什么大不了的事情,但我不确定是否让他们转而避免与地图边缘发生碰撞的可靠方法。

对此提出建议?教程或论文(请用英文)?

回答

6

这是二维珀林噪声的一个很好的来源。您可以遵循完全相同的原则,但不是创建渐变的二维网格,而是创建一维渐变的数组。您可以使用它来创建特定轴的噪音。

只需遵循这个配方,您也可以为您的每个其他轴创建类似的珀林噪声函数!结合这些动作,你的手上应该有一些好看的噪音。如果您想了解(你也可以使用这些噪声功能随机accellerations或速度。由于柏林噪声函数是全局单调,自己过得也不会掉火箭疯狂的距离。)

http://webstaff.itn.liu.se/~stegu/TNM022-2005/perlinnoiselinks/perlin-noise-math-faq.html

其他类型的议案,我会建议布朗运动。这与尘埃颗粒漂浮在房间周围时的运动类似。本文最后会介绍一些更有趣的数学,但如果您完全熟悉Matlab,前几组指令应该很容易理解。如果没有,只需谷歌的功能,并找到他们的本地等值为您的环境(或自己创建它们!)这将是一个小更逼真,并能更快地计算比Perlin杂

http://lben.epfl.ch/files/content/sites/lben/files/users/179705/Simulating%20Brownian%20Motion.pdf

快乐飞翔!

+0

当你回答一个一年的问题时,这个尴尬的时刻。 – Peaches491

+0

虽然这是一个很好的答案。比我所做的更好,并且将在未来派上用场。谢谢。 –

1

也许您在寻找boids?

Wikipedia page

它不会在原有的概念特征Perlin杂点,也许你可以用噪声产生吸引或repulsors,因为你试图用'飞较轻的行为做。

PS:上面链接的页面有相关链接到Firefly algorithm,也许您会对此感兴趣吗?

+0

我看到了萤火虫算法(很好地命名为易于谷歌搜索),但也寻找少一点萤火虫特定的东西。我会看看boids。 –

+0

如果你想避免碰撞,对于做任何类型的鸡群模拟真的很酷,无论是鸟类,鱼类等。如果你想要一些感觉混乱的东西,也就是说并不是所有的元素趋于统一的方向,你可以设置为“凝聚力”的影响。 – jv42