Vyplňovanie oblastí a textúrovanie (otázky 61 - 68)¶
[Zdroj: PG_2021_Otazky_z_predmetu.pdf, skuska2023.pdf, prednasky.pdf]
61. Vyplňovanie oblastí používané v počítačovej grafike (charakteristika)¶
Súvis s vizualizačným procesom¶
Vyplňovanie oblastí sa typicky viaže na: - 4. vrstvu vizualizačného procesu (vyplňovanie/textúry v rámci generovania výsledného obrazu), - 6. a 7. vrstvu (kompozícia, vykresľovanie – výsledné „dostavenie“ farieb/pixelov do obrazu).
Typy vyplňovania (čo sa tým myslí)¶
- Vyplňovanie oblasti 1 farbou
Najjednoduchší prípad: všetky body oblasti dostanú tú istú farbu výplne. - Vyšrafovanie oblasti
Vyplnenie oblasti čierno-bielym vzorom (šrafy, raster, opakujúci sa vzor). - Vyplnenie farebným vzorom (textúrovanie)
Vyplnenie oblasti farebným obrazovým vzorom (textúrou) tak, aby vznikol dojem materiálu (drevo, kameň, kov a pod.).
Rozdelenie algoritmov vyplňovania podľa toho, ako je zadaná hranica¶
Algoritmy sa delia podľa spôsobu zadania hranice vypĺňanej oblasti:
- Hranica definovaná geometricky (výpočtovo)
Hranica je daná vrcholmi/hranolmi/polygónom, priesečníky sa rátajú matematicky.
- Hranica nakreslená na zobrazovači
Hranica existuje ako pixely na obrazovke (pracuje sa priamo s farbou hranice/výplne).
Metódy vyplňovania uvádzané v materiáloch¶
- Metóda riadkového rozkladu
- Inverzné vyplňovanie – riadkové a plotové
- Vyplňovanie spektrom
- Semienkové vyplňovanie – rekurzívne a nerekurzívne
62. Metóda riadkového rozkladu pri vyplňovaní oblastí (scanline fill)¶
Základná charakteristika¶
- Použiteľné pri hranici definovanej geometricky.
- Oblasť sa vypĺňa po „rozkladových riadkoch“ rovnobežných s osou X (t. j. po riadkoch s konštantnou hodnotou Y).
Postup (kroky)¶
- Postupuje sa od najvyššieho vrcholu oblasti k najnižšiemu, a v rámci riadka spravidla zľava doprava.
- Pre každý rozkladový riadok (konštantné
Y, zvyčajne s krokom-1): - nájdu sa priesečníky riadka s hranami vypĺňanej oblasti,
- priesečníky sa uložia do zoznamu.
- Priesečníky sa usporiadajú zľava doprava.
- Vyfarbia sa úseky medzi:
-
- a 2. priesečníkom,
-
- a 4. priesečníkom,
- atď.
Dôležitá podmienka¶
- Počet priesečníkov v každom riadku musí byť párny, aby sa dali korektne spárovať úseky „vnútri“ oblasti.
63. Vyplňovanie spektrom (prechod farieb)¶
Vyplňovanie spektrom je vyplňovanie oblasti, kde farba plynule prechádza z prvej farby do druhej (a nejde o jednu konštantnú farbu).
Spôsoby realizácie¶
Uvádzajú sa dva spôsoby:
3.1 Spôsob 1: cez metódu riadkového rozkladu¶
- Mnohouholník sa najprv otočí o uhol β tak, aby smer vykresľovania úsečiek bol rovnobežný s osou X.
- Následne sa použije riadkový rozklad a nájdu sa priesečníky.
- Úsečky medzi priesečníkmi sa pri kreslení spätne otočia o β (vrátia sa do pôvodnej polohy).
- Rozdiel oproti klasickému riadkovému vyplneniu: úseky sa nevypĺňajú jednou farbou, ale farba sa mení postupne.
3.2 Spôsob 2: nastavenie orezávacej oblasti (napr. MS Windows)¶
- Nastaví sa orezávacia oblasť na oblasť mnohouholníka.
- Vypočítajú sa súradnice:
Xmin, Xmax, Ymin, Ymax.- Podľa veľkosti uhla β sa vyplní príslušný rovnobežník; orezávacia oblasť zabezpečí, že výsledok zostane len v oblasti mnohouholníka.
Poznámka: tento spôsob je viazaný na konkrétne grafické rozhrania (v materiáloch sa spomína Windows).
Typy zmeny farby / prechodu¶
- Lineárna zmena farby (jednoduchšia)
- Radiálna zmena farby
Plynulý prechod farieb v RGB priestore (výpočet prírastkov)¶
Pre dve farby C1=(R1,G1,B1) a C2=(R2,G2,B2):
1. Zistia sa rozdiely zložiek:
- ΔR = R2 - R1, ΔG = G2 - G1, ΔB = B2 - B1.
2. Určí sa počet úsečiek (krokov) n v rovnobežníku/prechode.
3. Prírastky na krok:
- pR = ΔR / n, pG = ΔG / n, pB = ΔB / n.
4. Farba sa mení po krokoch:
- Ri = R1 + i*pR, Gi = G1 + i*pG, Bi = B1 + i*pB.
Materiály uvádzajú, že plynulý prechod je ekvivalentom alfa miešania (v zmysle plynulého prechodu medzi dvoma farbami).
64. Inverzné a plotové vyplňovanie¶
Základná charakteristika¶
- Vyžaduje, aby zobrazovač umožňoval dynamickú zmenu obsahu (typicky monitor).
- Nie je implementovateľné na zariadeniach, kde „nevieš prepisovať obsah“ (v materiáloch sa uvádza príklad tlačiarne).
- Hranica je na zobrazovači (pracuje sa priamo s pixelmi hranice).
XOR princíp¶
Používa sa operácia XOR (výhradne alebo), t. j.:
- 0 XOR 0 = 0
- 1 XOR 1 = 0
- 0 XOR 1 = 1
- 1 XOR 0 = 1
Interpretácia pri vyplňovaní: - ak prejdeš cez tú istú oblasť druhýkrát, XOR ju „odfarbí“ (1 XOR 1 = 0).
Dva typy inverzného vyplňovania¶
- Vodorovné (riadkové) vyplňovanie
- rýchlejšie (typicky lepší prístup do pamäte).
- Zvislé (plotové) vyplňovanie
- pomalšie (offsetové odskoky, horší pamäťový prístup).
Typický postup¶
- Pre každú hranu/hranový pixel:
- XOR metódou sa „zafarbí“ všetko od hrany po pravý (alebo ľavý) okraj obrazovky.
- Pri ďalšej hrane sa operácia opakuje.
- Tam, kde sa prechody prekryjú, dôjde k odfarbovaniu (1 XOR 1 = 0) a výsledkom je vyplnená oblasť.
Poznámka z materiálov: - metóda „100 % nájde výsledok“, ale nie je „100 %“ pri „naliezovaní“ výplne (t. j. niektoré degenerované prípady môžu byť problematické).
65. Rekurzívne aj nerekurzívne semienkové vyplňovanie¶
Semienkové vyplňovanie začína vnútri oblasti zvolením počiatočného bodu (semienka) a rozširuje sa do okolia.
5.1 Rekurzívne semienkové vyplňovanie¶
- Hranica je definovaná na obrazovke.
- Pre každý pixel sa zisťuje:
- či je pixel farby hranice,
- alebo už je pixel farby výplne.
- Ak nie je ani hranica, ani už vyplnený, pixel sa vyplní a rekurzívne sa pokračuje.
Typicky sa používa 4-susednosť: - hore, dole, vľavo, vpravo.
Nevýhody: - potrebuje veľa pamäte (rekurzia = zásobník volaní), - bez úprav je pre veľké plochy prakticky nepoužiteľný.
5.2 Nerekurzívne semienkové vyplňovanie¶
- Základná myšlienka je rovnaká, ale body návratu sa ukladajú do vlastnej štruktúry:
- zásobník (stack).
- Najbližší „bod rozvoja“ je 1. voľný bod v zásobníku (podľa stratégie DFS/BFS).
Výhody: - menšie pamäťové nároky než čistá rekurzia, - je to prakticky použiteľná forma seed fill.
66. Textúrovanie a jeho vzťah k zobrazovacím reťazcom¶
Definícia (textúrovacia transformácia)¶
Textúrovanie je proces (textúrovacia transformácia, TT) nanášania obrazových vzoriek (textúr, „tapiet“) na povrch alebo objem objektu tak, aby vznikol vizuálny dojem materiálu (drevo, kameň, kov a pod.).
Typy textúr podľa topologického rozmeru¶
- 1D, 2D, 3D.
Typy textúr podľa spôsobu nanášania¶
- Statické (nemenné textúry),
- Dynamické,
- Procedurálne (textúra sa počíta funkciou, napr. fraktálnou),
- Animačné (zmena textúry v čase, typicky poradím statických textúr, často klasická 2D animácia).
Textúra v transformačnom reťazci¶
- Zavádza sa SST (súradnicová sústava textúry) naviazaná na súradnicovú sústavu objektu.
- Namiesto priestorových súradníc (x, y, z) sa pracuje so súradnicami textúry (u, v) v tzv. „UV priestore“.
- TT je proces, ktorý mapuje body povrchu objektu na body textúry v SST.
Poznámka z materiálov: - textúrovacia transformácia je vnímaná ako prvý krok v transformačnom reťazci pre textúry, - typicky sa viaže najmä na súradnicovú sústavu objektu (SSO), s výnimkami (napr. pozadie SSZ).
67. Bilineárne textúrovanie, bump-map textúrovací procees a technológia „pečenia“ textúr¶
Charakteristika¶
- Ide o základný spôsob UV textúrovania, kde sa ako vzor najčastejšie používa obrázok (textúra).
- Textúra používa 2D súradnicovú sústavu SST [u, v]:
uzodpovedá x-ovej osi textúry,vzodpovedá y-ovej osi textúry.- Jedna jednotka v u/v zodpovedá dĺžke/šírke obrázka textúry.
Bilineárne UV textúrovanie na nelineárnu plochu (napr. Bézierova plocha)¶
- Pri nelineárnych plochách nie je mapovanie vždy lineárne („u a v nie sú lineárne“).
- Súradnica
[u, v]z textúry sa mapuje na priestorový bod[x, y](resp.[x, y, z]) na ploche. - Dá sa tak aplikovať textúra na ľubovoľnú plochu, ale:
- časová náročnosť je vyššia,
- pri viacerých plochách treba riešiť aj nadväzovanie textúr (seamy; bázická plocha).
Bump map (výšková mapa)¶
- Bump mapping pracuje s výškovou mapou (height map) a vytvára dojem, že povrch má nerovnosti.
- Vplyv svetla na bod povrchu je ovplyvnený „výškou“ z bump mapy.
- V praxi sa upravuje výsledný vzhľad (napr. jas, prípadne saturácia) bodov textúry tak, aby vznikol dojem hrboľatosti (3D efekt bez reálnej zmeny geometrie).
- Umožňuje simulovať aj pohyb svetelného zdroja.
- Vyžaduje vyšší výpočtový výkon.
Pečenie textúr¶
„Pečenie“ textúr je prenos (prepočítanie) detailných informácií zo zložitejšieho (detailnejšieho) 3D modelu na jednoduchší (lowpoly) model tak, aby jednoduchší model pôsobil vizuálne detailne.
V kontexte optimalizácie sa to často zaraďuje medzi LOD prístupy, lebo: - geometria sa zjednoduší (menej polygónov), - ale časť vizuálnych detailov sa zachová v mapách/textúrach.
Čo sa typicky „pečie“¶
Do textúr sa môže zapísať napríklad: - farba/albedo, - osvetlenie a tiene (lightmapy, AO), - normálové informácie (normal map), - odrazové informácie a iné materiálové parametre.
Prečo sa to robí (dôvody)¶
- lowpoly model má menej dát, teda menší súbor a rýchlejšie spracovanie,
- real-time aplikácie (hry, web, VR) často nezvládnu highpoly modely v reálnom čase,
- vizuálna kvalita sa dá udržať cez mapy, aj keď geometria je jednoduchá.
Praktický príklad¶
- Highpoly sochy/architektúra: tisíce až milióny polygonov, veľa jemných detailov.
- Lowpoly verzia: výrazne menej polygonov, ale:
- normal map a AO map spôsobia, že pri osvetlení objekt vyzerá detailne,
- lightmap môže niesť statické osvetlenie interiéru.
68. LOD technológie v rámci počítačovej grafiky¶
Level of Detail (LOD) je technika optimalizácie, ktorá znižuje výpočtovú náročnosť tým, že znižuje zložitosť objektov alebo ich parametrov, najčastejšie podľa: - vzdialenosti od kamery, - uhla/smeru pohľadu (vrátane zorného poľa).
Spôsob aktivácie¶
- Diskrétne LOD: prepínanie v skokoch (napr. 3 verzie modelu podľa vzdialenosti).
- Kontinuálne LOD: plynulé dynamické prispôsobovanie (napr. priebežná zmena teselácie alebo detailu).
Základné typy LOD (stručne + príklady)¶
- Geometrický LOD (tessellation LOD): mení počet trojuholníkov.
- Príklad: blízky objekt má viac detailov, vzdialený má zjednodušený mesh.
- Substitučný LOD (impostor/billboard): vzdialený 3D objekt sa nahradí 2D obrazom.
- Príklad: stromy v diaľke ako billboardy.
- Screen-space LOD: detail podľa toho, koľko pixelov objekt zaberá na obrazovke.
- Príklad: malý objekt ďaleko má nižší detail než objekt, ktorý zaberá veľa pixelov.
- Hierarchický LOD (HLOD/group LOD): vzdialené objekty sa zhlukujú do skupín.
- Príklad: zhluk stromov sa zobrazí ako jeden jednoduchý objekt.
- Terrain LOD (geomipmapping): terén je rozdelený na dlaždice, každá s vlastným detailom.
- Príklad: dlaždice blízko kamery sú detailné, ďaleké sú hrubšie.
- Materiálový/textúrovací LOD: mení sa kvalita textúr/materiálu (mipmapping, streaming, baking).
- Príklad: vo veľkej vzdialenosti postačí farba alebo nízke rozlíšenie textúry.
- Osvetľovací LOD: mení sa zložitosť osvetľovacieho modelu alebo sa používajú lightmapy.
- Príklad: vzdialené objekty bez dynamických tieňov, s jednoduchým Lambertom.
- Tieňovací LOD (shading LOD): voľba jednoduchšieho/zložitejšieho tieňovania podľa vzdialenosti.
- Príklad: blízko Phong, ďaleko jednoduchšie tieňovanie.
- Foveated LOD (eye-tracked): najvyšší detail len v oblasti fovey, periféria má nižší detail.
- Príklad: vo VR sa detail znižuje mimo miesta, kam sa používateľ pozerá.
Rozšírené a urýchľovacie techniky (stručná pointa)¶
- Mesh simplification/decimation: redukcia vrcholov a trojuholníkov s minimalizáciou vizuálnej straty.
- Príklad: edge-collapse, vertex-clustering; často s minimalizáciou chyby (quadric error metrics).
- Occlusion culling v kombinácii s LOD: nevykresľujú sa objekty, ktoré sú úplne zakryté.
- Neural geometric LOD: generovanie/optimalizácia detailu neurónovou sieťou (napr. cez SDF a adaptívne štruktúry).
Rýchle skúškové zhrnutie (čo vedieť povedať)¶
- Typy vyplňovania: 1 farba, vyšrafovanie, farebný vzor (textúra).
- Rozdelenie podľa hranice: geometricky definovaná vs nakreslená na zobrazovači.
- Scanline: priesečníky na riadku, zoradiť, vyfarbiť medzi nepárnym a párnym; párny počet priesečníkov.
- Spektrum: dva spôsoby (otočenie o β + scanline; alebo orezávacia oblasť); lineárny/radiálny prechod; prírastky RGB; ekvivalent alfa miešania.
- Inverzné vyplňovanie: XOR, riadkové vs plotové, potrebuje dynamický výstup.
- Semienkové vyplňovanie: rekurzívne (pamäťovo náročné) vs nerekurzívne (stack).
- Textúrovanie: SST, UV priestor, typy textúr (1D/2D/3D; statické/dynamické/procedurálne/animačné).
- Bilineárne textúrovanie: mapovanie [u,v] na povrch, pri nelineárnych plochách náročnejšie, riešiť nadväzovanie.
- Bump map: výšková mapa + vplyv svetla, dojem nerovností, vyššie nároky.
- Pečenie textúr (texture baking): prenos detailov z highpoly modelu na lowpoly model pomocou textúr (normal map, AO, lightmap); znižuje počet polygónov pri zachovaní vizuálneho detailu; používa sa najmä v real-time aplikáciách (hry, web, VR).
- LOD (Level of Detail): optimalizačná technika, ktorá mení zložitosť geometrie, textúr, materiálov alebo osvetlenia podľa vzdialenosti/uhla pohľadu; môže byť diskrétna (prepínanie verzií) alebo kontinuálna; zahŕňa geometrický, textúrový, osvetľovací, tieňovací a ďalšie typy LOD.