← späť

krátky doplnok k minulému cviku: Topológia II

Vzhľadom na to, že ste niektorí mali s domácou úlohou minulý týždeň problémy, rozhodla som sa sem pridať krátku časť o tom, o čo je cieľom dodržiavania správnej topológie a o tom, čo sa môže pokaziť, ak ju nedodržíme.

Pri reprezentácii 3D objektov pomocou meshov sa vlastne snažíme popísať nejaké 3D objekty, ktoré majú nejaký objem. Nepopisujeme ich ale pomocou objektov s objemom, popisujeme ich pomocou 2D útvarov (n-uholníkov) tak, že nimi definujeme okraj objektu.

Pointou topologických pravidiel z minulého týždňa je to, aby každý objekt, ktorý vytvoríme, naozaj bol okrajom nejakého 3D objektu.

Analógia v 2D:

Pomocou 4 úsečiek si vieme definovať štvorec. Väčšinu 2D útvarov vieme popísať bez toho, aby sme definovali jeho plochu, stačí že jednoznačne popíšeme jeho okraj.

Nie každá kombinácia úsečiek nám ale určuje nejaký 2D útvar.

Rovnako nie každá kombinácia plôch určuje nejaký objem.

Našim cieľom je vyrábať 3D objekty tak, aby naozaj ohraničovali a jednoznačne určovali nejaký 3D objem.

Čo sa môže pokaziť, ak to nedodržíme?

Za prvé, môže Vám to škaredo zobraziť/vyrendrovať (napr poblikávanie na gife sa deje pri 2 plochách na tom istom mieste).

To by sa ešte mohlo dať zakamuflovať. Horším problémom je, že Vám to môže komplikovať ďalšie spracovanie modelu. Napríklad (a to bude na dnešnom cvičení) vieme v blendri robiť s 3D modelmi množinové operácie (zjednotenie, prienik a rozdiel). Ak nemáme jednoznačne určený náš 3D útvar, tak sa s ním ani nedá množinovo operovať.

(V takýchto prípadoch blender proste vykoná niečo podľa svojho algoritmu a v podstate je tak trochu náhoda čo Vám z toho vypadne)

Problém podobného typu nastáva pri napríklad pri 3D tlači. Ak chcete objekt vytlačiť na 3D tlačiarni, potrebujete ho spracovať v softvéri danej tlačiarne (kde si tlačiareň rozvrhne na ktoré časti chce aký typ tlače). Vyzerá to asi takto:

Ak jej doručíte objekt, ktorý má topologické chyby, tak Vás ho pošle prerobiť a nebude sa s Vami ďalej baviť.

Ináč blender sa na Vás nevykašle. Ak budete mať chybný útvar, bude sa snažiť odhadnúť ako ste to mysleli a pracovať s tým. Je veľká šanca, že aj s chybným objektom budete môcť celkom pohodlne pracovať. Ale ak sa bude niečo niekde chovať divne, treba si skontrolovať topológiu.

Dobre, topológiu by sme mali, môžeme ísť na cvičenie. Dnešné cvičenie bude mať dve kratšie časti. Prvou je ďalšia úprava meshov pomocou tzv. modifiers a druhou je osvetlenie 3D scény.

CV3: MODIFIERS + OSVETLENIE

teória I: TRIANGULÁCIA

Ako bolo spomenuté v teoretickej časti minulý týždeň, počítačová grafika predpokladá, že všetky steny (n-uholníky) vo vašom meshi budú rovinné (čiže všetky jej vrcholy ležia v jednej rovine).

Keďže tri body jednoznačne určujú rovinu, každý 3-uholník bude rovinný. Pri 4-uholníkoch ale vieme ľahko vytvoriť stenu, ktorá rovinná nie je. Stačí si vziať štvorec (ležiaci v rovine) a jeden vrchol posunúť mimo.

Čo sa stane, ak niečo takého vytvoríte v blendri? Cez 4 body, ktoré nie sú v jednej rovine viete preložiť viacero rôznych (rovnako dobrých) plôch. Blender sa to bude snažiť vytieňovať ako rovinu, ale súčasne to geometricky rovina nebude. V zásade nemáte záruku aký výsledok Vám to dá. Skúste si to napríklad na kocke. (najlepšie to bude vidno, ak necháte dva oproti stojace vrcholy na mieste a a zvyšné dva posuniete do výšky – bude sa to chovať divne)

V prípade takýchto problémov si môžete mesh (alebo časť meshu) triangulovať, čiže rozsekať na trojuholníky. Označte si všetky steny, ktoré chcete, kliknite pravým tlačítkom a vyberte možnosť Triangulate Faces.

