Grafika rastrowa Rasteryzacja

advertisement
Grafika komputerowa
Grafika komputerowa
Rasteryzacja (ang. rasterization or scan-conversion)
Zamiana ci!g"ej funkcji 2D na funkcj# dyskretn!
(np. rysowanie okr#gu w rastrze na podstawie równania okr#gu).
Grafika rastrowa
Problem sprowadza si# do wyboru pikseli, którym trzeba nada$ kolor, aby w
efekcie otrzyma$ wymagany kszta"t geometryczny.
Rados!aw Mantiuk
Wydzia! Informatyki
Zachodniopomorski Uniwersytet Technologiczny
Problem rasteryzacji pojawi! si" w momencie upowszechnienia si" monitorów
rastrowych (Jack Bresenham).
Algorytmy grafiki rastrowej s# fundamentem grafiki komputerowej.
Grafika komputerowa
Grafika komputerowa
Rysowanie piksela
Rysowanie linii (1)
Nadanie odpowiedniej komórce pami"ci obrazu okre$lonej warto$ci (koloru).
(0,0)
Zapalanie odpowiednich pikseli pomi"dzy pikselami pocz#tkowym i ko'cowym.
(cols,0)
y
x
Courtesy of MIT (Lecture Notes 6.837)
(0,rows)
(cols,rows)
(xres, yres)
Adres piksela (24 bpp):
addr(x,y) = y * cols * 3 + x * 3
Grafika komputerowa
•  Linia powinna wygl#da% w sposób ci#g!y.
•  Mie% jednakow# grubo$% i jaskrawo$% na ca!ej d!ugo$ci.
•  Zapalane powinne by% piksele jak najbli&ej idealnej linii.
•  Algorytm rysowania musi by$ bardzo szybki.
Grafika komputerowa
Rysowanie linii (2)
Rysowanie linii:
Kod programu
Algorytm rysuje linie od 0 do
45 stopni oraz dla x1 > x0.
Courtesy of MIT (Lecture Notes 6.837)
Algorytm nie daje zadawalaj#cych rezultatów (nie mo&na narysowa% linii pionowych, zaokr#glanie jest
wolne).
Grafika komputerowa
Grafika komputerowa
Rysowanie linii: Algorytm z punktem $rodkowym
Modyfikacja algorytmu Bresenhama.
Rysowanie linii: Równanie parametryczne prostej
Równanie prostej:
Courtesy Andries van Dam.
O wyborze piksela, który b"dzie
zapalony w kolejnym kroku decyduje
po!o&enie punktu $rodkowego M
wzgl"dem obliczonego punktu Q.
Np. je&eli Q jest pomi"dzy M i NE
wybierany jest piksel NE.
Równanie parametryczne:
y = yp + 1/2
Obliczenie F w punkcie !rodkowym okre!la czy idealna linia znajduje si" powy#ej
czy poni#ej punktu !rodkowego.
Grafika komputerowa
Grafika komputerowa
Rysowanie linii: Zmienna decyzyjna
Rysowanie linii: Warto$% poczatkowa zmiennej decyzyjnej
Istotny jest znak zmiennej decyzyjnej d:
Warto$% pocz#tkowa zmiennej decyzyjnej:
Wyeliminowanie u!amka
Grafika komputerowa
Rysowanie linii: Modyfikacja zmiennej decyzyjnej
Grafika komputerowa
Rysowanie linii: Modyfikacja zmiennej decyzyjnej
Inkrementacyjne obliczanie d dla E:
Inkrementacyjne obliczanie d dla NE:
Ró&nica pomi"dzy star# i now# warto$ci# d:
Ró&nica pomi"dzy star# i now# warto$ci# d:
Grafika komputerowa
Grafika komputerowa
Rysowanie okr"gu (1)
Rysowanie okr"gu (2)
Algorytm rysowania okr#gu z punktem %rodkowym.
Pictures courtesy of Andries van Dam.
Pictures courtesy of Andries van Dam.
Grafika komputerowa
Grafika komputerowa
Rysowanie okr"gu (3) - Algorytm z punktem $rodkowym
y
(-x,y)
Rysowanie okr"gu (4) - Algorytm z punktem $rodkowym
(x,y)
(0,R)
E
x=y
(y,-x)
(y,x)
x
SE
(-y,x)
(-y,-x)
(-x,-y)
(x,-y)
Rysowana jest 1/8 okr"gu. Pozosta!e cze$ci uzyskuje si"
poprzez symetryczne powielenie obliczonych pikseli.
Pictures courtesy Andries van Dam.
Grafika komputerowa
Grafika komputerowa
Rysowanie okr"gu (5) - Zmienna decyzyjna
Warto$% funkcji:
E
w punkcie:
Pictures courtesy Andries van Dam.
Czy warto%$ funkcji w punkie %rodkowym jest dodatnia czy ujemna?
Dla ujemnej warto$ci funkcji wybieramy E, poniewa& oznacza to, &e punkt M
jest wewn#trz okr"gu (odleg!o$% punktu M od $rodka okr"gu jest mniejsza od
promienia okr"gu).
Rysowanie okr"gu (6) - inkrementy
Obliczanie inkrementu zmiennej decyzyjnej:
Grafika komputerowa
Grafika komputerowa
Rysowanie okr"gu (7)
Rysowanie linii ze wzorem (ang. pattern lines)
Wzór od P do Q ró&ni si" od wzoru od
Q do P.
Wzory geometryczne.
Wzór na!o&ony w postaci tekstury.
Niepoprawny pod wzgl"dem
geometrycznym.
Pictures courtesy Andries van Dam.
Grafika komputerowa
Grafika komputerowa
Trójk#t
Rasteryzacja trójk#ta - Ang. Edge walking
Kszta!t geometryczny najpowszechniej wykorzystywany w
grafice komputerowej:
•  bardzo prosta reprezentacja (3 wierzcho!ki i 3 brzegi),
•  trójk#t zawsze jest wypuk!y (ang. convex),
•  wierzcho!ki trójk#ta zawsze le&# na jednej p!aszczy(nie,
•  za pomoc# siatki trójk#tów mo&na aproksymowa% dowolny
kszta!t 3D.
Brzegowa (ang. edge walking)
1.  Posortowanie wierzcho!ków w kierunkach x i y, wybranie kierunku wype!niania (np. z
lewej do prawej i z góry na dó!).
2.  Obliczenie pikseli brzegowych dla ka&dej poziomej linii (ang. spans).
3.  Wype!nianie liniami poziomymi od punktu p0 do p2.
•  Bardzo szybki algorytm.
•  Wymaga zaokr#glania warto$ci zmiennoprzecinkowych w
czasie liczenia spans.
Pictures courtesy of MIT (lecture 6.837)
Pictures courtesy of MIT (lecture 6.837)
Grafika komputerowa
Grafika komputerowa
Kopiowanie obszarów rastra (ang. Bit Blitting)
Przezroczysto$% - Ang. Alpha blending
Kopiowanie warto$ci kolorów pikseli pomi"dzy obszarem (ród!owym i docelowym.
Wykorzystanie warto$ci Alpha koloru piksela (RGBA) do uzyskania przezroczysto$ci.
== 0 -> piksel przezroczysty (ang. transparent)
== 1 -> piksel nieprzezroczysty (ang. opaque)
Wa&na jest kolejno$% kopiowania
pikseli (unikamy b!"dów
wynikaj#cych z pokrywania si"
obszarów (ród!owego i
docelowego).
C = " # C piksela + (1$ " ) # Ctla
W bitmapie lub sprit e zapisana informacja RGBA.
W czasie kopiowania mo&na wykorzystywa% funkcje logiczne !#cz#c kopiowany obszar
z t!em w celu uzyskania okre$lonych efektów wizualnych (np. XOR kursora myszy).
Pictures courtesy of MIT (lecture 6.837)
!
Pictures courtesy of MIT (lecture 6.837)
Grafika komputerowa
Grafika komputerowa
Literatura
1. 
2. 
Rasteryzacja trójk#ta - Problemy
Materia!y edukacyjne organizacji ACM SIGGRAPH, http://www.siggraph.org/
education/materials/HyperGraph
Lecture notes on Graphics. Lecture 6.837 , Computer Graphics Group,
Massachusetts Institute of Technology, http://groups.csail.mit.edu/graphics/classes/
6.837/F01/notes.html.
Liczba trójk#tów w modelach jest bardzo du&a. W
rezultacie na jeden piksel obrazu mo&e przypada%
wiele trójk#tów. Rasteryzacja trójk#ta jest w takim
przypadku bardzo nieefektywna.
Dlatego zaczyna si" stosowa% inne techniki
renderingu oparte na punktach (ang. point-cloud
rendering)(http://graphics.stanford.edu/software/qsplat/).
Model zbudowany z 100 mln trójk#tów.
Pictures courtesy of MIT (lecture 6.837)
Grafika komputerowa
Grafika komputerowa
Sprites
Rasteryzacja trójk#ta - Ang. Edge equations
Raster umieszczany w ró&nych miejscach obrazu rastrowego (nazywanego ang.
playground).
•  Mo&liwa jest animacja tego rastra (umieszczanie go w ró&nych miejscach).
•  Srite nie zamazuje pierwotnego obrazu.
Wykorzystuj#ca równania brzegów trójk#ta
1.  Obliczenie równa' brzegów trójk#ta na podstawie po!o&enia jego wierzcho!ków.
2.  Wyznaczenie figury otaczaj#cej (ang. bounding box).
3.  Skanowanie pikseli wewn#trz figury otaczaj#cej.
4.  Zapalanie pikseli, dla kórych wszystkie warto$ci obliczone z równa' brzegów s#
ujemne.
Wykorzystanie przezroczysto$ci.
Animowany sprite
Pictures courtesy of MIT (lecture 6.837)
Pictures courtesy of MIT (lecture 6.837)
Download