1
Počítačová grafika letem světem © 2002 Jiří Sochor FI MU Brno
[email protected] http://www.fi.muni.cz/usr/sochor/ PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
2
Analýza a syntéza obrazu (obrazová) data analýza (obrazu) modelová ní
modely syntéza (obrazu) (obrazový) výstup
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
3
Vizualizace data, funkce, jev vizualizované atributy
modely vizualizační prostředky obraz
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
4
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
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
5
Něco o tvrdém vybavení PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
6
Displeje první
displeje byly vektorové displeje
– Electronový paprsek sledoval čáry – obraz definován sekvencí koncových bodů – drátové zobrazení, bez vypňování
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
7
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 PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
8
Displeje
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
9
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 PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
10
Displeje a obrazové paměti Obrazová paměť (double buffer)
displej
Řadič video
Grafický software (rasterizer) PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
11
Běžná pracovní stanice CPU
Cache
grafický akcelerátor
obrazová paměť
grafický subsystém
PB001: Základy počítačové grafiky, 13.12.2007
přídavná zařízení
RAM
řadič video
videosignál
© J.Sochor, FI MU Brno
12
Nové architektury
procesor objektu
procesor objektu
procesor objektu
obrazová paměť PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
13
Nové architektury
procesor procesor procesor oblasti 1 oblasti 2 oblasti n
obrazová paměť PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
14
Rastrové algoritmy PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
15
Rastrová konverze úseček nalezni
pixely nejblíže k ideální přímce
Δy y e − y s m= = Δx xe − xs yi = m. xi + B
⏐m⏐ ≤ 1: vybarvi 1 pixel ve sloupci, zpracuj inkrementálně if ⏐m⏐>1 : x ⇔ y. předpoklad
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
16
Rastrová konverze úseček
ye
ys
xs PB001: Základy počítačové grafiky, 13.12.2007
xe © J.Sochor, FI MU Brno
17
Rastrová konverze úseček neefektivní
metoda: výpočet round(y) pro každé celé x inkrementální výpočet: yi = mxi + B yi+1 = mxi+1 + B = m(xi + 1) + B = yi + m pouze
celočíselná aritmetika: Bresenhamův algoritmus
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
18
Rastrová konverze úseček
předchozí pixel PB001: Základy počítačové grafiky, 13.12.2007
volba pro volba pro následující pixel současný pixel © J.Sochor, FI MU Brno
19
Výplň ploch obarvení oblast
všech pixelů v dané oblasti
=
– 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)
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
20
Pixelově definované oblasti
S
4-connect PB001: Základy počítačové grafiky, 13.12.2007
8-connect © J.Sochor, FI MU Brno
21
Výplň polygonální oblasti
řádka
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
22
Výplň polygonální oblasti
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
23
Souřadné systémy a transformace PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
24
Jak něco nakreslit ?
okno
PB001: Základy počítačové grafiky, 13.12.2007
plotPixel(289,190) plotPixel(320,128) plotPixel(239,67) plotPixel(194,101) plotPixel(129,83) plotPixel(75,73) plotPixel(74,74) plotPixel(20,10)
© J.Sochor, FI MU Brno
25
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 PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
26
Okno světa & okno pohledu okno obrazovky
okno
okno světa okno pohledu PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
27
Souřadné systémy: 2D & 3D Y
Z
X
Y
Y
Z
Right-handed
PB001: Základy počítačové grafiky, 13.12.2007
Left-handed
X
X © J.Sochor, FI MU Brno
28
OpenGL
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
29
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
PB001: Základy počítačové grafiky, 13.12.2007
VRAM obrazová paměť
© J.Sochor, FI MU Brno
30
OpenGL 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 PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
31
Rysy - 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é
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
32
Co dělá GL? - 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.) PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
33
Co GL nedělá? - úlohy s okny - definice objektů - NURBS (parametrické křivky, plochy) - stíny - odrazy - voxely - reprezentace scény
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
34
Další pohled na OpenGL - 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() PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
35
Jednoduchý program 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();} PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
36
Knihovny související s OpenGL - 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() PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
37
Knihovny související s OpenGL - 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.
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
38
OpenGL a související API
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
39
Paměti 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í. PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
40
Kresba trojúhelníků 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(); PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
41
Barva
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
42
Co je barva? Světlo
= elektromagnetické vlny viditelné spektrum – 400 nm (fialová) Æ 700 nm (červená)
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
43
Lidské oko (PCG-Cornell University)
pohled optická osa
žlutá skvrna
slepá skvrna
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
44
Lidské oko: sítnice (PCG-Cornell University)
světlo
prochází krevním řečištěm a vrstvami sítnice před dosažením čípků a tyčinek PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
45
CIE diagram barev
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
46
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ší
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
47
RGB nejběžnější
v grafice: přímé mapování na
CRT aditivní barevný systém
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
48
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
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
49
Barevné iluze
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
50
Barevné iluze
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
51
Modely a modelování PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
52
Parametrické křivky a plochy Bezierova
křivka b
b
c
a p(t) = (1-t)a + tb PB001: Základy počítačové grafiky, 13.12.2007
a
p(t) = (1-t)2a + 2t(1-t)b + t2c © J.Sochor, FI MU Brno
53
Polygony Objekty
ve 3D jsou zhotoveny z polygonů
Polygony
jsou základním stavebním blokem v grafice !
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
54
Tažené (extrudované) povrchy Hranol
Povrchová
síť trojúhelníků sestrojena automaticky
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
55
Tažené (extrudované) povrchy obecnější:
pohyb profilu podél křivky
konstrukce polygonu mezi klíčovými polohami PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
56
Tažené (extrudované) povrchy
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
57
Rotační povrchy definice
profilu rotace profilu okolo osy
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
58
Rotační povrchy obdoba
tažených povrchů
RHINO ....
(rotační povrch + modifikace) PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
59
Konstruktivní geometrie těles - CSG CSG – Constructive Solid Geometry Máme Jak
objekty popsané pomocí polygonů
zkombinujeme objekty ?
Boolské
operace:
– součet, sjednocení – průnik – rozdíl PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
60
CSG sjednocení
rozdíl
rozdíl
jednoduchá primitiva PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
61
CSG B
A
AUB
A∩B
A-B
B-A
řeší
se pomocí ořezávání polygonů netriviální řešení okrajových případů PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
62
CSG
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
63
Objemové modelování prostor
rozdělen na “voxely” označení každého voxelu: – Patří k objektu ? – Barva ?
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
64
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
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
65
Projekt „Viditelný člověk“
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
66
Volné tvarování
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
67
Volné deformace-Sederberg&Parry „volné deformace“ - Free Form Deformation - FFD
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
68
FFD - Cracken&Joy
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
69
Deformace deCasteljau
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
70
Světla a stíny
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
71
Klasická zobrazovací metoda
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
72
Zpětné sledování paprsku (eye ray-tracing) D S
L E S PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
73
Zpětné sledování paprsku
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
74
Distribuované sledování paprsku
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
75
Jednoduchá dvoukroková metoda
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
76
Tříkrokova metoda (zahrnutí LS*D cest)
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
77
Vizualizace
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
78
„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, .. PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
79
Vizualizace v lékařství
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
80
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 PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
81
Vizualizace v chemii
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
82
Model rozptylu světla L R t1
I ( t )D( t )P(cos θ )
t (x,y,z)
osvětlení
t2
hustota
odrazová funkce
paprsek R prochází prostorem skalární funkce 3 proměnných x,y,z
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
83
Antialiasing
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
84
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
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
85
Antialiasing původní scéna
průběh jasu
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
86
Vzorkování vzorkování ve středech pixelů
vzorky jasového signálu
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
87
Alias - zobrazení
zobrazení
průběh jasu
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
88
Alias – zubaté profily
originál
PB001: Základy počítačové grafiky, 13.12.2007
kresba
© J.Sochor, FI MU Brno
89
Alias – ztráta detailu
originál
PB001: Základy počítačové grafiky, 13.12.2007
kresba
© J.Sochor, FI MU Brno
90
Alias – rozpad tvaru
pravidelná šachovnice v perspektivě PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
91
Filtrování
Předfiltrování zjišťuje barevné plochy uvnitř´pixelu PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
92
Ukázka – bez antialiasing
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
93
Ukázka – předfiltrování
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
94
Ukázka – bez antialiasing
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno
95
Ukázka – předfiltrování
PB001: Základy počítačové grafiky, 13.12.2007
© J.Sochor, FI MU Brno