Ak si to chcete urobiť manuálne, označte si vždy dvojicu vrcholov na stene a kliknite na Vertex → Connect Vertex Path (skratka J)

V počítačovej aritmetike sú všetky výpočty iba približné, pretože pracuje iba určitý počet desatinných miest. Preto nie je nutné snažiť sa o to, aby všetky vrcholy steny boli matematicky presne na jednej rovine, stačí ak budú dostatočne blízko.

teória II: VZORKOVANIE

Jedna z teoretických metód výroby meshu je vzorkovanie. To funguje tak, že si vezmete hladkú plochu, v pravidelných intervaloch na nej vyznačíte body a tie potom pospájate do meshu.

Základná otázka v tomto postupe je, aké body na meshi vybrať a ktoré z nich pospájať. Univerzálne ideálne riešenie neexistuje. Vhodnosť algoritmu závisí to od toho, ako máme definovanú pôvodnú plochu a hlavne od toho, aké vlastnosti od meshu potrebujeme. Väčšina základných meshov, ktoré nám blender ponúka sú vlastne nejaké hladké plochy (alebo plochy zložené z viacerých hladkých plôch), ktoré sú nejakým spôsobom navzorkované.

Všimnite si, že v blendri (v meshoch) sú na výber dva typy gule: IcoSphere a UV sphere. Obidve sú meshe vyrobené zo sféry, len inak navzorkované. Icosphere je zložená z trojuholníkov – má výhodu, že je trojuholníková a že je úplne symetrická. UV sphere je navzorkovaná ako štandardná parametrizácia sféry – tj ako zemeguľa (rovnobežky a poludníky). Má nevýhodu, že nie je symetrická (napr. severý pól vyzerá dosť inak ako nejaký bod na rovníku), ale zasa sa na ňu bude ľahšie pridávať textúra (uvidíme o pár cvičení neskôr).

Univerzálna snaha je mať čo najlepší mesh s čo najmenším počtom vrcholov. Na miestach, kde sa nič nedeje môže byť mesh riedky, ak máte na meshi nejakú zložitú a krivú časť, treba ho mať hustý.

Snaha o najmenší počet vrcholov má zmysel. So stúpajúcim počtom vrcholov Vám stúpa zložitosť výpočtov a počítače to ešte úplne nedávajú. V blendri je ľahké urobiť príliš zložitú operáciu a celý rpogram tým zhodiť.

Nezabúdajte, že vo svete počítačových výpočtov je každá hodnota iba približná (počítačová aritmetika vždy zaokrúhľuje). Výsledky, ktoré Vám matematicky mali výjsť identické, môžu občas výjsť trochu ináč. Okolo takýchto počítačovo-grafických chýb, aj s tým ako ich ošetriť je celá veda.

prax I: MODIFIERS

Ďalším modelovacím pomocníkom v blendri sú tzv. Modifiers.

V princípe si modifier môžete predstaviť ako zobrazenie. Na vstupe máte mesh, ktorý sa Vám na výstupe zobrazí na upravený mesh. Ten závisí od vstupu meshu a modifiera (súčasťou ktorého môžu byť ďalšie vstupné parametre). Ukážeme si pár základných dôležitých.

1. Subdivision surface

Otvorte si v blendri nový projekt. Zbavte sa kocky a pridajte nový mesh typu Monkey (Suzanne).

Vidíme, že je relatívne hranatá. Aj keď jej prepneme tieňovanie na hladké (pravý klik na object → Shade smooth), výsledok je relatívne neuspokojivý.

Potrebujeme detailnejší mesh.

Vráťte si tieňovanie na ploché (pravý klik na object → Shade flat), nech lepšie vidíme čo sa deje. V pravom menúčku kliknite na záložku Modifier properties (francúzsky kľúč), kliknite na Add modifier → Subdivision surface.

Tu si viete naklikať vlastnosti nášho modifieru. Na výber sú dva typy zjemnenia meshu: Catmull-Clark (ten sa snaží zjemniť mesh tak, aby bol pekne hladký) – ten budeme chcieť poväčšine a Simple (ten iba jednoducho krája plochy na menšie)

Ďalej si viete naklikať, ako veľmi chcete plochu zjemniť. (kolónka Levels Viewport). Ak ste spokojní s tým, ako ste si modifier nastavili, môžete ho dať „zapiecť“. Kliknite na tú malú šípočku a zakliknite Apply. Tým sa Vám modifier aplikuje natrvalo, čiže fyzicky upraví Váš mesh. Skontrolujte si ako teraz vyzerá v Edit Mode – mal by mať veľmi veľa vrcholov.

Vo všeobecnosti tento postup funguje pre každy modifier. Vyberiete si modifier, naklikáte mu nejaké vlastnosti a dáte Apply.

2. Screw

