← naspäť na zoznam cvík

21.4

10 : rendrovanie

Dnes sa najskôr pozrieme na nejaké predvyrobené materiály, ktoré by vám potenciálne vedeli pomôcť v prípade potreby vizualizácie matematiky. Zvyšok cvika bude o rendrovaní.

Blender python templates

Minulú hodinu sme si skúšali písať nejaké kratšie kúsky kódu (scripty). Okrem toho v Blendri existuje aj veľa predvyrobených scriptov na rôzne blenderovské účely. Nájdete ich tam, kde sme písali scripty pod tlačítkom Templates.

Rada by som upozornila na jeden konkrétny: Addon Add Object je relatívne dlhý script, ktorý vám vytvorí vlastný typ meshu s tým, že sa vám aj pridá do zoznamu základných meshov. Takže po spustení scriptu sa bude dať vytvoriť úplne rovnako ako obyčajná kocka - cez add mesh. Tento script tam má vyriešené úplne všetko, vrátane vlastnej ikonky pre daný mesh.

Ak na kóde nič nezmeníte, nový mesh bude iba obyčajný štvorec a bude sa volať Add Object. Vyskúšajte si to.

Addons, matematické funkcie a plochy

Súčasťou blendru sú aj rozšírenia, tzv. Addons. Pridávajú do blendru rôzne nové funkcionality. Nájdete ich v Preferences.

Ak chcete nejaký Addon aktivovať, treba mu proste zaškrtnúť políčko vedľa (niekedy to chvíľu trvá). My si aktivujeme addon Add Mesh: Extra Objects.

Ten vám pridá k dispozícii viacero nových zaujímavých objektov. Môžete si ich poskúšať. Tie na ktoré chcem upozorniť špeciálne, sú matematické funkcie, a to tieto dve:

  • Z-Math Surface = výšková funkcia. Teda máme funkciu v tvare z = f(x,y). Blender každému bodu (x,y) priradí "výšku" z a zobrazí to ako 3D plochu (x,y,z).
  • XYZ-Math Surface = plocha v priestore, čiže máme funkciu v tvare S:(u,v) → (x(u,v),y(u,v),z(u,v)). Ide o zobrazenie nejakej oblasti [a,b]x[c,d] do 3D priestoru.
    (u,v sú písmenká, ktoré sa pri takýchto situáciach v počítačovej grafike štandardne používajú. rovnako sú označené aj v blendri)

Keď sa nad tým zamyslíte, Z-Math Surface je iba špeciálny prípad XYZ-Math Surface. Poďme si ich vyskúšať.

Vyberme si Z-Math Surface. Dole sa vám zobrazia možnosti, kde vašu funkciu viete definovať. Zápis vzorca je rovnaký ako pri matematických operáciach v jazyku python. (ja som v príklade prepísala pôvodnú funkciu na rovinu z=x+y)

Pre XYZ-Math Surface sú aj nejaké prevyrobené známe plochy.

Ak si chcete vyrobiť vlastnú plochu, zaujíma vás hlavne predpis funkcie a interval na ktorom je dedinovaný. Tie sa nachádzajú tu:

Plochy, ktoré tu predpisujeme sú hladké. Vytvorené meshé sú iba ich aproximáciou. Plochu si vyčíslime iba pre konkrétne body a pospájame ich rovnými plôškami. U-step a V-step vyjadrujú, ako veľmi podrobný bude tento mesh. Čím dáte vyššie číslo, tým hustejšie vám to v danom smere naseká.

Konkrétne takto: Nech napríklad U-step = 4, V-step = 4. Potom si plochu S(u,v) = (x(u,v),y(u,v),z(u,v)) definovanú na [0,1]x[0,1] vykresíme v bodoch S(0/4,0/4), S(0/4,1/4), S(0/4,2/4) ... S(4/4,4/4) a pospájame do meshu. Vizuálne:

(ak by sme mali plochu definovanú na inom intervale ako [0,1]x[0,1], trebalo by to trošku upraviť)

Samostatná úloha

Pomocou XYZ-Math Surface vykreslite valec. Toto je vlastne matematická úloha. Musíte nájsť také zobrazenie (u,v) -> (x(u,v),y(u,v),z(u,v)), ktoré vám nejakú oblasť zobrazí na valec v priestore.

Ak neviete ako na to, skúste si najprv zobraziť úsečku na kružnicu.

