← späť

CV7: TEXTÚRY II

Textúry nie sú iba o farbe povrchu. Dajú sa pomocou nich vytvárať efekty týkajúce sa materiálov a odrazu. Dnes si niečo z toho ukážeme.

Gimp: Operácie s farbami

Najprv niečo o farbách a o tom, ako sa dajú kombinovať. Otvorte si gimp. Vytvorte si dve vrstvy, na každej farebnú machuľu inej farby tak, aby sa prekrývali.

Pre každý pixel nášho obrázku (v časti kde sa prekrývajú) má gimp 2 farby, jednu z každej vrstvy. Matematicky to znamená dve číselné informácie. Otázka znie, ako ich kombinovať.

Čiže máme dve farebné informácie: c1 = (r1,g1,b1); c2 = (r2,g2,b2). Chceme z nich nejakým spôsobom získať výslednú farbu pre daný pixel C = (R,G,B).

V základnom nastavení jednoducho vezme farbu vrchnej vrstvy. Čiže vezme

(R,G,B) = (r1,g1,b1) .

Keby sme ju mali polopriesvitnú, už by musel kombinovať. Napríklad si namaľujem niečo na vrchnú vrstvu s priesvitnosťou 20%. Farby zmieša s pomerom

(R,G,B) = (20/100)*(r1,g1,b1) + (80/100)*(r2,g2,b2).

To bol taký priamočiary a očakávateľný spôsob, ako tieto čísla zoperovať. Ale existujú aj iné operácie s týmito číslami a viaceré z nich majú celkom užitočný význam. Nájdete ich v layerovom menúčku pod názvom Mode.

Na výber ich tam je viacero skúste si ich poklikať. Farby v prieniku budú reagovať roznymi spôsobmi. Vždy ide iba o nejaký typ matematickej oparácie hodnôt

Nás bude zaujímať operácia multiply. Ide naozaj o násobenie čísel. Gimp si prenásobí číselné hodnoty layeru s vlastnosťou multiply so zvyškom pod ním a následne predelí 255.

Čo sa stane? Ak bola na hornom layeri biela farba, tj (r1,g1,b1) = (255,255,255), dostaneme presne farbu pod ňou, pretože (255 * A) / 255 = A (pre ľubovoľné A). Ak bola na hornom layeri bola čierna farba, t.j. (r1,g1,b1) = (0,0,0), dostaneme čiernu farbu, pretože (0*A) / 255 = 0 (pre ľubovoľné A).

Ak vrchný layer čisto čierno-biely, je to, akoby ste si vyfarbovali omaľovávanku. (V gife si vyfarbím vrchný layer na bielo a urobím na neho čierny vzor a dám mu vlastnosť multiply. Pri maľovaní na spodný layer vidno, že tam kde má horný layer bielu, tam farbu "prepúšťa" zo spodu, tam kde má čiernu, tam ju blokuje. Skúste si tam okrej čiernej a bielej dať aj nejaké odtiene šedej (to bude také polopriepustné)).

V blendri budeme tento princíp používať pri kombinovaní rôznych textúr na tej istej ploche.

Blender: Shader Editor

Poďme teraz na blender. Ak si pamätáte, pri práci s materiálmi sme mali vždy zakliknuté tlačítko „Use Nodes“. Tak dnes tie Nodes ideme aj naozaj používať.

Prepnite si Viewport shading na Rendered, aby sme videli aj textúry. Zmažte kocku, vytvorte si nový objekt, plochu. Priraďte jej nový materiál. Pôjdeme s ním pracovať. Skontrolujte si, či máte zapnuté Use Nodes!

Na prácu s Nodes budeme používať Shader Editor. Rozdvojte si hlavnú obrazovku a v druhom okne si otvorte Shader Editor. Ak máte označenú našu plochu s vytvoreným materiálom, mali by ste tam mať vytvorené dva obdĺžniky spojené paličkou. Volajú sa Nodes (v texte ich budem skloňovať pseudoslovensky: 1 Node, 2 Nody).