Screw patrí medzi modifiers, ktoré pomáhajú modelovať rotačne symetrické objekty. Povedzme, že si chceme urobiť guľatý svietnik. Stačí nám vymodelovať jeho prierez, ostatné za nás vybaví modifier. Vyskúšame si to.

Vyrobíme si profil svietnika (čisto z vrcholov a hrán): začneme plochou, zmažeme všetky vrcholy okrem jedného a z toho pomocou Extrude (skratka e) vytvoríme svietnikovitý profil.

Vrátime sa do object mode a na objekt aplikujeme Modifier Screw. Skontrolujte, či sa Vám objekt skrutkuje okolo správnej osi (u mňa je to z) a môžete použiť Apply.

Nakoniec si opravíme chyby. U mňa ostala diera na spodku a v strede objektu. Zaplním ich plochami. (Hint: ak kliknete na vrchol a následne Ctrl + iný vrchol, Blender Vám označí najkratšiu cestu medzi týmito dvoma vrcholmi – na gife je to ukázané na hornej diere)

Tento modifier má aj nejaké ďalšie zaujímavé vlastnosti, napríklad Angle (o aký uhol rotujeme), alebo Screw (o koľko počas rotácie stúpneme). Určite si viete predstaviť, že by sa pomocou tohto dali spraviť pekné točité schody.

3. Mirror

Modifier mirror funguje analogicky ako screw, akurát miesto rotačnej symetrie zrkadlí. Jeho použitie je dosť priamočiare a nepotrebuje ďalšie dovysvetlenie.

4. Boolean

Megadôležitý modifier je boolean, ten vie robiť boolovské (inak aj nazvané binárne/množinové) operácie, konkrétne prienik, zjednotenie a rozdiel. Na tento modifier potrebujete hlavný objekt (ten ktorý ideme modifikovať) a pomocný objekt (s ktorým operujeme). Hlavný objekt bude po operácii modifikovaný, pomocný ostáva nezmenený.

Vyrobte si dva samostatné objekty a presuňte ich tak, aby sa prekrývali. (ja som si v príklade vyrobila kužeľ na ktorom je nabodnutá guľa).

Ideme vyrobiť kužeľ (hlavný objekt) zjednotený s guľou(pomocný). Označte si kužeľ a pridajte mu modifier Boolean.

Vo vlastnostiach mu potrebujeme nastaviť dve dôležité vlastnosti:

  1. akú operáciu robíme
  2. s akým pomocným objektom

Ja si vyberiem zjednodenie (union) a za pomocný objekt vyberiem guľu (icosphere). Ak použijete Apply, ako výsledok sa nám kužeľ premenil na kužeľ zjednotený s valcom, pričom guľa (pomocný objekt) ostala nezmenená.

Samostatné cvičenie: Vyrobte kocku vodorovne prebodnutú tenším valcom. (nezľaknite sa, keď Vám tam ten valec ostane sedieť – pomocné objekty vždy ostávaju nemzmenené)

Užitočných modifiers je omnoho viac, ale nemáme tu priestor podrobne prechádzať cez každý. Dôležité je, aby ste vedeli, že aj takto môže vyzerať modelovanie meshu.

Ďalšie používanie modifiers:

Modifiers nie je nutné okamžite aplikovať. Môžete si ich tam proste nechať spustené a v prípade potreby im dodatočne zmeniť vlastnosti. Môžete mať na jednom objekte viacero aktívnych modifiers (pozor, tu potom záleží na poradí – nie všetky sú navzájom komutatívne).

OSVETLENIE

teória III: RENDER A SVETELNÉ ZDROJE

Ako sa v počítačovej grafike vypočítava vplyv svetla? Veľmi zjednodušene povedané, robíme to simuláciou skutočnej fyziky. Z dôvodov výpočtovej kapacity to nie je presná simulácia, ale iba jej aproximácia.

Základný princíp je vždy založený na tom, že zo zdroja svetla vyšleme svetelný lúč, ktorý sa postupne poodráža (alebo sa do nich môže absorbovať, prípadne prejsť cez ne – závisí to od materiálu) a ak nakoniec skončí v kamere, uvidíme jeho vplyv vo forme farebného pixelu.

V skutočnosti sa výpočty robia skôr opačným smerom. Teda vysielame lúč z každého pixelu, ktorý potrebujeme vypočítať, necháme ho pobehať po scéne a uvidíme, kde skončí – či v nejakom svetelnom zdroji, alebo v kúte.

Ak by Vás táto téma viac zaujímala, naštudujte si niečo o pojme Ray Tracing.

