Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

temata:12-3d_objekty:main [2011/02/04 13:15]
127.0.0.1 upraveno mimo DokuWiki
temata:12-3d_objekty:main [2011/05/26 13:52] (aktuální)
george [Geometrické transformace]
Řádek 1: Řádek 1:
-====== Transformace, reprezentace a zobrazení 3D objektů ====== +~~ODT~~ 
-Geometrické transformace 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. + 
-==== Homogenní souřadnice ==== +====== 12 - Transformace, reprezentace a zobrazení 3D objektů ====== 
- Homogenní souřadnice bodu v 3D s karteziánskymi souřadnicemi [x,y,z] je uspořádána čtveřice [X,Y,Z,w] pro kterou platí x=X/wy=Y/wz=Z/w. Bod je svými homogenními souřadnicemi určen jednoznačně. Souřadnici w nazýváme váhou bodu. Hodnota této váhy je w=1 v případě lineárních transformací.\\ + 
-Jsou zavedeny kvůli jednotné manipulaci se všemi transformačními maticemi, protože v případě karteziánských souřadnic by jsme u posunutí použili sčítání a u ostatních operací zas násobení. Takhle všude použijeme násobení matic, tj. jednotný způsob (ulehčí implementaci). \\ +===== Geometrické transformace ===== 
-Bod, který chceme transformovat, má matici P(x, y, z, w), kde x, y, z jsou jeho souřadnice, w je 1 pokud je to bod, 0 pokud je to vektor.\\ +  * jsou jedny z nejčetnějších operací v současné počítačové grafice 
-Transformační matice je matice 4*4. +  * 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 
-=== Posunutí === +  * **lineární transformace** - jsou popsány lineárními rovnicemi 
-{{ :temata:12-3d_objekty:posun.png|}} +  * **kartézská soustava souřadnic** 
-Pro posun v opačném směru budou koeficienty d záporné +    * 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 
-=== Změna velikosti ===+    - __pravotočivá__ - normální, co používáme 
 +    - __levotočivá__ - osa x a y je přehozená 
 +  * **homogenní souřadnice** 
 +    * homogenní souřadnice bodu v 3D s kartézskými souřadnicemi [x,y,z] je uspořádána čtveřice [X,Y,Z,w] pro kterou platí
 +      - x = X/w 
 +      - y = Y/w 
 +      - z = Z/w. 
 +      - w = váha bodu 
 +        * lineární transformace: w = 1 
 +        * vektory v´ = (x,y,z) reprezentujeme trojicí (x,y,z,0) 
 +    * bod je svými homogenními souřadnicemi určen jednoznačně 
 +    * jsou zavedeny kvůli jednotné manipulaci se všemi transformačními maticemi, protože v případě kartézských souřadnic by jsme u posunutí použili sčítání a u ostatních operací zase násobení => takto všude použijeme násobení matic, tj. jednotný způsob (ulehčí implementaci) 
 +    * bod, který chceme transformovat, má matici P(x, y, z, w), kde x, y, z jsou jeho souřadnice, w je 1 pokud je to bod, 0 pokud je to vektor.\\ 
 +  * **transformační matice ve 3D** 
 +    * matice 4*4 
 +    * tuto obecnou transformační matici získáme násobením dílčích základních transformačních matic 
 +    * násobení matic musí být z pravé strany a v přesném pořadí provádění jednotlivých transformací 
 + 
 +==== Posunutí ==== 
 +{{:temata:12-3d_objekty:posun.png|}} 
 + 
 +  * pro posun v opačném směru budou koeficienty d záporné 
 + 
 +==== Změna velikosti ====
 {{:temata:12-3d_objekty:zmena.png|}} {{:temata:12-3d_objekty:zmena.png|}}