Shader Editor je priestor, v ktorom sa viete pohybovať rovnako ako v 3D priestore (scrollovať kolečko a držať stredné tlačítko). Žijú v ňom Nody. Nody viete pridávať (Add -> ...), mazať (delete) a presúvať po priestore (buď myškou, alebo skratkou G).

Každý node môže mať niekoľko vstupných (input) a výstupných (output) bodiek. Vždy platí, že input bodky sú vľavo a output sú vpravo.

Na input bodkách vedia nody prijať informáciu od iných nodov, z output bodiek vedia nody informáciu odoslať inému nodu. Tento vzťah je znázornený spojovacími čiarami. Tie viete vytvárať ťahaním myšky, alebo mazať sekaním (na sekanie treba držať Ctrl a preseknúť čiaru pravým tlačítkom). Skúste si to.

Platí, že každá output bodka vie svoju informáciu poslať ľubovoľnému počtu input bodiek, ale každá input bodka je ochotná prijať informáciu iba od jednej outut bodky.

Vráťme sa do počiatočného stavu, kde sme mali dva nody: Principed BSDF a Material Output. Principed BSDF je Shader, čo znamená, že vie vypočítať materiálové vlastnosti objektu a posunúť ich ďalej output bodkou BSDF. Prepojíme ho teda sa inupt bodkou Surface, pretože chceme, aby sa vypočítaný materiál zobrazil na povrch nášho objektu.

V skutočnosti teraz robíme nody iba čisto pre náš materiál, ktorý sme priradili ploche. Skúste si ho nejako nazvať a uvidíte, že sa vám zmení aj v pri nodoch. Pre každý materiál si môžme vytvoriť vlastnú nodovú schému.

Node s názvom Material Output nemá žiadne output bodky, pretože je to konečná informácia, celej tejto Nodovej schémy z ktorej potom ďalej blender čerpá.

Čo vieme robiť s textúrami pomocou Nodes

Najprv si urobíme jednoduchý príklad so šachovnicou, aby sme trošku videli, ako takáto práca s Nodami môže vyzerať.

Pridajte si nový node s textúrou Checker texture. Ako výstup sa ponúkajú dve informácie: Color a Factor (Fac).

Teraz si môžeme prepojiť output Color na input Base color nášho Shadera. Node s textúrou posunie svoju farebnú informáciu (šachovnicu) do farby našeho materiálu.

Ako vidíme, súčasťou vstupu sú aj dve farby. Môžeme si ich manuálne nastaviť priamo v Checker texture node, alebo ich poslať ako informáciu z iného nodu. Vytvorte si dva nové RGB nody, nastavte každému nejakú farbu a priraďte ich do Color 1 a Color 2.

Už to začína byť veselšie. A teraz si miesto jednej farby urobíme farebný gradient. Pridáme si nový node, Gradient Texture. Ak využijeme jeho farebnú zložku, dostaneme čiernobiely gradient.

Gradient teda máme, ale je čiernobiely. My by sme ale chceli farebný gradient. Čiže potrebujeme ďalší Node, ktorý nám na miesto bielej, čiernej farby a sivých odtieňov medzi dosadí nejaké iné farby. Na to nám pomôže node s názvom Color Ramp.

Color Ramp-u vieme priradiť dve farby. Ten si sám vytvorí ich plynulý prechod roztiahnutý na škále 0 až 1. Ako vstup vezme číslo od na intervale [0,1] (Fac), na výstupe nám dá farbu prislúchajúcu tomuto číslu. Zatiaľ máme iba jednoliatu farbu, pretože ako vstup máme pre celú plochu rovnaký Factor. Môžeme ho zmeniť na iné číslo, ale stále bude na celej ploche rovnaké.

Potrebovali by sme, aby sme mali pre rôzne časti plochy rôzne čísla na intervale [0,1]. Našťastie Texture gradient nám vie posunúť číslo na intervale [0,1] pomocou výstupu Factor (Fac). Priradíme si ho teda.

(Outputový bod Factor (Fac) vždy dáva hodnoty z intervalu [0,1] ktoré nejak reflektujú daný node. Vizuálne bývajú reprezentované na čiernobielej škále)

A je to tam. Prípadne vieme V Color rampe vyrobiť aj zložitejšie gradienty. Dá sa to pomocou jeho interných vlastností: môžte si pridať viacero vrcholov s farbami, poposúvať ich alebo zmeniť farebný model za iný. Skúste sa s tým pohrať.

Dobre, teraz asi trochu už vidíme na čo sú nám Nodes. Upravujeme s nimi tie isté materiálové vlastnosti ako predtým, ale máme k dispozícii lepší nástroj, ktorý poskytuje viac možností.

Nejde iba o farby, aneb Nodes a materiály

Textúry nemusia byť používané iba na farbu materiálu, vieme nimi ovplyvniť aj rôzne iné materiálové vlastnosti. Vyskúšame si to na Roughness a Metalic.

Môžem napríklad Factor našej šachovnice pripnúť na vlastnosť Metallic. Všetky štvorčeky s faktorom 1 sa nám zmenia na metalické, tie s faktorom 0 ostanú ako boli. (v gife som sa vrátila k šachovnici bez gradientu, nech je to lepšie vidno)

Povedzme teraz, že si chcem spraviť šachovnicu, ktorá bude mať zlaté (žlté, lesklé a metalické) a čierne (čierne, matné a nemetalické) kocky. Začnem priamočiaro: šachovnicu si dám žlto-čiernu a Factor šachovnice pripnem na vlastnosti Roughness a Metallic.

Ak si pripneme factor na Metallic, robí to to, čo sme chceli. Žlté časti sú metalické, čierne nemetalické. Pri Roughness ale získavame opačný efekt. Žlté časti dostávajú hodnotu 1 – plný roughness, čiže sú matné. Čierne dostávajú 0 – čiže sú úplne lesklé. Potrebovali by sme tieto čísla vymeniť.

Inak povedané, potrebujeme zobrazenie, ktoré nám zobrazí 0 na 1 a 1 na 0. Dúfam, že si každý viete doma na papieri nejakú takúto funkciu vytvoriť. Aspoň lineárnu.

Čo sa týka matematiky, tu máme k dispozícii 2 nody.

Map Range je presne to, čo potrebujete, takže si našťastie nemusíme žiadnu funkciu na papieri vyrábať. Nastavíme si Min a Max hodnoty z 0 a 1 na 1 a 0. A poprepájame si to.

Teraz už vidíme, že žltá sa nám dokonale leskne a čierna nie.

Ten 100%-ný lesk ale nie je moc pekný. Je z neho len taká biela bodka (to je odraz nášho jediného svetelného zdroju). Skúsime ten Roughness pre zlato jemne zvýšiť, aby nebol 0, ale nejaké malé číslo.

Hneď je to krajšie.

Skúste si to aj vyrendrovať. Odporúčam posunúť svetlo niekam oproti kamere, aby bol odlesk pekne vidno. Ak dáte svetlejšie pozadie, celá scéna sa vám zosvetlí. Mohli by ste dostať niečo takéto.

Je to pekné, ale pôsobí to trochu umelo. Skúsime si do toho pridať trochu realizmu. Realizmus sa vo veľkej miere pridáva pomocou nedokonalostí. Pomocou ďalšej textúry trochu znedokonalíme tieto naše odlesky.

Pridáme si novú textúru, volá sa Musgrave. Pozrime sa, ako vyzerá.

Všimnite si, že ako výstup nemá farbu, ale iba factor. To znamená, že je naozaj určená iba na takéto textúrové triky. Pri priradení do Base Color nám to vizualizuje tak, že priradí číslu 0 čiernu, 1 bielu a zvyšok interpoluje. Sú to také čiernobiele fľaky. Musgrave je textúra (mimochodom tiež založená na perlinovom šume) s veľkými možnosťami modifikácie. Ako výstup do Factoru ale dáva čísla z intervalu -1 až 1, takže si ju musíme najprv pretransformovať na 0 až 1. (Zatiaľ si zo záverečného výstupu odstrihnem si Roughness a Metallic, aby ma to nerušilo.)

Teraz až vidíme, ako textúra Musgrave vyzerá v skutočnosti. Všetky čisto čierne oblasti boli rôzne negatívne hodnoty (medzi -1 a 0), blender ich ale všetky zobrazil na čiernu.

