我成功地使用柏林噪声来生成地形、云和其他一些漂亮的东西。但是,我现在正在尝试为一群飞虫(特别是 Firebug )制作动画,有人建议我为此也使用 Perlin 噪声。但是,我不确定如何解决这个问题。
我想到的第一件事是,给出这样的噪声图:
飞向更亮的像素“转向”。
但是,这并不包括苍蝇到达 map 边缘的情况,或者它们可能只是绕着一个点运行的情况。第二种情况可能没什么大不了的,但我不确定有什么可靠的方法可以让它们转向以避免与 map 边缘发生碰撞。
建议?教程或论文(请用英文)?
最佳答案
这是 2D 柏林噪声的一个很好的来源。您可以遵循完全相同的原则,但您可以创建一维渐变数组,而不是创建 2D 渐变网格。您可以使用它为特定轴创建噪声。
只需按照此配方,您也可以为其他每个轴创建类似的柏林噪声函数!结合这些 Action ,你的手上应该会有一些好看的噪音。 (您也可以将这些噪声函数用作随机加速度或速度。由于 Perlin 噪声函数是全局单调的,您的苍蝇不会飞到疯狂的距离。)
http://webstaff.itn.liu.se/~stegu/TNM022-2005/perlinnoiselinks/perlin-noise-math-faq.html
如果您对其他类型的运动感到好奇,我建议您使用 布朗运动 .这与灰尘颗粒漂浮在您的房间周围时所表现出的运动相同。本文最后介绍了一些更有趣的数学,但如果您完全熟悉 Matlab,那么前几组指令应该很容易理解。如果没有,只需在谷歌上搜索函数,并为您的环境找到它们的原生等效项(或自己创建它们!)这将更现实一点,并且比柏林噪声计算速度更快
http://lben.epfl.ch/files/content/sites/lben/files/users/179705/Simulating%20Brownian%20Motion.pdf
快乐飞翔!
关于xna - 运动的柏林噪声?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7516810/