Perlinov šum

Izvor: Wikipedia
Dvodimenzionalni Perlinov šum - svjetlije nijanse predstavljaju više vrijednosti funkcije.

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.

Konstrukcija[uredi - уреди]

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):

PerlinNoiseStep1.gif


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:

PerlinNoiseStep2.gif


Nastavljamo na isti način, sa 17 točaka između -32 i 32:

PerlinNoiseStep3.gif


33 točke, vrijednosti u intervalu [-16, 16]:

PerlinNoiseStep4.gif


65 točaka, interval [-8, 8] (ovdje točke nisu naglašene jer ih je previše):

PerlinNoiseStep5.gif


Naposlijetku jednostavno zbrojimo sve te funkcije dobivajući planinoliku strukturu zvanu Perlinov šum (u intervalu [-120, 120]:

PerlinNoise1d.gif

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.).

Svojstva[uredi - уреди]

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.

Fraktalna svojstva[uredi - уреди]

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).


Primjena[uredi - уреди]

Tekstura vatre napravljena koristeći Perlinov šum
Funkcija s početka članka prikazana u trodimenzionalnom prostoru - ovdje su više vrijednosti jednostavno prikazane na višem položaju. Tako se dobiva model koji uvelike sliči planini.
Dodavanjem teksture i vode gornjem modelu dobiva se vrlo realistična slika.

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 f(x)=\sin{x} te malo promijenimo boje, dobit ćemo teksturu koja sliči teksturi obrađenog mramora (vidi primjer iz prezentacije iz vanjskih poveznica). Različitim matematičkim i grafičkim postupcima možemo postići najrazličitije teksture.


Vidi još[uredi - уреди]


Vanjske poveznice[uredi - уреди]