OBSAH WEBU
ČTĚTE!
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
temata:12-3d_objekty:main [2011/04/25 16:06] george |
temata:12-3d_objekty:main [2011/05/26 13:52] (aktuální) george [Geometrické transformace] |
||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
+ | ~~ODT~~ | ||
+ | |||
====== 12 - Transformace, reprezentace a zobrazení 3D objektů ====== | ====== 12 - Transformace, reprezentace a zobrazení 3D objektů ====== | ||
Řádek 4: | Řádek 6: | ||
* jsou jedny z nejčetnějších operací v současné počítačové grafice | * jsou jedny z nejčetnějších operací v současné počítačové grafice | ||
* můžeme je chápat jako změnu pozice vrcholů v aktuálním souřadnicovém systému nebo jako změnu souřadnicového systému | * můžeme je chápat jako změnu pozice vrcholů v aktuálním souřadnicovém systému nebo jako změnu souřadnicového systému | ||
- | * **lineární transformace** - dají se skládat (otočení + posunutí + zkosení + zvětšení je možné provést v různém pořadí se stejným efektem) | + | * **lineární transformace** - jsou popsány lineárními rovnicemi |
* **kartézská soustava souřadnic** | * **kartézská soustava souřadnic** | ||
* je taková soustava souřadnic, u které jsou souřadné osy vzájemně kolmé a protínají se v jednom bodě - počátku soustavy souřadnic | * je taková soustava souřadnic, u které jsou souřadné osy vzájemně kolmé a protínají se v jednom bodě - počátku soustavy souřadnic | ||
Řádek 167: | Řádek 169: | ||
* plocha je definována bázovou maticí (polynomy) a sítí řídících bodů (matice) | * plocha je definována bázovou maticí (polynomy) a sítí řídících bodů (matice) | ||
- | _ __Bikubické plochy__ - interpolační, analogie Fergusonových křivek, matice 4×4 řídících bodů, spojitost plátů | + | - __Bikubické plochy__ - interpolační, analogie Fergusonových křivek, matice 4×4 řídících bodů, spojitost plátů |
- __Beziérové plochy__ - aproximační, analogie Beziérových křivek, matice 4×4 řídících bodů, spojitost plátů | - __Beziérové plochy__ - aproximační, analogie Beziérových křivek, matice 4×4 řídících bodů, spojitost plátů | ||
- __NURBS plochy__ - aproximační, analogie NURBS křivek, matice 4×4 řídících bodů | - __NURBS plochy__ - aproximační, analogie NURBS křivek, matice 4×4 řídících bodů | ||
Řádek 179: | Řádek 181: | ||
===== Zobrazování 3D projektů ===== | ===== Zobrazování 3D projektů ===== | ||
- | Algoritmy viditelnosti: **vektorové**(výsledkem je soubor viditelných a neviditelných hran) vs. **rastrové**(rastrový výsledek-obraz viditelných ploch, stinovani, barva osvetleni) | + | |
- | Mezi vektorové patří například Robertsův aloritmus(dělení potencilně viditelných hran na úseky kde se mění viditelnost) | + | * drátový model - těžko se určuje viditelnost => nevíme, jak jsou myšleny stěny |
- | Mezi rastrové patří např. Malířův algoritmus(vykreslování nejprve vzdálených objektů, pak bližších | + | * viditelné plochy jsou přivrácené k pozorovateli, přivrácené části mají normálu směrem k pozorovateli |
+ | * orientace normály vůči vektoru pohledu: | ||
+ | * skalární součin | ||
+ | * hodnota //z// normály po pohledové transformaci | ||
+ | * viditelnost hran: | ||
+ | * hrana mezi viditelnými plochami je viditelná | ||
+ | * hrana mezi neviditelnými plochami je neviditelná | ||
+ | * hrana mezi viditelnou a neviditelnou plochou je obrysová | ||
+ | * **předzpracování scény:** | ||
+ | * vyřazení odvrácených částí | ||
+ | * vyřazení zakrytých částí | ||
+ | |||
+ | ==== Vizualizační metody ==== | ||
+ | * **algoritmy viditelnosti:** | ||
+ | - __vektorové__ - výsledkem je soubor viditelných a neviditelných hran | ||
+ | * např. [[#Robertsův algoritmus]] - dělení potenciálně viditelných hran na úseky kde se mění viditelnost | ||
+ | - __rastrové__ - rastrový výsledek - obraz viditelných ploch, stínováni, barva osvětlení | ||
+ | * např. [[#Malířův algoritmus]] - vykreslování nejprve vzdálených objektů, pak bližších | ||
+ | * **algoritmy viditelnosti (jiné dělení):** | ||
+ | * __objektové__ - pro každý objekt scény hledá viditelné části - složitost n<sup>2</sup> | ||
+ | * __obrazové__ - pro každý pixel obrazu hledá viditelný objekt - složitost n*p | ||
+ | * __komplexní__ - scéna je zpracovávána celá najednou. Měkké stíny. Komplexní řešení. | ||
+ | |||
+ | {{ :temata:12-3d_objekty:vizualizacnimetody.png?600 |Vizualizační metody}} | ||
+ | |||
+ | === Robertsův algoritmus === | ||
+ | |||
+ | {{ :temata:12-3d_objekty:robertsuv_algoritmus.jpeg?150|Robertsův algoritmus}} | ||
+ | |||
+ | * klasický vektorový algoritmus | ||
+ | * dělení potenciálně viditelných hran na úseky, kde se mění viditelnost | ||
+ | * uděláme průsečíky s obrysovými hranami a testujeme viditelnost jejich úseků podle vzdálenosti průsečíků a zakrytí | ||
+ | |||
+ | === Plovoucí horizont === | ||
+ | |||
+ | {{:temata:12-3d_objekty:plovouci_horizont.jpeg?150|Plovoucí horizont}} | ||
+ | |||
+ | * vizualizace 3D funkcí v grafu | ||
+ | * vykreslení řezů v rovině XZ a YZ od předu dozadu (ve směru pohledu) | ||
+ | * vykreslení úseků řezu, které jsou mimo oblast horního a dolního horizontu | ||
+ | |||
+ | === Malířův algoritmus === | ||
+ | |||
+ | {{ :temata:12-3d_objekty:maliruv_algoritmus.jpeg?150|Malířův algoritmus}} | ||
+ | {{ :temata:12-3d_objekty:maliruv_algoritmus2.jpeg?150|Malířův algoritmus}} | ||
+ | |||
+ | * rastrový algoritmus | ||
+ | * vykreslování objektů odzadu dopředu => seřazení podle vzdálenosti | ||
+ | |||
+ | === Dělení obrazu - Warnock === | ||
+ | |||
+ | {{ :temata:12-3d_objekty:warnock.jpeg?150|Dělení obrazu}} | ||
+ | |||
+ | * rastrový objektový algoritmus | ||
+ | * dělení okna na čtvrtiny, dokud není vyplněn jedním objektem | ||
+ | - žádný objekt v okně => pozadí | ||
+ | - jeden objekt v okně => vykreslit | ||
+ | - více objektů v okně, ale nejbližší překrývá ostatní => vykreslit | ||
+ | - jinak => dělit | ||
+ | |||
+ | === Z-buffer === | ||
+ | |||
+ | {{ :temata:12-3d_objekty:z-buffer.jpeg?150|Z-bufer}} | ||
+ | |||
+ | * rastrový obrazový algoritmus | ||
+ | * ukládá informace o hloubce objektu (Z souřadnice nejbližších bodů) | ||
+ | * rychlý algoritmus, snadná implementace v HW | ||
+ | * každá plocha je zpracovávána pouze jednou => fronta | ||
+ | * využívá předzpracování scény | ||
+ | * využívá color buffer | ||
+ | |||
+ | === Ray tracing === | ||
+ | |||
+ | {{ :temata:12-3d_objekty:raytracing.png?150|Ray tracing}} | ||
+ | |||
+ | * **sledování paprsků** - z kamery se vypouštějí paprsky, sleduje se jejich pohyb, zlom a odraz | ||
+ | * výpočetně hodně náročné - použití u statických scén, filmu ne u her, kdy je potřeba rychlost vykreslování | ||
+ | * je nereálné sledovat všechny paprsky => **Backtracking** => zpětné sledování => procházíme rekurzivně postupně, jak se paprsek odráží | ||
+ | |||
+ | === Ray casting === | ||
+ | * rastrový obrazový algoritmus řešení viditelnosti | ||
+ | * [[#Ray tracing]] prvního stupně | ||
+ | * vrhání paprsků z místa pozorovatele, pozorují se jen primární paprsky, bez odrazů | ||
+ | * urychlení oproti Ray tracingu (snížíme počet paprsků, urychlíme výpočet průsečíků, používáme svazky paprsků, rozdělíme na více částí) | ||
+ | * **použití:** přímé zobrazování CSG modelů, vizualizace voxel modelů | ||
+ | * **nevýhody:** | ||
+ | * ostré stíny | ||
+ | * bodové zdroje světla | ||
+ | * zrcadla (lesklé plochy) sice odrážejí okolí, ale neodráží světlo do okolí => nejsou sekundárními zdroji světla | ||
+ | |||
+ | === Radiozita === | ||
+ | * vystřelování "radiozity" z plošek, které mají nejvíce energie | ||
+ | * ozářené plošky se stávají sekundárními zdroji světla | ||
+ | * rekurzivní opakování dokud se energie neutlumí | ||
+ | * nejkomplexnější řešení viditelnosti | ||
+ | * trvá nejdéle => je třeba respektovat fyzikální vlastnosti světla | ||
==== Osvětlovací modely ==== | ==== Osvětlovací modely ==== | ||
+ | |||
=== Lambertův osvětlovací model === | === Lambertův osvětlovací model === | ||
* Empirický model | * Empirický model | ||
* Počítá pouze s difuzí | * Počítá pouze s difuzí | ||
* Ideální difuze, půlkulový odraz do všech směrů | * Ideální difuze, půlkulový odraz do všech směrů | ||
- | * Intenzita difuze závisí na úhlu dopadu paprsku na povrch (kosínové pravidlo){{ :temata:12-3d_objekty:lambert.png?350|}} | + | * Intenzita difuze závisí na úhlu dopadu paprsku na povrch (kosínové pravidlo) |
+ | |||
+ | {{:temata:12-3d_objekty:lambert.png?350|}} | ||
=== Phonguv model === | === Phonguv model === | ||
Řádek 195: | Řádek 295: | ||
* Ideální reflexe, odraz je symetrický podle normály | * Ideální reflexe, odraz je symetrický podle normály | ||
* Intenzita reflexe závisí na směru odrazu a směru k pozorovateli | * Intenzita reflexe závisí na směru odrazu a směru k pozorovateli | ||
- | * Ambientní složka světla IA, světelný šum, rozptýlené světelné pozadí{{ :temata:12-3d_objekty:phong.png?350|}} | + | * Ambientní složka světla IA, světelný šum, rozptýlené světelné pozadí |
+ | |||
+ | {{:temata:12-3d_objekty:phong.png?350|}} | ||
=== BRDF === | === BRDF === | ||
Řádek 201: | Řádek 303: | ||
* Realistické zobrazení (Ray-tracing) | * Realistické zobrazení (Ray-tracing) | ||
* Specializace na jednotlivé efekty nebo materiály | * Specializace na jednotlivé efekty nebo materiály | ||
- | * Výpočetnˇe náročnější | + | * Výpočetně náročnější |
==== Stínování ==== | ==== Stínování ==== | ||
Řádek 208: | Řádek 310: | ||
* Pro každý polygon se osvětlovacím modelem vyhodnotí středový pixel | * Pro každý polygon se osvětlovacím modelem vyhodnotí středový pixel | ||
* Celý polygon má pak konstantní barvu | * Celý polygon má pak konstantní barvu | ||
- | * Nezohledňuje se zakřivení povrchu objektů{{ :temata:12-3d_objekty:konstant_shading.png?200|}} | + | * Nezohledňuje se zakřivení povrchu objektů |
+ | |||
+ | {{:temata:12-3d_objekty:konstant_shading.png?200|}} | ||
=== Goraud shading === | === Goraud shading === | ||
* Pro polygony se osvětlovacím modelem vyhodnotí pixely ve vrcholech | * Pro polygony se osvětlovacím modelem vyhodnotí pixely ve vrcholech | ||
* Při rasterizaci polygonu probíhá interpolace barvy | * Při rasterizaci polygonu probíhá interpolace barvy | ||
- | * Zohledňuje se zakřivení povrchu objektů{{ :temata:12-3d_objekty:goraud_shading.png?200|}} | + | * Zohledňuje se zakřivení povrchu objektů |
+ | |||
+ | {{:temata:12-3d_objekty:goraud_shading.png?200|}} | ||
=== Phong shading === | === Phong shading === | ||
Řádek 219: | Řádek 325: | ||
* Osvětlovací model se počítá pro každý pixel | * Osvětlovací model se počítá pro každý pixel | ||
* Zohledňuje se zakřivení povrchu objektů | * Zohledňuje se zakřivení povrchu objektů | ||
- | * Velmi kvalitní výsledky, realistické zobrazení{{ :temata:12-3d_objekty:phong_shading.png?200|}} | + | * Velmi kvalitní výsledky, realistické zobrazení |
- | + | * | |
- | ==== Vizualizační metody ==== | + | {{:temata:12-3d_objekty:phong_shading.png?200|}} |
- | * Objektové - Objekty scény jsou zpracovávány sekvenčně.Nejsou stíny.Není sekundární osvětlení (od objektů navzájem).Nejsou odrazy. | + | |
- | * Obrazové - pixely jsou zpracovávány sekvenčně. Ostré stíny.Není sekundární osvětlení (od objektů navzájem). | + | |
- | * Komplexní - scéna je zpracvávána celá najednou. Měkké stíny. Komplexní řešení.\\ {{:temata:12-3d_objekty:vizualizacnimetody.png?550|}} | + | |
- | + | ||
- | ==== Z-buffer ==== | + | |
- | * Rastrový obrazový algoritmus | + | |
- | * Ukládá informace o hloubce objektu(Z souřadnice nejbližších bodů) | + | |
- | * Rychlý algoritmus, snadná implementace v HW | + | |
- | + | ||
- | ==== Ray tracing ==== | + | |
- | Sledování paprsků - z kamery se vypouštějí paprsky, sleduje se jejich pohyb, zlom a odraz{{:temata:12-3d_objekty:raytracing.png?250|}} | + | |
- | * výpočetně hodně náročné - použití u statických scén, filmu ne u her, kdy je potřeba rychlost vykreslování | + | |
- | * nevýhody:ostré stíny, bodové zdroje světla, zrcadla (lesklé plochy) sice odrážejí okolí, ale neodráží | + | |
- | světlo do okolí, nejsou sekundárními zdroji světla | + | |
- | + | ||
- | ==== Ray casting ==== | + | |
- | * Rastrový obrazový algoritmus řešení viditelnosti | + | |
- | * Ray tracing prvního stupně | + | |
- | * Vrhání paprsků z místa pozorovatele, pozorují se jen primární paprsky, bez odrazů | + | |
- | * Pomalý, kvalitní výsledky | + | |
- | * Použití: přímé zobrazování CSG modelů, vizualizace voxel modelů | + | |
- | + | ||
- | ==== Radiozita ==== | + | |
- | * vystřelování "radiozity" z plošek, které mají nejvíce energie | + | |
- | * ozářené plošky se stávají sekundárními zdroji světla | + | |
- | * rekurzivní opakování dokud se energie neutlumí | + | |
- | * nejkomplexnější řešení viditelnosti | + | |
- | * trvá nejdéle | + | |
- | {{tag>scorpix IZG grafika 3D}} | + | {{tag>scorpix george IZG grafika 3D}} |
<doodle single login|12> | <doodle single login|12> |