运动的佩林噪音?

时间:2011-09-22 14:51:25

标签: xna motion perlin-noise

我成功地使用Perlin噪音来生成地形,云和一些其他漂亮的东西。但是,我现在正试图为一群飞虫(特别是萤火虫)制作动画,并建议我使用Perlin噪音。但是,我不确定如何解决这个问题。

我发现的第一件事就是给出一个像这样的噪音地图:

  1. 为每个萤火虫分配一个随机的初始位置,速度和角加速度。
  2. 在框架上,按照方向向量推进苍蝇的位置。
  3. 读取新位置的噪声贴图,并使用它来调整角加速度 飞向“转向”更亮的像素。
  4. 通过接近其他苍蝇再次调整角加速度,以避免它们聚集在局部最大值附近。
  5. 然而,这并不包括苍蝇到达地图边缘的情况,或者它们可能在仅绕一个轨道运行的情况。第二种情况可能不是什么大问题,但我不确定一种可靠的方法让他们转而避免与地图边缘发生碰撞。

    连连呢?教程或论文(请用英文)?

2 个答案:

答案 0 :(得分:6)

这是2D perlin噪音的一个非常好的来源。您可以遵循完全相同的原则,但不是创建渐变的2D网格,而是可以创建一维渐变阵列。您可以使用它来为特定轴创建噪声。

只需按照此配方,您也可以为每个其他轴创建类似的perlin噪音功能!结合这些动作,你手上应该有一些好看的噪音。 (您也可以将这些噪声函数用作随机加速或速度。由于Perlin噪声函数是全球单调的,因此您的苍蝇不会飞到疯狂的距离。)

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

快乐的飞行!

答案 1 :(得分:1)

也许你在寻找boids?

Wikipedia page

它没有原始概念中的Perlin噪音,也许你可以使用噪音来产生吸引子或反射器,因为你正试图用“飞到更轻”的行为。

PS:上面链接的页面包含指向Firefly algorithm的相关链接,也许您会对此感兴趣?