3. Parametrický generátor

Pravá krása generátorů nespočívá v tom, že vygenerují obrázek který v něm připravil autor, ale že lze pomocí vnějších parametrů měnit nastavení generátoru a vytvářet tak nové varianty obrázku. Generátor se tak stává "černou krabičkou", tvůrčím nástrojem s měnitelnými parametry, aniž jeho uživatel zná, jak generátor uvnitř funguje.

Pokračujme v generátoru z minulé lekce. K filtru Check připojte na vstupy Source a Source2 dva filtry Bright, které naleznete ve skupině Barva. Na vstupy Source filtrů Bright připojte dva filtry Color ze skupiny Vstupy/Výstupy. A nakonec na vstupy Brightness obou filtrů Bright připojte výstup z filtru Perlin ze skupiny Výplně. Parametr Contrast filtru Perlin snižte na 30 a parametr Scale snižte na 50. U filtru Color nastavte popisky na Barva1 a Barva2 a nastavte nějakou barvu. Výsledek by mohl vypadat takto:

Nejdříve odbočka k ovládání editoru generátoru. Potřebujete-li posouvat plochu editoru, můžete tak učinit buď pomocí táhel po stranách editační plochy nebo uchopením plochy a táhnutím pomocí prostředního tlačítka myši. Vybraný filtr smažete stiskem klávesy Delete. Více filtrů naráz lze posouvat nebo smazat s hromadným označením - buď přes ně táhnete ohraničující rámeček pomocí levého tlačítka myši nebo je postupně vybíráte klikáním levým tlačítkem myši za současného držení klávesy Shift nebo Ctrl.

Základem většiny procedurálních generátorů je generátor šumu. Vygenerovat šum by se zdál být snadný úkol. Ale není tomu tak. Představte si zcela náhodný šum, vygenerovaný běžným generátorem náhody. Výsledek by vypadal takto nějak:

Body obrazu mají různý náhodný jas a výsledkem je rovnoměrně zašuměná plocha. Když bychom si takový obrazec znázornili jako 3D terén, vypadal by takto:

Je to změť hrbolů nejrůznějších výšek. My ale potřebujeme vytvářet terén s kopci a údolím, přitom ale aby detaily drobných hrbolků stále zůstaly zachovány. Výsledek by měl vypadat takto:

Potřebujeme tedy ne zcela náhodný šum, ale parametrický šum, u kterého můžeme regulovat úrovně frekvenčních složek. Pro tyto účely se s oblibou používá Perlinův šum (jehož autorem je Ken Perlin). Perlinův šum se skládá z vln s dvojnásobně rostoucí frekvencí - oktávy. Vlny mají náhodné amplitudy a amplituda vln s rostoucí frekvencí oktáv postupně klesá. V parametrech filtru Perlin řídíte počet generovaných oktáv parametrem Details - parametr určuje, do jaké jemnosti budou detaily šumu generovány. Parametr Scale mění měřítko základní nosné vlny šumu. Parametrem Roughness určíte, jak moc se mají vyšší oktávy postupně zeslabovat (nebo naopak zesilovat), tedy je to výraznost detailů.

Od generátoru šumu požadujeme ještě jednu vlastnost - reprodukovatelnost. Nejde jen o to, abychom i po roce získali přesně stejný obrázek, ale především aby během renderování bylo jednoznačně dané, kde v jakém místě bude jaká šumová hodnota, protože ke generátoru šumu se přistupuje v nahodilém pořadí a nelze ho tedy generovat postupně. Tento požadavek je v Perlinově šumu splněn. Náhodnost vln se generuje jako přesně daná posloupnost čísel, odvozená od výchozí hodnoty generátoru šumu. Výchozí hodnota šumu je určena parametrem Seed. Změníme-li parametr Seed, změní se i vzhled obrazce. Vrátíme-li Seed na původní hodnotu, navrátí se i obrazec na původní vzhled.

Zpět k funci generátoru. Filtr Perlin generuje náhodné šumové obrazce. Jeho výstup je veden do filtrů Bright, které umožňují regulovat jas obrazu. Do filtrů Bright přivádíme i barvy nastavené ve filtrech Color. Jas barev se reguluje signálem z Perlinova šumu a tím vznikají barevné obrazce, připomínající (i když jen vzdáleně) mramorový povrch. Výstupy z filtrů Bright poté vedeme do vstupů filtru Check, který je rozseká do šachovnice. Výsledkem generátoru je šachovnice s mramorovými kostkami.

Jak je možné, že přivádíme výstup filtru Perlin na jasový vstup filtrů Bright, který se zdá že jen mění celkový jas obrazu? Filtry mají různé vstupy, odlišené barvou - např. zelený trojúhelník je vstup barvy, šedý je vstup číselné hodnoty. Ve skutečnosti můžeme přivést jakýkoliv signál na jakýkoliv vstup, program si už sám převezme potřebnou informaci. Signály ale nepřenáší jen údaj jako je barva nebo číselná hodnota. Obsahují i souřadnici bodu. Každý ze vstupů filtru je řízen nejen hodnotou, ale i souřadnicí. Není-li na jasový vstup filtru Bright přiveden žádný signál, můžeme pomocí táhla řídit celkový jas obrazu (jedná se jakoby o signál bez souřadnice). Ale přivedeme-li na vstup nějaký signál, bude jas řízen v závislosti na jasu signálu v daném místě obrazu.

Nyní generátor uložte tlačítkem Uložit. Editor zavřete tlačítkem Zavřít a navraťte se do základní obrazovky programu. V seznamu generátorů vidíte vámi vytvořený generátor a v náhledu vpravo je náhled na obraz generátoru. Vlevo dole se objevily dva ovládací prvky - Barva1 a Barva2. To jsou ony dva filtry Color, které jste přidali na začátek generátoru. Jsou to vstupní filtry, které se objeví jako vstupní parametr generátoru a který může uživatel generátoru měnit. Dalšími takovými vstupními filtry jsou filtry Value a Image. Pořadí parametrů je určeno pořadím filtrů v generátoru shora dolů, rozhodující je jejich vertikální souřadnice.

Témata nápovědy Tutoriály