Pošlite mi render!

Rendrovanie

Teraz sa pozrieme na pár vecí okolo samotného rendrovania. Vyrobte si scénu, kde bude na zami plocha a nad ňou štyri farebné rôzne pootáčané opičky. Opičky si vyhlaďte pomocou subdivision surface a smooth shading. Prepnite si Viewport Shading na Rendered, aby sme videli ako bude vyzerať výsledný render. Takže s týmto začíname:

Takže poďme na to rendrovanie. Samozrejme, základom dobre vyzerajúceho výsledku je mať dobré materiály. Ak urobíte zlato bez lesku, bude vyzerať blbo tak či tak. Ja som si pre náš príklad iba trochu znížila lesklosť. Teraz si prejdeme pár vlastností, ktoré majú dosah na výsledok rendru.

Ak vám Blender rendruje príliš dlho, viete to hocikedy zastaviť tlačítkom Esc.

I. Poloha kamery:

Samotná kamera je objekt ako každý iný. Dá sa presúvať, rotovať a škálovať.

Pohľad kamery si vieme skontrolovať pomocou tlačítka 0 na numerickej klávesnici. Ak chceme kameru posúvať priamo s pohľadom, musíme si to zapnúť v pravom menúčku, ktoré sa dá vysunúť tlačítkom N → View → Lock Camera to View.

II. Pozadie:

Pozadie si vieme upraviť cez nodes. Treba sa prepnúť z Object na World.

Môžeme mu priradiť farbu, gradient, textúru, alebo dokonca vyrobiť jednoduché obláčiky tak, ako sme robili hrdzu. Skúste si to.

Pozadie emituje svetlo. Takže treba rátať s tým, že veľa modrej vám pridá modré svetlo do scény. Ak sa tomu chcete vyhnúť, dajte si ho biele a obláčikovú textúru namapujte na nejakú veľkú stenu za vašim modelom.

Pozadie v podstate simuluje celkové svetlo v priestore, ktoré vzniká tým, že svetlo zo slnka sa odráža vlastne donekonečna. Vďaka tomu je svetlo aj pod vašim stolom ďaleko v kúte, len je ho tam menej. V softvéri nevieme nasimulovať nekonečne veľa odrazov, tak sme proste šupli nejakú základnú vrstvu svetla všade.

III. Osvetlenie

Osvetlenie je veľmi dôležité. Celkovo je to samozrejme na vás, ale dám vám pár odporúčaní. Ako základný svetelný zdroj dobre vyzerá sun – slnko. Treba mu iba nastaviť nejakú vhodnú intenzitu. Podla nálady mu môžete zmeniť aj farbu, napríklad na nejakú jemnú žltú.

Osvetlenie cez slnko (sun) nezávisí od polohy svetelného zdroja, iba od smeru. Je to akoby svetelný zdroj, ktorý je nekonečne ďaleko a osvetľuje všetko z jedného konkrétneho smeru. Takmer ako naozajstné slnko.

Celkom efektné veci viete dosiahnuť aj pridaním viacerých slabších bodových farebných svetelných zdrojov. Bočné a zadné svetlá vedia spraviť peknú zmenu (všimnite si pravú opicu). Bohužiaľ, neexistuje univerzálne správne riešenie pre každý model, treba sa s tým pohrať.

IV. Ambient occlusion

Táto hodnota simuluje tiene v rôznych záhyboch objektov. Základné osvetlenie ktoré nám emituje pozadie nevie odchytiť miesta, ktorá majú byť naozaj tmavé lebo sú niečím veľmi zatienené. Ambient occlusion to trošku dorovnáva.

Opiciam na gife sa akoby zvýraznili črty.

Color Management

Blender má k dispozícii jemnú úpravu farieb v časti Color Management. Môžete tu zvýšiť kontrast a „expozíciu“, tj presvetlenie.

V. Parametre kamery

Rozlíšenie a teda aj pomer strán vieme nastaviť v pravom menúčku

Ďalšie vlastnosti nájdete v kamerových vlastnostiach. Označte si kameru a kliknite na tú malú zelenú kamerku v pravom menúčku. Prvá dôležitá vlastnosť je Clip Start + End, ktorá určuje od akej po akú vzdialenosť vlastne chceme rendrovať.

