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 15:23] 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 139: | Řádek 141: | ||
* nalezení a polygonizace __isoplochy__ procházející objemem | * nalezení a polygonizace __isoplochy__ procházející objemem | ||
+ | ==== Hraniční reprezentace ==== | ||
- | === Metody Reprezentace === | + | {{ :temata:12-3d_objekty:hranicni_reprezentace.jpeg?150|Hraniční reprezentace}} |
- | Objekty mohou být **manifold**(hrana sdílí jen 2 stěny, vyrobitelný) vs. **non-manifold**(nevyrobitelný objekt). | + | |
- | * Konstruktivní geometrie -Constructive Solid Geometry- objekt je popsán stromem z 3D primitiv, transformací a booleovskými operacemi(uzly) | + | * B-rep (Boundary Representation) |
- | * šablonování - pohyb(posun, rotace) křivky, plochy nebo tělesa po zvolené trajektorii.může být s proměnlivou profilovou křivkou(potahování) | + | * objekt popsán prostřednictvím svého povrchu - hranice |
- | * dekompoziční modely - rozklad objektu na elementární objemové jednotky(krychle) tzv.**voxel**(pixel ve 3D)Uložení dat – oktalový strom(problematické procházení objemem, vhodne pro malou hustotu dat), 3D pole diskrétních hodnot(velká náročnost na paměť, vysoká rychlost přístupu) nebo subvoxely(kombinace obojího).Vykreslení algoritmem //Marching cubes// | + | * objekty definovány pomocí vrcholů (body), hran (úsečky, křivky) a stěn (polygony, spline křivky) |
- | * hraniční reprezentace B-Rep - objekt popsán pomocí svého povrchu, info o vnitřní struktuře není uložena, objekty definovány pomocí vrcholů(body), hran(úsečky, křivky), stěn(polygony, spline plochy) | + | - __drátový model__ |
- | * Drátový model - popis pomocí vrcholů a hran | + | * popis pomocí vrcholů a hran => málo topologických informací => nejednoznačnost |
- | * Polygonální model - objekt definován pomocí vrcholů, hran, stěn(trojúhelníky=polygony), hw podpora zobrazení | + | * pro rychlé zobrazení |
- | * Okřídlená hrana - (3 lineární senzamy – vrcholů, hran, stěn){{ :temata:12-3d_objekty:okridlena_hrana.png?200|}} | + | - __polygonální model__ |
- | * Hraniční spline model - jako polygonální ale místo polygonů jsou spline plochy, pro zobrazení se často na polygonální převádí, LOD - Level of Detail míra přesnosti podle vzdálenosti, eliminace vrcholů nebo hran | + | * objekt definován pomocí vrcholů, hran, stěn (trojúhelníky == polygony) |
- | * 3D Plochy - plocha je definována bázovým polynomem a sítí řídících bodů(matice) | + | * jednoznačný popis objektu, malá přesnost (lineární aproximace povrchu) |
- | * Bikubické plochy – interpolační, analogie Fergusonových křivek, matice 4×4 řídících bodů, spojitost plátů | + | * hw podpora zobrazení |
- | * Beziérové plochy – aproximační, analogie Beziérových křivek, matice 4×4 řídících bodů, spojitost plátů | + | - __okřídlená hrana__ |
- | * NURBS plochy – aproximační, analogie NURBS křivek, matice 4×4 řídících bodů | + | * 3 lineární seznamy - vrcholů, hran, stěn |
- | * Implicitní plochy - Modelování pomocí kostry kolem které je potenciální pole - určuje povrch objektu. | + | * definuje sousední vrcholy, hrany ohraničující stěnu, sousední stěny |
- | ==== Zobrazování 3D projektů ==== | + | * zpracováním lze získat normály ve vrcholech\\ {{:temata:12-3d_objekty:okridlena_hrana.png?200|Okřídlená hrana}} |
- | 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) | + | - __hraniční spline model__ |
- | Mezi vektorové patří například Robertsův aloritmus(dělení potencilně viditelných hran na úseky kde se mění viditelnost) | + | * jako polygonální ale místo polygonů jsou spline plochy |
- | Mezi rastrové patří např. Malířův algoritmus(vykreslování nejprve vzdálených objektů, pak bližších | + | * pro zobrazení se často na polygonální převádí |
- | ===Osvětlovací modely === | + | * LOD - Level of Detail míra přesnosti podle vzdálenosti, eliminace vrcholů nebo hran |
- | == Lambertův osvětlovací model == | + | |
+ | ==== 3D plochy ==== | ||
+ | |||
+ | {{ :temata:12-3d_objekty:3d_plochy.jpeg?150|3D plochy}} | ||
+ | |||
+ | * 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ů | ||
+ | - __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ů | ||
+ | |||
+ | ==== Implicitní plochy ==== | ||
+ | |||
+ | {{ :temata:12-3d_objekty:implicitni_plochy.jpeg?150|Implicitní plochy}} | ||
+ | |||
+ | * modelování pomocí kostry kolem které je potenciální pole - určuje povrch objektu | ||
+ | * povrch objektu je v místě, kde je intenzita pole rovna nule | ||
+ | |||
+ | ===== Zobrazování 3D projektů ===== | ||
+ | |||
+ | * drátový model - těžko se určuje viditelnost => nevíme, jak jsou myšleny stěny | ||
+ | * 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 ==== | ||
+ | |||
+ | === 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) |
- | == Phonguv model == | + | |
+ | {{:temata:12-3d_objekty:lambert.png?350|}} | ||
+ | |||
+ | === Phonguv model === | ||
* Empirický model | * Empirický model | ||
* K difuzi přidává reflexi | * K difuzi přidává reflexi | ||
* 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í |
- | == BRDF == | + | |
+ | {{:temata:12-3d_objekty:phong.png?350|}} | ||
+ | |||
+ | === BRDF === | ||
* Fyzikálně založený model | * Fyzikálně založený model | ||
* 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í === | + | |
- | == Flat shading == | + | ==== Stínování ==== |
+ | |||
+ | === Flat shading === | ||
* 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ů |
- | == Goraud shading== | + | |
+ | {{:temata:12-3d_objekty:konstant_shading.png?200|}} | ||
+ | |||
+ | === 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ů |
- | == Phong shading == | + | |
+ | {{:temata:12-3d_objekty:goraud_shading.png?200|}} | ||
+ | |||
+ | === Phong shading === | ||
* Při rasterizaci probíhá interpolace normál z vrcholů | * Při rasterizaci probíhá interpolace normál z vrcholů | ||
* 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 === | + | * |
- | * Objektové - Objekty scény jsou zpracovávány sekvenčně.Nejsou stíny.Není sekundární osvětlení (od objektů navzájem).Nejsou odrazy. | + | {{:temata:12-3d_objekty:phong_shading.png?200|}} |
- | * 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> |