我已成功地使用Perlin噪声生成了地形,云层和其他一些漂亮的东西。但是,我现在正在尝试为一组飞行的昆虫(特别是 Firebug )制作动画,并建议我也为此使用Perlin噪波。但是,我不太确定该怎么做。

我想到的第一件事就是给出了如下噪声图:

  • 为每个 Firebug 分配一个随机的初始位置,速度和角加速度。
  • 在帧上,沿着其方向矢量前进苍蝇的位置。
  • 在新位置读取噪声贴图,并使用它来调整角加速度,从而导致
    飞向“较轻”像素的“转向”。
  • 通过其他蝇的接近度再次调整角加速度,以避免它们聚集在局部最大值附近。

  • 但是,这并不涵盖苍蝇到达 map 边缘的情况,也不会涵盖仅绕单个点飞行就可能结束的情况。第二种情况可能没什么大不了的,但是我不确定让它们转向以避免与 map 边缘发生碰撞的可靠方法。

    有什么建议吗?教程或论文(请用英语)?

    最佳答案

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

    只需遵循此食谱,您就可以为其他每个轴创建类似的perlin杂讯功能!结合这些 Action ,您的手上应该会有一些悦耳的声音。 (您还可以将这些噪声函数用作随机加速或速度。由于Perlin噪声函数在全局范围内是单调的,因此您的苍蝇不会飞到疯狂的距离。)

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

    如果您对其他类型的运动感到好奇,建议您使用 Brownian Motion 。这与尘埃粒子在您的房间周围漂浮时所表现出的 Action 是一样的。本文最后讨论了一些更有趣的数学运算,但是如果您完全熟悉Matlab,那么前几套说明应该很容易理解。如果不是的话,只需在fununcons上进行搜索,然后为您的环境找到它们的 native 等效物(或自己创建它们!)这将比perlin噪声更真实一些,并且计算速度更快。

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

    祝飞行愉快!

    关于xna - 佩林运动的噪音?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7516810/

    10-12 19:28