01 - Perlin Noise

Random so súvislosťou

História

Dobrý náhodný generátor nám vracia čísla bez ohľadu na vzťah s ich predchodcom. Avšak pri sledovaní prírodných procesov obvykle vidíme plynulé prechody a postupné zmeny.

Práve pre pohyb sa nám oplatí zapojiť Perlin noise ktorý ho premení na plynulejší.

Pomenovaný po svojom objaviteľovi - Ken Perlin.

Používa sa na modelovanie pohybu, textúr a terénu.

Mimochodom, algoritmus objavil Perlin práve pre generovanie textúr pre film Tron (1982)

Zdroj: Ken Perlin on Procedural Textures

Dokumentácia

Dokumentácia funkcie noise()

Noise(x) vracia vždy číslo medzi 0 a 1 - a preto ho vždy potrebujeme namapovať na nami očakávaný rozsah - buď prenásobením (* width) alebo pompcou funkcie map()

Pre rovnakú zadanú hodnotu vráti noise() vždy ten istý výsledok. Preto sa treba v priestore posúvať. Buď iterovaním vlastnej premennej (obvykle. t). Alebo použiť frameCount

1D, 2D, 3D Noise

Perlin noise si môžeme predstaviť ako pohyb v priestore noise-u (v oblakoch). Kde pre dané koordináty x (príp. aj y a z) vrátia "nejaké" číslo.

noise(x)

noise(x,y)

noise(x,y,z)

Úloha 1

  • Doplň _____:

    • Aký parameter použiješ pre noise()? (Tip: premenná xoff).

    • Aký prírastok nastavíš pre xoff? (Tip: Skús hodnoty ako 0.02 alebo 0.05).

  • Spusti program a pozri si výsledok.

  • Experimentuj:

    • Zmeň hodnotu prírastku xoff (napr. 0.01 alebo 0.1) a pozoruj, ako sa mení textúra.

    • Skús použiť rôzne hodnoty pre výšku čiar v line().

Úloha 2

Otvor random walker z minulej lekcie a uprav ho tak, aby používal perlin noise. Hint: map()

Random walker + perlin noise

Úloha 2 (bonus)

Aplikuj perlin noise na farbu.

Random walker + perlin noise for color

Mimochodom keď už sme pri perlin noise, používa sa aj na oblaky / terragen / mramor a podobne... k tomu sa ale dostaneme inokedy.

Záver

Náhodilosť a noise má množstvo aplikácií a viete ich vyziť od simulácie pohyby cez generovanie oblakov cez terén, zvuk atď. V tom spočíva mimochodom trocha aj pasca perlin noise - jeho pekný "organický" priebeh láka priam až k nadmernému používaniu. Avšak nateraz si vyskúšajme ešte aplikáciu v niečom vizuálne príťažlivejšom, než náhodne sa hýbanie priestorom.

Bezierové krivky

Poďme si vyskúšať pre vás určite už známu bezrierovú krivku v prostredí p5.js. Dokumentácia k metóde bezier() je tu:

bezier() v referenčnej príručke

Čo sa stane, keď parametre beziérovej krivky budeme generovať pomocou perlin noise? Pohrajte sa s príkladom nižšie:

Perlin noise bezier
Perlin noise bezier

Zadania / Recepty

1. Farba

2. Cover art

3. Terrain

Zdoje a ďaľsie informácie

Gene Kogan z NYU píše o Perlin Noise. Hlavný zdroj tejto lekcie.
Nature of Code: Perlin Noise
Pekne ilustrované fungovanie noise() + na webe má zaujímavé aplikácie funkcie

Last updated