Depth of field nám dovolí niekam zaostriť a niečo rozmazať. Miesto, kde chceme mať obraz ostrý si vieme určiť cez Focus on Object (cez konkrétny objekt), alebo Focus Distance (cez vzdialenosť). Vlastnosť F-stop definuje silu rozmazania: nízke hodnoty rozmazávajú viac.

Skontrolujte is občas aj samotný render. Ten v náhľade nie je stopercentný.

Pošlite mi render!

VI. Ostré a oblé hrany

Pri niektorých menších objektoch zvyknú ostré hrany pôsobiť neprirodzene. Vyhladíte ich Veľmi ľahko pomocou Bewel funkcie v Edit Mode. (dá sa použiť aj viackrát). Nezabudnite na Smooth Shading.

Vyskúšajte si to. Vytvorte si nejaký hranatý objekt (stačí aj kocka) a využite Bewel na zjemnenie hrán. Ovláda sa ťahaním žltej páčky. Aplikuje sa vždy iba na označené steny.

Pošlite mi render!

VII. Rendrovacie enginy

Blender má dva základné rendrovacie enginy. Eevee a Cycles. My sme doteraz takmer vždy používali iba Eevee, pretože je jednoduchší a rýchlejší. Bohužiaľ, je aj horší a niektoré funkcionality v ňom nebežia. Ak máte výkonnejšiu grafiku, môžete skúsiť rendrovať aj v cycles, bude to vyzerať lepšie.

Ak máte obraz „rozmrvený“, treba upraviť Sampling. Samples si môžete predstaviť nasledovne: pri každom prepočitavaní odrazu svetla sa počíta aj nejakou náhodou. Je to prirodzené, pretože keby sme chceli úplne presné odrazy, potrebovali by sme sa fyzikálne dostať niekam na atomárnu úroveň a to nedokážeme. Preto trošku odhadujeme. Ak si celé osvetlenie scény spočítame viackrát, pri každom použití náhody dostaneme jemne iný výsledok. Počet samples je počet rôznych takýchto výsledkov.

Čím viackrát si celú scénu spočítame (výsledky sa potom nejak nakombinujú), tým bude výsledok krajší, ale aj bude dlhšie trvať rendrovanie.

V blendri si viete nastaviť zvlášť sampling pre Viewport (pracovné okno) a Render (samotný výsledok rendra)

Rendrovacie časy a výsledky pre porovnanie (na mojom pracovnom notebooku):

1. Blender Cycles: Sampling = 2, čas rendrovania: 3.37 sekundy

2. Blender Cycles: Sampling = 16, čas rendrovania: 24.97 sekúnd

3. Blender Cycles: Sampling = 64, čas rendrovania: 1 min 47.07 sekúnd

4. Blender Eevee: Sampling = 64, čas rendrovania: 15.87 sekúnd

Pri zložitejších modeloch sa vám čas rendrovania radikálne zvýši, obvzlášť ak tam máte veľa odrazivých plôch.

Pri menších počtoch samples bude Eevee vyzerať lepšie. Dalo by sa povedať, že Eevee nedostatky „kamufluje“, Cycles je poctivejší a úprimnejší. Vďaka tomu sú viac vidno chyby, ale aj krásne ostré detaily.

Je úplne normálne, ak pri väčsom rozíšení a viac samples scénu rendruje aj pol hodinu. Na odovzdanie záverečných projektov to nie je nutné. Rátam s tým, že niektorí máte aj pomalšie počítače, takže postačí aj Eevee a menej samples.

Ak si niekedy budete googliť informácie o rendrovacích enginoch pre blender, narazíte aj na jeden, ktorý sa volá Blender Render. Je to predchodca Eevee a ešte donedávna bol aktuálny, momentálne už neexistuje. Workbech je ešte vo vývoji.

Ukladanie projektov

Pri ukladaní projektu si blender pamätá relatívne cesty ostatných súborov. To znamená, že pre všetky textúry si pamätá, kde sú uložené vzhľadom na samotný .blend súbor. Pri samotnom modelovaní si všetky textúry, ktoré chcete použit, uložte priamo k .blend súboru, alebo do nejakého podpriečinku. Každopádne určite ich potom už nepresúvajte. Ak ich blender nenájde tam, odkiaľ ste ich načítavali, nebude ich vedieť zobraziť.

Druhá možnosť je využiť funkciu File → External Data → Pack all into .blend (tú sme si ukazovali ne niektorej z minulých hodín)