-Pro zmenšení se použije místo S 1/S. + 
-=== Rotace === +  * pro zmenšení se místo S použije 1/S. 
-Střed otáčení v počátku souřadného systému. +==== Rotace ===
-{{:temata:12-3d_objekty:rotace_v_x.png| }}+ 
 +  * střed otáčení v počátku souřadného systému. 
 + 
 +{{:temata:12-3d_objekty:rotace_v_x.png|}}
 {{:temata:12-3d_objekty:rotace_v_y.png|}} {{:temata:12-3d_objekty:rotace_v_y.png|}}
 {{:temata:12-3d_objekty:rotace_v_z.png|}} {{:temata:12-3d_objekty:rotace_v_z.png|}}
-=== Zkosení ===+ 
 +==== Zkosení ===
 {{:temata:12-3d_objekty:zkos_yz.png|}} {{:temata:12-3d_objekty:zkos_yz.png|}}
 {{:temata:12-3d_objekty:zkos_xz.png|}} {{:temata:12-3d_objekty:zkos_xz.png|}}
 {{:temata:12-3d_objekty:zkos_xy.png|}} {{:temata:12-3d_objekty:zkos_xy.png|}}
-==== Reprezentace ==== 
-Požadavky na modely:  
-  * Obecnost (popis co nejrozsáhlejší třídy objektů) 
-  * Úplnost (úpně popisuje daný objekt) 
-  * Jednoznačnost (lze vyhodnotit pouze jedním způsobem) 
-  * Unikátnost, jedinečnost (jednomu tělesu odpovídá jeden model) 
-  * Přesnost (popisu objektu) 
-  * Regulérnost (nemožnost vytvořit nereálnou reprezentaci) 
-  * Konzistence vůči vybraným operacím tělesa stejné třídy 
-  * Kompaktnost (malá paměťová náročnost) 
-  * Možnost efektivního zpracování (Možnost efektivní implementace operací s tělesem.) 
  
