1 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Počítačová grafika letem světem 2002 Jiří Sochor FI MU Brno sochor@fi.muni.cz http://www.fi.muni.cz/usr/sochor/ 2 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno modelová ní Analýza a syntéza obrazu (obrazová) data modely analýza (obrazu) syntéza (obrazu) (obrazový) výstup 3 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno vizualizované atributy Vizualizace data, funkce, jev modely vizualizační prostředky obraz 4 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Problémové okruhy * co a jak nakreslit * jak to vytvořit * jak se na to podívat * jak to osvětlit * jak modelovat ,,realitu" * jak to rychle vypočítat 5 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Něco o tvrdém vybavení 6 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Displeje první displeje byly vektorové displeje ­ Electronový paprsek sledoval čáry ­ obraz definován sekvencí koncových bodů ­ drátové zobrazení, bez vypňování 7 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Displeje Rastrové displeje ­ elektronový paprsek prochází po pravidelné dráze ­ obraz je 2D pole pixelů ­ rychlé, chyby vzorkování Každý pixel má b bitů pro barvu ­ B&W: 1 bit ­ Základní barvy: 8, 15, 16, 24 bits ­ špičkové: 96 bits 8 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Displeje 9 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Displeje a obrazové paměti rastrový obraz je uložen v paměti jako 2D pole pixelů ­ obrazová paměť barva každého pixelu určuje intenzitu paprsku Video hardware čte obrazovou paměť 60+ Hz ­ změny v obrazové paměti se ukazují na obrazovce => dvojitá paměť ­ přepnutí pamětí po dokončení kresby snímku 10 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Displeje a obrazové paměti Řadič video Obrazová paměť (double buffer) displej Grafický software (rasterizer) 11 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Běžná pracovní stanice videosignál řadič video grafický akcelerátor RAM přídavná zařízeníCPU obrazová paměť Cache grafický subsystém 12 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Nové architektury procesor objektu procesor objektu procesor objektu obrazová paměť 13 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Nové architektury procesor oblasti 1 procesor oblasti 2 procesor oblasti n obrazová paměť 14 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Rastrové algoritmy 15 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Rastrová konverze úseček nalezni pixely nejblíže k ideální přímce předpoklad m 1: vybarvi 1 pixel ve sloupci, zpracuj inkrementálně if m>1 : x y. Bxmy xx yy x y m ii se se += - - = = . 16 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Rastrová konverze úseček xs xe ys ye 17 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Rastrová konverze úseček neefektivní metoda: výpočet round(y) pro každé celé x inkrementální výpočet: pouze celočíselná aritmetika: Bresenhamův algoritmus yi = mxi + B yi+1 = mxi+1 + B = m(xi +1) + B = yi + m 18 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Rastrová konverze úseček předchozí pixel volba pro současný pixel volba pro následující pixel 19 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Výplň ploch obarvení všech pixelů v dané oblasti oblast = ­ všechny pixely určité barvy (pixelově definovaná oblast) ­ všechny pixely v určité vzdálenosti od pixelu ­ všechny pixely uvnitř daného polygonu (oblast definovaná polygonem) 20 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Pixelově definované oblasti S 4-connect 8-connect 21 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Výplň polygonální oblasti řádka 22 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Výplň polygonální oblasti 23 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Souřadné systémy a transformace 24 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Jak něco nakreslit ? plotPixel(289,190) plotPixel(320,128) plotPixel(239,67) plotPixel(194,101) plotPixel(129,83) plotPixel(75,73) plotPixel(74,74) plotPixel(20,10) okno 25 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Proč je to nepraktické ? Souřadnice jsou vyjádřeny v prostoru obrazovky, ale objekty žijí v (3D) ve světovém prostoru Při změně velikosti okna musíme změnit souřadnice kreslených objektů Chceme rozlišit mezi: ­ hodnotami, které popisují geometrické objekty ­ hodnotami potřebnými pro nakreslení těchto objektů na obrazovku 26 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Okno světa & okno pohledu okno okno pohledu okno obrazovky okno světa 27 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Souřadné systémy: 2D & 3D X Y X Y Z Right-handed X Z Y Left-handed 28 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno OpenGL 29 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno 3D proudová architektura SW+HW Modelové transformace triviální test přijetí/odmítnutí osvětlení ořezání (pokud je třeba) perspektivní dělení konverze do prostoru obrazu nastavení interpolátorů interpolace hran interpolace úseků podmíněný zápis podle Z-paměti VRAM obrazová paměť 30 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Co je OpenGL grafický systém? - je to API (application programming interface) - softwarový interface pro grafický hardware - vrstva mezi programátorem a grafickým hardware - je to "Graphics Assembly Language" Požadavky na hardware - musí obsahovat frame buffer, tj. musí být pixelově orientován OpenGL 31 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno - nezávisí na hardware - nemá příkazy pro práci s okny - OpenGL není pixelově přesné shodná posloupnost příkazů může vytvořit trochu rozdílné obrazy na různých platformách můžeme použít různé algoritmy (float, int) opět, je hardwarově nezávislé Rysy 32 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno - vykreslování trojúhelníků, čar, polygonů (3D) - manipulace s rastrovým obrazem (2D) - texturování - osvětlování - stínování - mlha - výpočet viditelnosti - alpha míchání - transformace - akumulační paměť - šablonová paměť (stencil b.) Co dělá GL? 33 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno - úlohy s okny - definice objektů - NURBS (parametrické křivky, plochy) - stíny - odrazy - voxely - reprezentace scény Co GL nedělá? 34 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno - OpenGL je stavový automat - tj., můžeme nastavit stav, nebo se na něj dotázat - nastavení stavu: glEnable(), glDisable(), etc. - zjištění stavu: glGetSomething() Další pohled na OpenGL 35 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno void main(){ OpenWindow(); InitOpenGL(); // nastav GL stav glDisable(GL_LIGHTING); // nastav GL stav glBegin(GL_TRIANGLES); // nastav GL stav glShadeMode(GL_SMOOTH); // nastav GL stav glColor3f(1.0,0.0,0.0);glVertex3f(0.0, 0.0, 0.0); glColor3f(0.0,1.0,0.0);glVertex3f(1.0, 0.0, 0.0); glColor3f(0.0,0.0,1.0);glVertex3f(1.0, 1.0, 0.0); glEnd(); // nastav GL stav Wait4Key();// čekej na vstup z klávesnice CloseWindow();} Jednoduchý program 36 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno - aux.h pomocná knihovna (SGI) - basic window manipulation - simple objects (box, sphere, disc) - obsolete - glu.h OpenGL Utility Library (SGI) - velmi užitečná! - práce s obrazem (měřítko, mip-mapování) - transformace souřadnic - základní objekty - Non Uniform Rational B-Splines (NURBS) - jednoduché (jednodušší) operace gluLookAt(),gluOrtho2D() Knihovny související s OpenGL 37 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno - glut.h OpenGL Utility Toolkit (Mark Kilgard) - velmi užitečná! - manipulace s okny nezávislá na platformě - jednoduché menu - vyhlazování (antialiasing) - stereo zobrazování (pokud je podpořeno hw) - zobecněné válce - vytažené objekty - atd. Knihovny související s OpenGL 38 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno OpenGL a související API 39 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno OpenGL používá několik pamětí - obrazová paměť složená z pixelů (obrazovka) - z-paměť (paměť hloubky)hloubka pixelu - alfa paměť průhlednost pixelu - akumulační paměť pohybové rozmazání, aliasing - indexová paměť barevný mód - paměť šablony popisuje šablonu Některé hodnoty lze nastavit přímo. Některé se nastaví při kreslení. Paměti 40 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno glBegin(GL_TRIANGLE_FAN); glColor3f(1.0,0.0,0.0); glVertex2i(0, 5); glVertex2i(0, 0); glVertex2i(10, 0); glColor3f(0.0,1.0,0.0); glVertex2i(10, 5); glColor3f(0.0,0.0,1.0); glVertex2i(10, 10); glColor3f(0.0,0.0,0.0); glVertex2i(0, 10); glEnd(); Kresba trojúhelníků 41 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Barva 42 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Co je barva? Světlo = elektromagnetické vlny viditelné spektrum ­ 400 nm (fialová) 700 nm (červená) 43 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno žžlutá skvrnalutá skvrna slepá skvrnaslepá skvrna pohledpohled optická osaoptická osa Lidské oko (PCG-Cornell University) 44 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Lidské oko: sítnice světlo prochází krevním řečištěm a vrstvami sítnice před dosažením čípků a tyčinek (PCG-Cornell University) 45 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno CIE diagram barev 46 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Gamut (rozsah) barevného monitoru Ne všechny barvy lze zobrazit na CRT monitoru barevné souřadnice každého luminoforu se u jednotlivých monitorů liší 47 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno RGB nejběžnější v grafice: přímé mapování na CRT aditivní barevný systém 48 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno CMY (cyan-magenta-yellow) subtraktivní barevný systém ­ pro získání výsledné barvy odečítá barvy od bílé ­ (r g b) = (1 1 1) ­ (c m y) v systému CMY v systému RGB 49 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Barevné iluze 50 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Barevné iluze 51 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Modely a modelování 52 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Parametrické křivky a plochy Bezierova křivka a b a b c p(t) = (1-t)a + tb p(t) = (1-t)2a + 2t(1-t)b + t2c 53 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Polygony Objekty ve 3D jsou zhotoveny z polygonů Polygony jsou základním stavebním blokem v grafice ! 54 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Tažené (extrudované) povrchy Hranol Povrchová síť trojúhelníků sestrojena automaticky 55 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Tažené (extrudované) povrchy obecnější: pohyb profilu podél křivky konstrukce polygonu mezi klíčovými polohami 56 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Tažené (extrudované) povrchy 57 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Rotační povrchy definice profilu rotace profilu okolo osy 58 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Rotační povrchy obdoba tažených povrchů (rotační povrch + modifikace) RHINO .... 59 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Konstruktivní geometrie těles - CSG Máme objekty popsané pomocí polygonů Jak zkombinujeme objekty ? Boolské operace: ­ součet, sjednocení ­ průnik ­ rozdíl CSG ­ Constructive Solid Geometry 60 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno CSG jednoduchá primitiva rozdíl rozdíl sjednocení 61 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno CSG řeší se pomocí ořezávání polygonů netriviální řešení okrajových případů A U B A B A B A-B B-A 62 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno CSG 63 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Objemové modelování prostor rozdělen na "voxely" označení každého voxelu: ­ Patří k objektu ? ­ Barva ? 64 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Objemové modelování Aplikace: projekt ,,viditelný člověk" nasnímané řezy mrtvého těla ­ každý řez je polem voxelů ­ celé tělo je popsáno souborem objemových dat 65 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Projekt ,,Viditelný člověk" 66 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Volné tvarování 67 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Volné deformace-Sederberg&Parry ,,volné deformace" - Free Form Deformation - FFD 68 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno FFD - Cracken&Joy 69 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Deformace deCasteljau 70 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Světla a stíny 71 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Klasická zobrazovací metoda 72 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Zpětné sledování paprsku (eye ray-tracing) L E D S S 73 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Zpětné sledování paprsku 74 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Distribuované sledování paprsku 75 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Jednoduchá dvoukroková metoda 76 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Tříkrokova metoda (zahrnutí LS*D cest) 77 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Vizualizace 78 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno ,,průmyslové aplikace" medicína ­ (rentgenová) počítačová tomografie (CAT) ­ nukleární magnetická rezonance (NMR, MRI) ­ pozitronová emisní tomografie (PET) ­ "single photon emission computer tomography" (SPECT) + kombinace různých technologií (např. CAT+NMR) průmyslová defektoskopie ­ sonogramy, rentgenové přístroje, .. 79 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Vizualizace v lékařství 80 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Vědecké aplikace zobrazení naměřených dat ­ geologie, seismologie ­ meteorologie ­ molekulární chemie a biologie zobrazení matematické simulace ­ (dynamická) vektorová pole: průmyslová konstrukce, aerodynamika, meteorologie, .. ­ astronomie a astrofyzika ­ zobrazení implicitně definovaných ploch 81 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Vizualizace v chemii 82 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Model rozptylu světla paprsek R prochází prostorem skalární funkce 3 proměnných x,y,z L t1 t2 t R (x,y,z) )(cosP)t(D)t(I osvětlení hustota odrazová funkce 83 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Antialiasing 84 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Antialiasing Alias vzniká díky diskrétní povaze obrazovky (rastrových zařízení): aliasové jevy mohou být redukovány pomocí ­ zvýšeného rozlišení ­ předfiltrováním ­ postfiltrováním 85 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno původní scéna průběh jasu Antialiasing 86 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Vzorkování vzorkování ve středech pixelů vzorky jasového signálu 87 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Alias - zobrazení zobrazení průběh jasu 88 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Alias ­ zubaté profily originál kresba 89 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Alias ­ ztráta detailu originál kresba 90 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Alias ­ rozpad tvaru pravidelná šachovnice v perspektivě 91 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Filtrování Předfiltrování zjišťuje barevné plochy uvnitř´pixelu 92 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Ukázka ­ bez antialiasing 93 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Ukázka ­ předfiltrování 94 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Ukázka ­ bez antialiasing 95 PB001: Základy počítačové grafiky, 13.12.2007 J.Sochor, FI MU Brno Ukázka ­ předfiltrování