My teraz chceme aby naša textúra bola matná nielen na čiernych kockách, ale aj na čiernych fľakoch (to nám bude simulovať nečistotu zlata). Potrebujeme šachovnicu a Musgrave spojiť tak, aby sme mali textúru čiernu všade, kde je aspoň jedna z nich čierna. To je presne multiply, čo sme si skúšali v gimpe. Takže si hodnoty vynásobíme binárnou operáciou pomocou Math Node. Pridadíme si to najpr do Base Color, aby sme sa pozreli, ako to vyzerá.

A je to správne. Čierna kocky šachovnice ostali čierne, biele sú teraz jemne zašumené. Vo všeobecnosti pomocou multiply viete podobne pospájať viacero textúr, pre ktoré nás zaujíma iba Factor.

SAMOSTATNÉ MINICVIČENIE:

Skúste nody správne dopospájavať, aby sme získali jemne zapatlané zlato. Musgrave textúra má aj rôzne vstupné parametre, s ktorými môžete skúsiť pohýbať. Môžete meniť parametre všetkých intervalov, ktoré sme používali. Mali by ste získať napríklad niečo takéto:

Ďalej smerom k realizmu

Vyrobte si nový projekt.

Teraz sa trochu vrátime k layoutu celého blendera. Už vieme, že v blendri si vieme jednotlivé okienka otvárať/zatvárať a zväčšovať/zmenšovať podľa potreby, aby sme získali ideálne pracovné postredie. Blender má v skutočnosti aj vyrobené prednastavené pracovné prostredia, takže si ich vykúšame. Predvyrobené pracovné prostredia nájdete v hornom menúčku. To ktoré naujíma nás sa nazýva Shading. Prepnite si ho.

(ak je vaša obrazovka príliš malá, tak ako v mojom gife, v lište sa posuniete ďalej držaním stredného tlačítka)

Blender nám tu pootváral všetko, o čom mal pocit, že je pri výrobe materiálu dôležité. Asi ste si všimli, že dole už máme rozbalené naše obľúbené Nodes.

Na hlavnom Editore je miesto Viewport Shading rendered (čo sme používali doteraz) použitý Material Preview. Znamená to, že nevidíme objekt tak, ako bude vyrendrovaný, ale blender sa nám pre neho snaží nasimulovať prirodzené svetelné podmienky, aby sme čo najlepšie videli náš materiál. Scéna je akoby obalená guľou, ktorej textúru môžeme vidieť vpravo dole a ktorá žiari podobne, ako skutočná obloha.

Môžeme si to overiť tým, že si urobíme kocku dokonale reflexnú, ako zrkadlo. Už viete ako na to.

Pozor, toto nie je to, čo sa vám vyrendruje. Toto je iba náhľad materiálu. Skúste si to vyrendrovať, len tak pre porovnanie.

Urobíme si hrdzavú guľu.

Zmažte si všetko a pridajte si do stredu guľu. Pomocou procedurálne generovanej textúry si urobíme na ňu fľaky. pridajte si teda textúru Noise (asi najlepšia základná fľakatá textúra, výstup má na škále [0,1]) a prepojte si jej Factor (Fac) na Base Color nášho materiálu.

Získali sme také jemne škvrnitú plynulú textúru. My ale chceme výraznejšie a redšie škvrny. Použijeme na to Color Ramp, čiže premapujeme si trochu prechod bielej a čiernej.

To už vyzerá ako niečo, s čím môžeme pracovať.

SAMOSTATNÁ ÚLOHA:

Chceme sivú lesklú metalickú guľu, na ktorej sú fľaky premenlivých hnedo/červeno hrdzavých farieb. hrdza nesmie byť metalická, ani lesklá.

Hinty:

Takto nejak by to mohlo vyzerať.

Projekt uložte (cez File → Save As) a pošlite mi ho ako .blend súbor.

Stále to samozrejme nie je príliš realistické, napríklad aj preto, že naša guľa je čo do tvaru dokonale hladká. Nabudúce si ukážeme, ako takúto hrdzu spraviť aj pekne hrboľatú.