← naspäť na zoznam cvík

21.4

07 : textúry II

Dnes si ukážeme, čo ďalšie vieme dosiahnuť s textúrami.

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 s farebnými machuľami.

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

V základnom nastavení jednoducho vezme farbu vrchnej vrstvy. 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).

Existujú aj iné operácie s týmito číslami. Nájdete ich v layerovom menúčku pod názvom Mode.

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 (R,G,B) = (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, tj (R,G,B) = (0,0,0), dostaneme čiernu farbu, pretože (0*A) / 255 = 0 (pre ľubovoľné A).

Skúste si to pre rôzne kombinácie farieb. Ak vrchný layer čisto čierno-biely, je to, akoby ste si vyfarbovali omaľovávanku. (v gife mi pri zaklikávaní možnosti Multiply vybehlo menúčko mimo obraz)

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. Mali by ste tam mať vytvorené dva Nody spojené paličkou.

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ť, mazať a presúvať po priestore (myškou, alebo skratka 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, na output bodkách vedia dodať informáciu 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).

Vráťme sa do stavu, kde máme 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 našeho 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

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

  • Color je farebná informácia, to znamená (R,G,B).
  • Factor je jednorozmerný číselný údaj, hodnota (väčšinou) z intervalu [0,1]. Konkrétne pri šachovnici je nastavená tak, že ako výstup dáva buď 0, alebo 1, podľa toho, či ste na bielom, alebo čiernom štvorčeku.

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.

My by sme ale chceli na miesto bielej a čiernej dosadiť 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.

A je to tam. Prípadne vieme V Color rampe vyrobiť aj zložitejšie gradienty. Pomocou jeho interných vlastností. 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í.

Textúry nemusia byť používané iba na farbu materiálu, vieme nimi ovplyvniť aj rôzne iné vlastnosti, napríklad Roughness, alebo 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 si urobila jemne jednoduchšiu šachovnicu)

Povedzme teraz, že si chcem spraviť šachovnicu, ktorá bude mať zlaté (lesklé) a čierne (matné) kocky. Začnem priamočiaro.

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 pozmeniť.

Potrebujem 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, máme k dispozícii 2 nody.

  • Math Node = binárna operácia. Vezme ako vstup 2 hodnoty, zoperuje ich, dá nám na výstupe 1 hodnotu
  • Map Range = premapuje 1 interval na druhý. Hodnoty medzi nimi naškáluje lineárne (prípadne inak, ako si nastavíte)

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. 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 zruším si všetok Roughness a Metallic, aby ma to nerušilo.)

Teraz až vidíme, ako 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 (akoby nečistota 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É CVIČ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:

Pošlite mi render!

Ď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 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. Takéto niečo sme už robili kedysi dávno v Gimpe. Pamätáte sa?

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

BONUS 4: Dokončite hrdzavú guľu

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:

  • Pohrajte sa s parametrami Noise textúry. Napríklad parameter Detail rozhoduje, nakoľko sú okraje fľakov rozmazané/ostré.
  • Hrdza nie je jednofarebná. Na Color Ramp viete pridať viacero farebných zastávok pomocou toho malého pluska.
  • Textúr môžete použiť aj viac, napríklad aby zvyšný povrch gule nebol tak jednoliato lesklý

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é, keďž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ú. A niekedy neskôr sa pozrieme na to, ako niečomu takémuto spraviť pekný render.