自1983年由肯·佩林(Ken Perlin)推出的Perlin噪音,自其問世以來,一直被廣泛應用於計算機圖像生成中。無論是程序生成地形、為變量添加伪隨機變化,還是輔助圖像紋理的創建,這種噪音技術都顯現出了其獨特的價值。那麼,Perlin噪音究竟是什麼,為何能讓電腦生成的圖像如此逼真?
Perlin噪音使得計算機生成的視覺元素,如對象表面、火焰、煙霧或雲霧,能夠更自然地模擬自然界中紋理的隨機樣貌。
Perlin噪音的誕生源於肯·佩林對1980年代初期計算機生成圖像機械化外觀的不滿。他在1985年的SIGGRAPH論文《圖像合成器》中正式闡述了這一技術。這項技術的發展伴隨著他在迪士尼的科幻動畫片《電子世界》(Tron, 1982)的工作風格。
據悉,佩林於1997年因創造該算法而獲得了奧斯卡技術成就獎,以表彰他對影視特效的貢獻。這一成就的背後,是Perlin噪音帶給計算機圖形藝術家的靈感,使用該技術可以更好地再現自然現象的複雜性。
Perlin沒有對其算法申請任何專利,但在2001年,他獲得了有關3D及以上維度的Simplex噪音的專利,這一技術也旨在改善噪音合成效果。
作為一種程序紋理原語,Perlin噪音提供了視覺效果藝術家增強電腦圖形真實感的工具。雖然這一技術呈現出伪隨機的外觀,但其所有的視覺細節大小保持一致,這一特性使得它便於控制。
在計算機圖形中,合成的紋理經常使用Perlin噪音,特別是在記憶體極度有限的情況下,例如在演示中使用。其後繼技術如分形噪音和Simplex噪音等已成為圖形處理單元中的標準組成部分。
Perlin噪音在視頻遊戲中被廣泛應用,以生成看起來自然的程序生成地形。
Perlin噪音的實現通常有三個步驟:定義隨機梯度向量的網格、計算梯度向量與其偏移量之間的點積,以及在這些值之間進行插值。通過這一系列計算,Perlin噪音能夠在多個維度中生成自然的效果。
首先,定義一個n維網格,其中每個網格交點都有一個固定的隨機n維單位長度梯度向量。對於一維的情況,這些梯度為從−1到1之間的隨機標量。
當需要計算某個候選點的值時,首先找出該點所屬的唯一網格單元,然後確定該單元的2n個角點及其梯度向量。每個角點計算一個偏移向量,這一偏移向量將從該角點指向候選點。接下來,對於每個角點,計算其梯度向量與偏移向量之間的點積。
在兩維網格中,需要計算四個偏移向量和四個點積,而在三維中則需要計算八個。
最後一步是對2n個點積進行插值。這一步使用的插值函數要求在2n個網格節點的第一導數(甚至是第二導數)為零。這意味著,Perlin噪音的特徵外觀源於其在每個節點處通過零的特性。
Perlin噪音的複雜性隨著維度的增加而增強,但隨著研究的深入,新的算法如Simplex噪音和OpenSimplex噪音等正在不斷出現,這些技術旨在改進性能並提升圖形的自然感。對於未來的圖形生成技術,大量的探索與創新仍在進行中。
那麼,當我們未來面對越來越真實的電腦生成圖像時,Perlin噪音將如何繼續影響這一領域的發展呢?