2014-02-23 41 views
2

考慮到this,我不明白爲什麼我必須採取梯度向量的點積和我的指向它的位移。任何人都可以解釋爲什麼我必須這樣做嗎?我實際上理解this教程,他們只是簡單模糊地計算網格點的值(稱爲平滑噪聲)。這兩種情況下的線性插值對我都很清楚。那麼任何人都可以解釋爲什麼他們會在第一個教程中使用位移的點積和所謂的「gradientvector」?它有什麼作用?2d柏林噪音。爲什麼我必須採取位移和gradientvector的點積?

+0

第一個鏈接似乎是關於對場進行二次採樣的不同方式 - 它稍微錯過了柏林噪聲點(這是噪聲的多個尺度相加在一起)。所以點積不是必需的,但是如果您對子採樣進行幾何觀察,則可以使用它。 –

+0

是不是分形噪音,當你添加不同的八度音的噪音? – crush3dice

+0

它不是真正的分形,因爲它在不同尺度上沒有自相似性。這只是噪聲的總和頻率。 –

回答

1

好吧,我現在想出了自己。第一個教程的噪音是所謂的梯度噪音,而第二個教程是噪音。 ken的經典perlin噪音是一種梯度噪音(更好的質量和性能),而價值噪音更易於理解。但是,在這兩種情況下,八度頻道都加在一起n次(梯度噪音並不取代這個程序)。 參見:

http://en.m.wikipedia.org/wiki/Value_noise

http://en.m.wikipedia.org/wiki/Gradient_noise

梯度噪聲的種子與長度1.這些載體被放置爲1〜彼此相距一定距離的隨機向量的網格。取4個最近格點的位移向量的點積作爲我想要的點,然後在這4個點上的種子梯度向量對於這4個點中的每一個都會產生一個介於-1和1之間的值。然後可以插入這些值以獲取實際的點值。

對於每個網格點,值噪聲都會實時生成隨機值,它們之間的距離爲1。這些值是用種子生成的,它允許我一遍又一遍地得到相同的值。當我選擇我的方形圍繞我想要得到的點時,我會根據我的傳遞座標生成隨機值(這種生成器的算法可以在第二個圖解中看到),然後用周圍的網格點模糊它以得到平穩的噪音。