2011-09-22 89 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