Toto považujte za veľmi zjednodušené vysvetlenie, téma výpočtu svetla v poč. grafike je veľká a dôležitá oblasť, ktorá sa neustále vyvíja. Nemá jedno správne riešenie, konkrétny algoritmus vždy závisí od toho, čo od výsledku chceme a aké máme výpočtové prostriedky.

Toto rozpočítavanie svetla, je vlastne to, čo sa deje, ak dáte scénu rendrovať. Náhľad, ktorý vidíte, je vlastne iba aproximácia výsledného rendru – taká, aby ju blender stíhal vyrábať v reálnom čase.

Rendrovacie enginy v Blenderi

Blender má v zásade 2 zákaldné rendrovacie enginy: Eevee a Cycles. Prepnúť si ich viete v pravom menúčku, v časti Render properties.

Eevee (ten je zapnutý ako default) je jednoduchší a rýchlejší, ale niektoré pokročilejšie triky s osvetlením v ňom nefungujú (napríklad veci týkajúce sa zrkadlových odrazov).

Cycles je výrazne pomalší, ale dokáže toho omnoho viac – hlavne ak chcete naozaj pekné realistické rendre. Súčasne vyžaduje trochu viac zručnosti a porozumenia nastavení a sú v ňom viac vidno aj chyby. Väčšinu cvičení budeme robiť iba v Eevee, kvôli jednoduchosti a rýchlosti.

Zobrazenie 3D scény:

3D scénu v blendri vieme pozorovať v 4 módoch (viewport shading):

  1. wireframe (vidíme iba hrany objektov)
  2. solid (vidíme objekty – iba geometricky)
  3. material preview (vidíme objekty aj s farbami, textúrami a materiálmi)
  4. rendered (vidíme všetko spomenuté vyššie aj s osvetlením scény)

(v príklade nižšie som objekt prefarbila na červeno, nech je lepšie vidieť)

prax II: OSVETLENIE SCÉNY

Pozadie je samo o sebe svetelným zdrojom – vytvára konštatné svetlo všade na scéne (aj v tmavých skrytých kútoch).

Potom sú tu samostatné svetelné zdroje – objekty typu Lamp. Na scénu ich môžete pridať ľubovoľne veľa. Svetlá sú v blendri relatívne jednoduché.

Otvorte si nový dokument. Pod kocku pridajte väčšiu plochu ako podložku. Prepnite si Viewport shading na Rendered.

V scéne už teraz máme jeden svetelný zdroj. Je to taký ten chumáčik so zvislou paličkou. Ak si ho označíte, v pravom menúčku mu môžeme zmeniť svetelné vlastnosti (zelená žiarovka).

Prvá dôležitá vlastnosť je typ svetelného zdroja. Na výber máme štyri, každý z nich je niečím špecifický:

  1. point = zdrojom svetla je bod, ktorý rovnomerne svieti na všetky strany. Zo zväčšujúcou sa vzdialenosťou jeho intenzita klesá. V zásade simuluje lampu.
  2. sun = zdroj svetla simulujúci skutočné slnko. Emituje rovnobežné lúče konkrétneho smeru (ten sa dá nastaviť). So zväčšujúcou sa vzdialenosťou sú lúče rovnako silné, čiže samotná poloha tohto zdroja je irelevantná, dôležitý je iba ten smer
  3. spot = podobný ako point, ale svetlo emituje iba na určitom uhle. V podstate je to zdroj svetla simulujúci reflektor
  4. area = podobný ako point, ale zdrojom nie je konkrétny bod, ale plocha. Simuluje lampy s väčšou plochou

Okrem typu svetla vieme každému svetlenému zdroju nastaviť jeho Farbu (Color) a Intenzitu (Power alebo Strength) a nejake geometrické vlastnosti (tieto závisia od typu svetelného zdroja). Skúste si ich pomeniť, aby ste sa v tom trochu zorientovali.

Ak chceme viacero svetelných zdrojov, môžeme si ich pridať cez Add → Light → [typ svetla].

SAMOSTATNÁ ÚLOHA:

Vytvorte opičiu diskopárty. Musí obsahovať aspoň tri opice s prirobeným jednoduchým telom, nejakú podlahu, čierne pozadie, farebné svetlá a diskoguľu.

Samostatnú úlohu mi pošlite ako obrázok.

Hint na diskoguľu: k materiálom sa dostaneme podrobnejšie na ďalšom cvičení, ale vysoký lesk objektu sa dá jednoducho nasimulovať tým, že v pravom menúčku v časti Material Properties pridáte nový materiál (klikom na New) a nastavíte mu hodnoty:

Ak máte chuť sa s tým naozaj prplať a urobiť z diskoguľu naozaj z naozajstných zrkadiel, existuje na to špeciálny tool, volá sa Reflection Cubemap (tutorial/vysvetlenie: How do the new light probes in Eevee work?)