Perlinov šum
Perlinov šum jest vrsta matematičke funkcije koja se koristi na nebrojene načine u računalnoj grafici. Funkcija se dobije zbrajanjem više funkcija koje su dobivene slučajnim odabiranjem točaka, gdje svaka sljedeća funkcija ima dvostruko manju amplitudu i dvostruko veću frekvenciju (vidi: Konstrukcija). Osmislio ju je Ken Perlin 1983. godine.
Postupak ćemo objasniti na primjeru jednodimenzionalne funkcije. Prvu funkciju konstruiramo tako da na određenom segmentu apscise odredimo pet jednako udaljenih točaka i pripišemo im slučajno izabrane vrijednosti između primjerice -128 i 128 te interpoliramo ostale točke odabranim postupkom, u ovom slučaju kosinusnom interpolacijom (laički: "lijepo" spojimo odabranih pet točaka):
Drugu funkciju konstruiramo na isti način, samo što odabiremo devet točaka (uključujući i pet iz prošle funkcije) i pripisujemo im slučajne vrijednosti u intervalu [-64, 64]. Sad imamo (približno) dvostruko više točaka, a amplituda je dvostruko manja:
Nastavljamo na isti način, sa 17 točaka između -32 i 32:
33 točke, vrijednosti u intervalu [-16, 16]:
65 točaka, interval [-8, 8] (ovdje točke nisu naglašene jer ih je previše):
Naposlijetku jednostavno zbrojimo sve te funkcije dobivajući planinoliku strukturu zvanu Perlinov šum (u intervalu [-120, 120]:
Napomena: kvalitetnije verzije ovih slika nalaze se u starim izmjenama svake od njih (klik na sliku > dno stranice, prva verzija slike, od 5. kolovoza 2007.).
Perlinov je šum funkcija spojena od više funkcija od kojih svaka ima "izbočine" i "udubine". One su otprilike jednakih dimenzija na pojedinoj funkciji, ali se njihove dimenzije razlikuju kad se te funkcije uspoređuju. Time zbroj tih funkcija daje strukturu koja ima velike "izbočine" i "udubine", na kojima postoje manje, a koje opet sadrže još manje, i tako unedogled. To je temeljni razlog zbog kojeg Perlinov šum toliko podsjeća na planinu - planine također imaju neki osnovni oblik, no i taj osnovni oblik ima svoje udubine i izbočine, koje nisu ravne...
Još je potrebno napomenuti da Perlinov šum nije jedna određena funkcija, nego se svaki put dobije drugačiji rezultat. To je posljedica uzimanja slučajnih vrijednosti za točke.
Perlinov šum spada u kvazi-samoslične fraktale. To je stoga što se uvećavanjem slike uvijek dobiva još veća razina detalja, no ipak nijedan dio slike nije sličan (u matematičkom smislu) cjelini. Naravno, ovdje govorimo o "savršenom" Perlinovu šumu, koji bi bio zbroj beskonačno mnogo funkcija (od kojih bi zadnja imala beskonačno malenu amplitudu i beskonačno mnogo odabranih točaka). U praksi se broj iteracija (funkcija koje se zbrajaju) određuje po potrebi. Fraktalna dimenzija ovisi o algoritmu kojim je funkcija pravljena (npr. o vrsti interpolacije).
Perlinov se šum pretežno upotrebljava u računalnoj grafici. Najjednostavnija primjena jest stvaranje računalnih krajolika. Radi se o jednostavnom "crtanju" dvodimenzionalne funkcije u trodimenzionalnom koordinatnom sustavu (slika desno gore). Na slici ispod prikazan je isti krajolik s raznim dodanim elementima: za namreškanost vode korišten je Perlinov šum malene amplitude i "oštrine", oblaci su stvoreni tako da se u Perlinovu šumu sve negativne vrijednosti promijene na nulu te se tako dobiju prazna područja (na kojima nema oblaka). Realističniji oblaci mogu se dobiti korištenjem trodimenzionalne funkcije (kojoj su također sve negativne vrijednosti promijenjene na nulu), gdje vrijednost funkcije u pojedinoj točki prostora predstavlja stupanj prozirnosti te točke (nula je potpuno prozirno).
Spektar primjena još se više proširuje jednostavnim "dorađivanjem" funkcije Perlinova šuma. Ako uzmemo apsolutne vrijednosti Perlinovog šuma i rezultat prikažemo u tonovima narančaste boje, rezultat će sličiti vatri. Dodamo li toj funkciji funkciju te malo promijenimo boje, dobit ćemo teksturu koja sliči teksturi obrađenog mramora (vidi primjer iz prezentacije Arhivirano 2007-10-08 na Wayback Machine-u iz vanjskih poveznica). Različitim matematičkim i grafičkim postupcima možemo postići najrazličitije teksture.
- Prezentacija temeljena na govoru Kena Perlina (en)
- Odlično objašnjenje, implementacija i primjena Arhivirano 2008-07-24 na Wayback Machine-u (sa pseudokodom) (en)