10. ledna 2011

UDK - základy materiálů

Tentokrát tutoriál o vytváření jednoduchých shaderů v UDK. Vytvoříme materiál se základními diffuse, specular a normálovými texturami a přidáme tzv. detail normal mapu.



Nejdříve bude potřeba importovat si všechny textury, které v materiálu použijeme. Jako u kteréhokoliv jiného asset tedy vybereme balíček a složku a pomocí tlačítka import vložíme texturu. Podporované jsou formáty psd, bmp a tga. Dejte si pozor, aby textura měla rozměry v mocninách dvou (tj. 256, 512, 1024,...), maximálně jeden alpha kanál a 8 bitů na kanál. V opačném případě by UDK vypsal chybu nebo by rovnou spadl. Každou texturu je dobré podle jejího využití vhodně nastavit. Pokud nevyužijeme alpha kanál textury, můžeme zaškrtnout pole Compression No Alpha a ušetřit tak trochu místa na disku hráče. Pod Compression Settings necháme TC_default pro barevné textury bez speciálního využití, tj. např. diffuse, barevné specular atd. Pro normal mapy většinou použijeme TC_Normalmap, případně TC_NormalmapUncompressed, druhá volba uloží texturu bez komprese, ale zmenší jí na polovinu, u některých textur tato volba může vytvářet lepší výsledky. TC_Grayscale využijeme u černobílých textur, tedy různé bump mapy, bezbarvé specular, glosiness atd. A na konec, pokud textura vyžaduje pouze černou a bílou (různé masky), můžeme využít volbu TC_OneBitAlpha, u většiny objektů ale tento druh komprese nevypadá příliš dobře. Protože uloží opravdu pouze černou a bílou, neukládá ani žádné "antialiasing" přechody mezi nimi a hrany jsou tedy velmi ostré.

Pod LOD Group potom vybereme vhodnou skupinu pro level of detail. Např. pro diffuse a další textury pro objekty herního světa použijeme TEXTUREGROUP_World, pro normal mapy potom TEXTUREGROUP_WorldNormalMap a pro specular TEXTUREGROUP_WorldSpecular. Pro zbraně to bude podobné, ale s předponou Weapon atd.



Po úspěšném importu textur si v content browseru vytvoříme nový materiál (New Material) a poklepáním jej otevřeme. Objeví se nám prázdné okno material editoru, (1) pohybovat se v něm můžeme kliknutím levým tlačítkem myši a težením, přibližovat kolečkem myši, jednotlivými nodes poté lze hýbat podržením ctrl a tažením (první node vytvoříme za chvíli). Vlevo (2) se potom nachází okno náhledu materiálu, zatím prázdné. Nahoře je možné měnit pomocí jednoduchých ikon model, na kterém se bude náhled materiálu zobrazovat.  A v dolní části (3) budeme měnit vlastnosti samotného materiálu, či právě vybraných nodes.



V hlavní části okna vidíme několik slotů pro připojování textur pro základní phong shader a dva CustomLighting sloty pro vlastní definování shaderu, těmi se v tomto tutoriálu zabývat nebudeme. Pokud jste četli můj příspěvek o texturách ve hrách (http://www.vertex.tode.cz/textury-pouzivane-v-hernich-enginech/), budou vám základní sloty už jasné.

Zkusíme tedy vytvořit nějaký jednoduchý materiál. Minimalizujeme okno material editoru a v content browseru vybereme barevnou texturu pro diffuse. Vrátíme se do material editoru a za současného držení klávesy T klikneme do hlavní  části okna. Tím se vytvoří nový node, opakuji, že posunout jím můžeme za pomocí klávesy ctrl. Většina nodes má vlevo pět malých čtverců, ten první černý znázorňuje RGB kanály (vektor obsahující jejich hodnoty) obrázku, další tři potom samostatné hodnoty jednotlivých kanálů podle barvy, tedy červený, zelený a modrý. A poslední, bílý je alpha kanál obrázku (samozřejmě funkční pouze pokud jsme nezaškrtli u textury při importu Compression No Alpha).

Chytíme tedy první černý čtverec a spojíme jej s diffuse slotem materiálu. V okně náhledu už bychom měli vidět výsledek. Stejný postup zopakujeme ještě s texturami pro specular a normálovou texturu.

Teď zkusíme ještě něco složitějšího, přidáme ještě jeden texture sample, tentokrát mnohem menší texturu normálové mapy s nějakým jemným šumem. Tuto použijeme jako tzv. detail normal mapu, to znamená, že zvýšíme detailnost materiálu kombinováním hlavní normal mapy s druhou, která bude sice menší, ale bude se opakovat na objektu několikrát. Klikneme tedy pravým tlačítkem myši a vybereme z kontextové nabídky Coordinates>texture coordinates. Tím jsme vložili další node, v jehož parametrech v dolní části okna nastavíme UTiling a VTiling na 4 (nebo jinou hodnotu větší než 1). Tento node připojíme z pravé strany k UVs u naší druhé normal mapy. Tím jsme zajistili její opakování 4-krát na celém materiálu (v oblasti UV 0-1).  Ještě než tuto texturu zkombinujeme s původní normal mapou, je nutné odstranit její modrý kanál, to uděláme tak, že jej vynásobíme nulou. Přidáme tedy znovu z kontextové nabídky Constants>New Constant3Vector a jeho R, G a B parametry nastavíme na 1, 1 a 0. Dále klikneme do prostoru za současného držení klávesy M, tím přidáme node multiply (násobení). Do jeho prvního pravého slotu připojíme naši texturu a do druhého právě vytvořený vektor. Teď už jen vložíme kliknutím a za držení klávesy A node pro přičítání (Add) a připojíme k němu původní normal mapu a výsledek node multiply, celé to potom připojíme zpět do Normal slotu materiálu. Výsledek by měl vypadat nějak takto:



Potvrdíme změny a zkompilujeme materiál zelenou ikonou v horní části editoru a materiál můžeme používat. Pro BSP plochy v mapě stačí přetáhnout materiál do levelu z content browseru, mapování se upravuje v modu editace textur. Pro modely (static meshes, skeletal meshes) vyhledáme v parametrech slot Material (v případě více material channels na modelu jich bude víc) a ikonou se zelenou šipkou k nim přidáme materiál aktuálně vybraný v content browseru.

Žádné komentáře:

Okomentovat