-=== Projekce === +==== Kombinace ==== 
-Transformace ze 3D do 2D prostoru +  * vynásobení matic 
-  * **Paralelní** - rovnoběž:zachovává rovnoběžnost hran, velikost průmětu nezávisí na vzdálenosti od průmětny + 
-  * **Perspektivní** - středová:čím blíže středu promítání tím menší objekt +===== Reprezentace 3D objektů ===== 
-Buď na **rovinnou průmětnu**(úsečky se projektují na úsečky, stačí promítat jen vrcholy) vs. na **zakřivenou průmětnu** např.rybí oko (úsečky se projektují na křivky, potřeba projektovat všechny rastrované body) + 
-Paralelní promítnutí do roviny XY (zanedbáme Z):{{:temata:12-3d_objekty:projekceparal.png?250|}} +  * **základní metody** 
-=== Metody Reprezentace === +    [[#Konstruktivní geometrie - CSG]] 
-Objekty mohou být **manifold**(hrana sdílí jen 2 stěnyvyrobitelný) vs**non-manifold**(nevyrobitelný objekt). +    - [[#Šablonování]] (translační, rotační, potahování) 
-  * Konstruktivní geometrie -Constructive Solid Geometryobjekt je popsán stromem z 3D primitiv, transformací a booleovskými operacemi(uzly+    - [[#Dekompoziční modely]] 
-  * š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í) +    - [[#Hraniční reprezentace]] 
-  * dekompoziční modely - rozklad objektu na elementární objemové jednotky(krychle) tzv.**voxel**(pixel ve 3D)Uložení dat – oktalový strom(problematické procházení objememvhodne pro malou hustotu dat), 3D pole diskrétních hodnot(velká náročnost na paměť, vysoká rychlost ístupu) nebo subvoxely(kombinace obojího).Vykreslení algoritmem //Marching cubes// +    - [[#Implicitní plochy]] - potenciální pole elementárních částic 
-  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+  * **požadavky na modely:** 
-     * Drátový model - popis pomocí vrcholů a hran +    * __obecnost__ (popis co nejrozsáhlejší třídy objektů) 
-     Polygonální model - objekt definován pomocí vrcholů, hran, stěn(trojúhelníky=polygony), hw podpora zobrazení +    * __úplnost__ (úplně popisuje daný objekt) 
-     * Okřídlená hrana - (3 lineární senzamy – vrcholů, hran, stěn) +    * __jednoznačnost__ (lze vyhodnotit pouze jedním způsobem) 
-     Hraniční spline model - jako polygonální ale místo polygonů jsou spline plochypro zobrazení se často na polygonální převádíLOD - Level of Detail míra přesnosti podle vzdálenosti, eliminace vrcholů nebo hran +    * __unikátnost, jedinečnost__ (jednomu tělesu odpovídá jeden model) 
-  * 3D Plochy - plocha je definována bázovým polynomem a sítí řídících bodů(matice) +    * __přesnost__ (popisu objektu) 
-     * Bikubické plochy – interpolační, analogie Fergusonových křivek, matice 4×4 řídících bodů, spojitost plátů +    * __regulérnost__ (nemožnost vytvořit nereálnou reprezentaci) 
-     * Beziérové plochy – aproximační, analogie Beziérových křivek, matice 4×4 řídících bodů, spojitost plátů +    * __konzistence vůči vybraným operacím tělesa stejné třídy__ 
-     * NURBS plochy – aproximační, analogie NURBS křivek, matice 4×4 řídících bodů +    * __kompaktnost__ (malá paměťová náročnost) 
-  * Implicitní plochy - Modelování pomocí kostry kolem které je potenciální pole - určuje povrch objektu. +    * __možnost efektivního zpracování__ (možnost efektivní implementace operací s tělesem) 
-==== Zobrazování 3D projektů ==== +  * **typy objektů:** 
-Algoritmy viditelnosti: **vektorové**(výsledkem je soubor viditelných neviditelných hran) vs. **rastrové**(rastrový výsledek-obraz viditelných ploch, stinovani, barva osvetleni) +    - __manifold__ - hrana sdílí jen 2 stěnyvyrobitelný 
-Mezi vektorové patří například Robertsův aloritmus(dělení potencilně viditelných hran na úseky kde se mění viditelnost) +    - __nonmanifold__ - nevyrobitelný objekt 
-Mezi rastrové patří např. Malířův algoritmus(vykreslování nejprve vzdálených objektů, pak bližších +  * **Eulerovy rovnice** 
-=== Vizualizační metody === +    * slouží pro kontrolu topologie objektu => platí pro manifold (hrana spojuje 2 vrcholy, ve vrcholu maximálně 3 hrany, stěny se neprotínají) 
-  * Objektové - Objekty scény jsou zpracovávány sekvenčně.Nejsou stíny.Není sekundární osvětlení (od objektů navzájem).Nejsou odrazy. +  * **regularizované množinové operace** 
-  Obrazové pixely  jsou zpracovávány sekvenčně. Ostré stíny.Není sekundární osvětlení (od objektů navzájem). +    * skládání objektů 
-  Komplexní - scéna je zpracvávána celá najednou. Měkké stíny. Komplexní řešení.\\ {{:temata:12-3d_objekty:vizualizacnimetody.png?550|}}+    * nesmí měnit topologickou dimenzi objektu 
 +    * výsledek je vždy těleso 
 +    * -*, ∪*, ∩* 
 +  * **projekce** 
 +    * 3D objekty zobrazujeme na 2D výstupu 
 +    * projekční paprsek promítá body na průmětnu 
 +    * dochází ke ztrátě informace 
 +    - __perspektivní (středová)__  
 +      *je zvolený __střed projekce__ 
 +      * velikost průmětu nezávisí na vzdálenosti od průmětny 
 +      __užití:__ virtuální realita, architektura, hry 
 +      __kavalírská projekce__ - všechny osy mají stejné měřítko  
 +      __kabinetní projekce__ osa Z je v měřítku 1/2 vůči ostatním osám  
 +    - __paralelní (rovnoběžná)__ 
 +      * zachovává rovnoběžnost hran => paprsky kolmé na průmětnu => střed projekce je v nekonečnu 
 +      * čím blíže středu promítání tím menší objekt 
 +      __užití:__ technická schémata 
 +      __promítání na zakřivenou průmětnu__ - např.rybí oko (úsečky se projektují na křivky, potřeba projektovat všechny rastrované body) 
 +      * __obrázek:__ paralelní promítnutí do roviny XY (zanedbáme Z)\\ {{:temata:12-3d_objekty:projekceparal.png?250|}} 
 + 
 +==== Konstruktivní geometrie - CSG ==== 
 + 
 +{{ :temata:12-3d_objekty:csg.jpeg?150|CSG}} 
 + 
 +  objekt je popsán stromem ze: 
 +    - 3D primitiv (listy stromu) 
 +    - transformací (zvětšeníotočení, atd... 3D primitiv) 
 +    booleovských operací (uzly stromu) 
 +  možnost vzniku singularit (regularizované operace) 
 +  pro každé nové operace probíhá regenerace stromu 
 +  * možnost parametrizace operací ve stromu - parametrické modelování (CAD/CAM
 +  * nejsou informace o povrchu => převod na polygonální model (B-rep) 
 +  * **oktalový strom** 
 +    * rozdělení prostoru CSG modelu oktalovým stromem (octree=> CSG strom rozdělený (tzv. prořezaný) na podstromy 
 +    * urychlení regenerace stromu při lokálních operacích, urychlení zobrazování CSG modelu 
 +  * strojní inženýrství, architektura 
 + 
 +==== Šablonování ==== 
 + 
 +{{ :temata:12-3d_objekty:sanlonovani.jpeg?150|Šablonování}} 
 + 
 +  * pohyb křivky, plochy nebo tělesa po zvolené trajektorii 
 +  * může být součástí CSG operací (primitiva tvořená šablonováním) 
 +  * využívá se invariance spline křivek a ploch vůči lineárním transformacím 
 +  - __pohyb po přímce__ (obrázek) 
 +  - __potahování s proměnlivou profilovou křivkou__ 
 +  - __posun po obecné křivce__ 
 +  - __rotační__ - NURBS křivky 
 + 
 +==== Dekompoziční modely ==== 
 + 
 +{{ :temata:12-3d_objekty:dekompozicni_modely.jpeg?150|Dekompoziční modely}} 
 + 
 +  * diskrétní popis objektu dekompozicí na elementární objemové jednotky (krychle, hranoly**voxely** (Volumetric Pixel) 
 +  * nese informace o hraniční struktuře **x** hraniční modely 
 +  * geologie, medicína, strojírenství 
 +  * **uložení dat:** 
 +    - __3D pole diskrétních hodnot__ - rychlý přístupale paměťově náročné 
 +    - __oktalový strom__ - vhodné pro malou hustotu dat - rekurzivní dělení 
 +    - __subvoxely__ - kombinace dvou edchozích 
 +  * vykreslení pomocí **Marching cubes** 
 +    nalezení a polygonizace __isoplochy__ procházející objemem 
 + 
 +==== Hraniční reprezentace ==== 
 + 
 +{{ :temata:12-3d_objekty:hranicni_reprezentace.jpeg?150|Hraniční reprezentace}} 
 + 
 +  * B-rep (Boundary Representation) 
 +  * objekt popsán prostřednictvím svého povrchu - hranice 
 +  * objekty definovány pomocí vrcholů (body), hran (úsečky, křivky) stěn (polygony, spline křivky
 +  __drátový model__ 
 +    * popis pomocí vrcholů a hran => málo topologických informací => nejednoznačnost 
 +    pro rychlé zobrazení 
 +  __polygonální model__ 
 +    * objekt definován pomocí vrcholů, hran, stěn (trojúhelníky == polygony) 
 +    * jednoznačný popis objektumalá přesnost (lineární aproximace povrchu) 
 +    * hw podpora zobrazení 
 +  - __okřídlená hrana__  
 +    * 3 lineární seznamy - vrcholů, hran, stěn 
 +    definuje sousední vrcholy, hrany ohraničující stěnu, sousední stěny 
 +    * zpracováním lze získat normály ve vrcholech\\ {{:temata:12-3d_objekty:okridlena_hrana.png?200|Okřídlená hrana}} 
 +  - __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 
 + 
 +==== 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 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 === === Z-buffer ===
-  Rastrový obrazový algoritmus + 
-  * Ukládá informace o hloubce objektu(Z souřadnice nejbližších bodů) +{{ :temata:12-3d_objekty:z-buffer.jpeg?150|Z-bufer}} 
-  * Rychlý algoritmus, snadná implementace v HW+ 
 +  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 === === 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|}}+ 
 +{{ :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í   * 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ětlazrcadla (lesklé plochy) sice odrážejí okolí, ale neodráží +  * je nereálné sledovat všechny paprsky => **Backtracking** => zpětné sledování => procházíme rekurzivně postupně, jak se paprsek odráží 
-světlo do okolí, nejsou sekundárními zdroji světla+
 === Ray casting === === Ray casting ===
-  * Rastrový obrazový algoritmus řešení viditelnosti +  * rastrový obrazový algoritmus řešení viditelnosti 
-  * Ray tracing prvního stupně +  * [[#Ray tracing]] prvního stupně 
-  * Vrhání paprsků z místa pozorovatele, pozorují se jen primární paprsky, bez odrazů +  * vrhání paprsků z místa pozorovatele, pozorují se jen primární paprsky, bez odrazů 
-  * Pomalýkvalitní výsledky +  * 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ů+  * **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 === === Radiozita ===
   * vystřelování "radiozity" z plošek, které mají nejvíce energie   * vystřelování "radiozity" z plošek, které mají nejvíce energie
Řádek 83: Řádek 278:
   * rekurzivní opakování dokud se energie neutlumí   * rekurzivní opakování dokud se energie neutlumí
   * nejkomplexnější řešení viditelnosti   * nejkomplexnější řešení viditelnosti
-  * trvá nejdéle+  * trvá nejdéle => je třeba respektovat fyzikální vlastnosti světla 
 + 
 +==== Osvětlovací modely ==== 
 + 
 +=== Lambertův osvětlovací model === 
 +  * Empirický model 
 +  * Počítá pouze s difuzí 
 +  * 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|}} 
 + 
 +=== Phonguv model === 
 +  * Empirický model 
 +  * K difuzi přidává reflexi 
 +  * Ideální reflexe, odraz je symetrický podle normály 
 +  * 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|}} 
 + 
 +=== BRDF === 
 +  * Fyzikálně založený model 
 +  * Realistické zobrazení (Ray-tracing) 
 +  * Specializace na jednotlivé efekty nebo materiály 
 +  * Výpočetně náročnější 
 + 
 +==== Stínování ==== 
 + 
 +=== Flat shading === 
 +  * Pro každý polygon se osvětlovacím modelem vyhodnotí středový pixel 
 +  * Celý polygon má pak konstantní barvu 
 +  * Nezohledňuje se zakřivení povrchu objektů 
 + 
 +{{:temata:12-3d_objekty:konstant_shading.png?200|}} 
 + 
 +=== Goraud shading === 
 +  * Pro polygony se osvětlovacím modelem vyhodnotí pixely ve vrcholech 
 +  * Při rasterizaci polygonu probíhá interpolace barvy  
 +  * Zohledňuje se zakřivení povrchu objektů 
 + 
 +{{:temata:12-3d_objekty:goraud_shading.png?200|}} 
 + 
 +=== Phong shading === 
 +  * Při rasterizaci probíhá interpolace normál z vrcholů 
 +  * Osvětlovací model se počítá pro každý pixel 
 +  * Zohledňuje se zakřivení povrchu objektů 
 +  * Velmi kvalitní výsledky, realistické zobrazení 
 +  *  
 +{{:temata:12-3d_objekty:phong_shading.png?200|}}
  
 +{{tag>scorpix george IZG grafika 3D}}
  
-{{tag>scorpix IZG grafika 3D}}+<doodle single login|12> 
 +^ OK ^ !!! ^ 
 +</doodle>
  
 ~~DISCUSSION~~ ~~DISCUSSION~~
temata/12-3d_objekty/main.1296821704.txt.gz · Poslední úprava: 2011/02/23 22:58 (upraveno mimo DokuWiki)
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki