Perlinův šum
Author
Albert FloresDvoudimenzní průřez 3D Perlinovým šumem. Perlinův šum je metoda vhodná pro generování grafického šumu, kterou roku 1985 představil Ken Perlin.
Historie
Tato metoda vychází z tvorby Kena Perlina, který ji vyvinul během prací pro Mathematical Applications Group, Inc. +more Roku 1997 Ken Perlin získal ocenění Academy Award for Technical Achievement od Akademie filmových umění a věd za spoluúčast na filmu Tron z roku 1982.
Jak to funguje
Tato metoda funguje na součtu stejné šumové funkce, avšak o různé intenzitě a v různém měřítku. Pro takovouto šumovou funkci se často používá náhodný, deterministický generátor. +more Výsledkem součtu šumových funkcí je šum, kterým je možné napodobit rozličné přírodní věci, nejčastěji oblaka, vodu, dřevěné materiály a mramor.
Pořadí při sčítání se nazývá oktáva. V každé oktávě má šumová funkce různé měřítko a intenzitu. +more Měřítko lze udávat frekvencí, tedy počtem opakování na jednotku. Intenzitu v tomto případě nazýváme amplitudou.
Perlinův šum je realizován jako funkce buď (x,y,z) nebo (x,y,z,čas), která využívá interpolaci mezi sadou předem vypočítaných vzestupných vektorů, pro konstrukci hodnoty, která se mění náhodně v závislosti na prostoru a/nebo čase. Ken Perlin tuto realizaci šumu vylepšil v roce 2002, potlačením některých vizuálních artefaktů.
Využití
Perlinův šum je široce využíván v počítačové grafice pro vytvoření různých efektů, jako jsou např. plameny ohně, kouř, vodní hladiny a tekoucí vody, a také oblaka. +more Je také velmi často využíván pro generování textur, pokud je velmi omezená paměť nebo nároky na ni, jako např. u demoverzí. Také postupně nalézá uplatnění v GPU při tvorbě real-time grafiky v počítačových hrách.
Příklad
Trojrozměrný Perlinův šum v C++:
double perlinNoise(const double &x, const double &y, const double &z, const int &OCTAVES = 4, const double &PERSISTENCE = 0.5) { double ret = 0; double frequency = 1; double amplitude = 1; for(int i=0; i
Externí odkazy
[url=http://mrl.nyu.edu/~perlin/]osobní stránky Kena Perlina[/url] * [url=http://www.mrl.nyu.edu/~perlin/doc/oscar.html]stránky Ken Perlin's Academy Award[/url]