2011-12-26 125 views
0

在那裏並不存在許多容易遵循的Perlin噪聲教程,當然不是Java或2D。我沿用了this教程,但並沒有很好的解釋2D噪聲。我知道你必須生成一組數字,然後插入它們和一切。我的問題是我不知道如何執行頻率,持續性或幅度來幫助影響數字的結果。任何人都可以給我一些基本的Perlin噪聲函數或指向Java或類似語言的2D Perlin噪聲教程的鏈接嗎?謝謝!Java:2D Perlin噪聲創建

編輯:有人可以簡單地解釋一下這個過程,或者如何實現頻率,幅度和持久性來影響這一代?請:) :)

+0

你的問題到底是什麼?在您鏈接的頁面上有(僞)代碼,顯示如何處理perlin,包括持久性。您可以直接將其翻譯成您喜歡的任何語言。 – Howard 2011-12-26 16:45:03

+0

是的,我知道,但我有一個完全理解它的問題。我把它完全翻譯成了Java,但是我有一個問題,它完全理解數學運算的方式。我需要某種清楚的解釋過程如何工作。 – MrDrProfessorTyler 2011-12-26 17:27:02

回答

2

振幅頻率在柏林噪聲生成中沒有自由變量。相反,他們通過持久性進行參數化。

噪聲函數是幾個基本函數的總和。

n(x) = sum(n_i(x*f_i) * a_i, i=0..N-1) 

每個函數被調用倍頻,因此由索引i編號。值f_i表示振幅的頻率和a_i。正如之前提到的它們完全由索引i本身,由持久p參數化來確定:

f_i = 2^i 
a_i = p^i 

雖然每個噪聲功能n_i(x)是歸一化頻率1和振幅1,整體術語n_i(x*f_i) * a_i現在具有頻率和由上述表達式給出的幅度。

換句話說,該噪聲函數n(x)是八度的,其中第一個具有頻率1和振幅1,第二個具有頻率2和振幅p總和,第三具有頻率4和振幅p^2,等等。

+0

謝謝,這對Howard很有幫助。我現在縮小了一維Perlin噪聲,並嘗試了這一點,它似乎很好地工作。再次感謝! – MrDrProfessorTyler 2011-12-26 18:20:18

+0

另外,當文章中提到你必須將噪音加在一起,並且造成佩林噪音時,這是否意味着噪音的平均值? – MrDrProfessorTyler 2011-12-26 18:29:41

+0

只需添加,在我的答案中查看'n(x)'的表達式。 – Howard 2011-12-26 18:31:08