13. února 2011

UDK materiály - parallax mapping a špína

Dnes vytvoříme trochu složitější materiál využívající bump offset pro vylepšení efektu hrbolatosti a přidáme špínu využitím jednoho triku tak, aby nebylo znatelné opakování textury.





V materiálu využijeme 4 základní textury. Podobně jako u předchozích příkladů to budou diffuse, specular a normálová textura a dnes ještě přibude tzv. height mapa určující výšku pixelů. Všechny textury jsou upravené tak, aby bylo možné je opakovat vedle sebe bez viditelných švů. Byly vytvořeny z highpoly modelu kombinací 3ds max / zbrush / photoshop / xNormal. Zmíněnou height mapu snadno vygenerujeme s ostatními pomocí xNormal.



K těmto ještě přidáme menší texturu (512 x 512px) špíny, důležité je, aby bylo opět možné opakování bez viditelných švů.



A ještě než začneme, vysvětlím, o jaký efekt se vlastně jedná. Tzv. parallax mapping nebo také offset bump je metoda, která přidává k normal mappingu ještě texturu určující výšku každého pixelu, tzv. height mapu nebo také bump mapu. Samotná normálová mapa pouze modifikuje normálový vektor pixelu a tím jeho stínování, nemění však jeho pozici. Parallax mapping pomocí výškové mapy pixely podle úhlu pohledu mírně posune a umocní tím dojem hloubky.



A teď už k samotnému shaderu. Všechny 3 základní textury nejdříve připojíme do jejich slotů (diffuse, specular, normal). Teď vytvoříme node bump offset (utility > bump offset) a k němu do slotu height připojíme naši height mapu. Výsledek použijeme jako souřadnice pro diffuse a normal textury. Pokud bychom chtěli přesný výsledek, připojíme jej i jako UV specular textury, pro málo odrazivý materiál jako zeď ale výsledek nebude většinou znatelný.

V druhém kroku přidáme vrstvu špíny. Vytvoříme tedy dvě kopie naší textury se špínou a pro obě zkopírujeme stejný bump offset jako pro ostatní textury. Teď u jedné z kopií špíny připojíme ke Coordinate slotu nový texture coordinates node, kterému nastavíme tiling, v tomto případě 0,4. U druhé kopie vytvoříme nejdříve rotator a do slotu Time vložíme konstantní hodnotu, tím zastavíme animaci rotace, která by jinak vznikla. Do coordinate slotu opět připojíme souřadnice, tentokrát s mírně jinou hodnotou tiling. Obě kopie špíny zkopírujeme, v tomto případě pomocí multiply, je možné využít i jiné možnosti jako např. add.

V příkladovém shaderu byla špína příliš tmavá, proto jsem ještě přidal pomocí Add konstantní hodnotu pro zesvětlení. Nakonec vynásobíme diffuse texturu výslednou špínou a materiál je dokončený.

Žádné komentáře:

Okomentovat