Grafika komputerowa

advertisement
ZSNR9 im. Romualda Traugutta w Koszalinie
Temat
Grafika komputerowa
Pracę wykonał
Radosław Terefenko
Kl. II LA
I Grafika komputerowa
Dział informatyki zajmujący się wykorzystaniem komputerów do generowania obrazów oraz
wizualizacją rzeczywistych danych. Grafika komputerowa jest obecnie narzędziem
powszechnie stosowanym w nauce, technice, kulturze oraz rozrywce. Kilka przykładowych
zastosowań:
*kartografia,
*wizualizacja danych pomiarowych (np. w formie wykresów dwu- i
trójwymiarowych),
*wizualizacja symulacji komputerowych,
*diagnostyka medyczna,
*kreślenie i projektowania wspomagane komputerowo,
*przygotowanie publikacji,
*efekty specjalne w filmach,
*gry komputerowe.
ChociaŜ grafika komputerowa koncentruje się głównie na specjalistycznych algorytmach i
strukturach danych, to jednak siłą rzeczy musi czerpać z innych dziedzin wiedzy. Na przykład
aby uzyskać obrazy fotorealistyczne, naleŜy wiedzieć jak w rzeczywistym świecie światło
oddziałuje z przedmiotami. Podobnie, aby symulacja jazdy samochodem była jak
najwierniejsza, naleŜy wiedzieć jak obiekty fizyczne ze sobą oddziaływują. Początki grafiki
komputerowej sięgają lat 50. XX wieku, jednak ze względu na duŜe koszty komputerów i
urządzeń graficznych, aŜ do lat 80. grafika komputerowa była wąską specjalizacją, a na jej
zastosowania praktyczne mogły pozwolić sobie ośrodki badawcze, duŜe firmy oraz instytucje
rządowe. Dopiero gdy w latach osiemdziesiątych rozpowszechniły się komputery osobiste,
grafika komputerowa stała się czymś powszechnym. PoniewaŜ celem grafiki jest generowanie
obrazów, dlatego jednym z głównych kryteriów klasyfikacji jest technika ich tworzenia:
1.
Grafika wektorowa — obraz jest rysowany za pomocą kresek lub łuków.
Niegdyś powstawał tak obraz na ploterach kreślących, ale jeszcze do lat 80.
XX wieku były wykorzystywane monitory CRT, które kreśliły obraz w
analogiczny sposób jak oscyloskopy.
2.
Grafika rastrowa — obraz jest budowany z prostokątnej siatki leŜących
blisko siebie punktów (tzw. pikseli). Głównym parametrem w przypadku
grafiki rastrowej jest wielkość bitmapy, czyli liczba pikseli, podawana na
ogół jako wymiary prostokąta.
Identyczny podział istnieje jeśli weźmie się pod uwagę reprezentację danych w programach
komputerowych:
1. Grafika wektorowa — w tym przypadku nazwa moŜe być nieco myląca,
poniewaŜ obrazy mogą składać się nie tylko z wektorów (odcinków), ale równieŜ z
innych figur geometrycznych. Cechą grafiki wektorowej jest to, Ŝe zapamiętywane
są charakterystyczne dla danych figur dane (parametry), np. dla okręgu będzie to
środek i promień, dla odcinka współrzędne punktów końcowych, a dla krzywych
parametrycznych współrzędne punktów kontrolnych. Program, jeśli musi
narysować obraz na urządzeniu (bądź to rastrowym, bądź wektorowym), na
podstawie posiadanych danych wygeneruje obraz tych figur – bardzo waŜna zaleta
tej reprezentacji to moŜliwość dowolnego powiększania obrazów, bez straty
jakości.
2. Grafika rastrowa — do zapamiętania obrazu rastrowego potrzebna jest
dwuwymiarowa tablica pikseli nazywana powszechnie bitmapą. Nazwa wzięła się
stąd, Ŝe początkowo były rozpowszechnione systemy wyświetlające obrazy
czarno-białe, więc w takim przypadku pojedynczy piksel mógł być opisany przez
jeden bit. Jednak gdy powszechniejsza stała się grafika kolorowa, piksele zaczęły
być opisywane więcej niŜ jednym bitem – wówczas pojawiła się nazwa pixmapy,
która jednak nie przyjęła się (chociaŜ jest stosowana np. w X Window).
Przewagą reprezentacji wektorowej nad rastrową jest to, Ŝe zawsze istnieje dokładna
informacja o tym, z jakich obiektów składa się obraz. W przypadku obrazów bitmapowych
tego rodzaju informacja jest tracona i jedyne czego moŜna bezpośrednio się dowiedzieć, to
kolor piksela. Istnieją jednak metody, które pozwalają wydobyć z obrazów bitmapowych np.
tekst, czy krzywe. W chwili obecnej dominują wyświetlacze rastrowe, więc programy
wykorzystujące grafikę wektorową są zmuszone przedstawiać idealne figury geometryczne w
skończonej rozdzielczości. Kolejnym kryterium, wg którego klasyfikuje się zastosowania
grafiki, jest charakter danych:
1. Grafika dwuwymiarowa (grafika 2D) — wszystkie obiekty są płaskie (w
szczególności kaŜdy obraz rastrowy wpada do tej kategorii).
2. Grafika trójwymiarowa (grafika 3D) — obiekty są umieszczone w przestrzeni
trójwymiarowej i celem programu komputerowego jest przede wszystkim
przedstawienie trójwymiarowego świata na dwuwymiarowym obrazie.
Jeszcze jednym kryterium jest cykl generacji obrazu:
1. Grafika nieinterakcyjna — program wczytuje uprzednio przygotowane dane i na ich
podstawie tworzy wynikowy obraz. Tak działa np. POV-Ray, który wczytuje z pliku
definicję sceny trójwymiarowej i na jej podstawie generuje obraz sceny.
2. Grafika interakcyjna — program na bieŜąco uaktualnia obraz w zaleŜności od
działań uŜytkownika, dzięki temu uŜytkownik moŜe od razu ocenić skutki. Bardzo
waŜne w tym przypadku jest, Ŝe czas odświeŜenia obrazu nie moŜe być zbyt długi.
Dlatego w przypadku grafiki interakcyjnej akceptuje się i stosuje uproszczone metody
rysowania obiektów, aby zminimalizować czas oczekiwania.
3. Grafika czasu rzeczywistego — program musi bardzo szybko (kilkadziesiąt razy na
sekundę) regenerować obraz, aby wszelkie zmiany były natychmiast uwidocznione.
Grafika czasu rzeczywistego ma szczególnie znaczenie w róŜnego rodzaju
symulatorach, jest równieŜ powszechna w grach komputerowych.
II. Grafika wektorowa
Jeden z dwóch podstawowych rodzajów grafiki komputerowej (obok grafiki rastrowej zwanej
czasem "bitmapową"). W grafice wektorowej wszelkie obrazy tworzone są za pomocą figur
geometrycznych. Jest to grafika generowana w całości komputerowo i nie ma ona
bezpośredniego przełoŜenia na obrazowanie obiektów z natury. Wszystko jest tutaj z
rozmysłem tworzone od początku przez operatora komputera. U podstawy grafiki wektorowej
leŜy linia. Linia ta moŜe być tak krótka, Ŝe stanowić będzie tylko punkt, lub moŜe mieć
określoną długość. MoŜe ona być prostym odcinkiem lub zdefiniowaną matematycznie linią
krzywą (krzywe Beziera). Wszelkie linie mogą być łączone, a zamykane nimi obszary (lub
przynajmniej częściowo nimi otoczone) mogą mieć nadawane atrybuty koloru lub maski
(czyli "otworu", przez który widać elementy leŜące pod spodem. Obszary ograniczone liniami
mogą mieć jednolity kolor, posiadać wypełnienie gradientowe, mogą być wypełnione
paternami (czyli mozaiką powtarzających się regularnie wzorów), mogą wreszcie posiadać
częściową przezroczystość. Linie mogą słuŜyć do tworzenia ograniczonych nimi obszarów
(same posiadając zerową grubość będą wtedy niewidoczne, lecz będą elementami
konstrukcyjnymi), lub mogą posiadać własną grubość, tzw. obrys (ang. stroke) i wtedy same
będą stanowić widzialne elementy obrazu. Wreszcie linie mogą słuŜyć do innych celów, jak
np. być liniami odniesienia przy przekształceniach geometrycznych. Grafikę wektorową
nazywa się równieŜ grafiką obiektową, gdyŜ obraz w tej grafice składa się ze stosu elementów
ułoŜonych w odpowiedniej kolejności. Jeszcze inną nazwą g. wektorowej jest grafika
ilustracyjna, gdyŜ ten rodzaj grafiki nadaje się idealnie do tworzenia ilustracji (kopiowanie z
natury zdjęć i innych elementów jest domeną grafiki bitmapowej). Za swoistą odmianę grafiki
wektorowej naleŜy uwaŜać fonty, które obecnie w przytłaczającej większości budowane są
według tych samych zasad co grafika wektorowa. Grafika wektorowa jest grafiką w pełni
skalowalną, co oznacza, iŜ moŜna obrazy wektorowe powiększać oraz zmieniać ich proporcje
bez uszczerbku dla jakości. Dzieje się tak dzięki całkowicie matematycznemu opisowi
elementów graficznych. Zmianie ulegną tylko wstawiane do pliku z gafiką wektorową
obiekty bitmapowe (umieszczanie "wektorów" w bitmapie jest niemoŜliwe).
Najpopularniejsze programy do tworzenia grafiki wektorowej to: CorelDRAW, Adobe
Illustrator, Macromedia Freehand, Xara, Inkscape (patrz SVG) oraz Sodipodi. W odróŜnieniu
od grafiki rastrowej, istnieje bardzo niewiele uniwersalnych (zewnętrznych) formatów plików
przechowujących grafikę wektorową. Praktycznie są to jedynie EPS oraz PDF. Wszelkie inne
formaty zachowywania grafiki wektorowej to formaty wewnętrzne poszczególnych
programów wektorowych. Jednak w ostatnim czasie coraz większą popularność zdobywa
promowany przez W3C, oparty na XML format SVG. Obrazy w grafice wektorowej moŜna
łatwo przetwarzać w obrazy bitmapowe podając jedynie docelową rozdzielczość obrazu. W
drugą stronę - operacja przetworzenia "bitmapy" w "wektor" (wektoryzacja, trasowanie) jest
niezmiernie trudna i dotyczy tylko prostych elementów graficznych, lub tworzenia obrysów
wyraźnych, kontrastowych motywów obrazu bitmapowego.
III. Grafika rastrowa
Obraz grafiki rastrowej jest plikiem reprezentującym pionowo-poziomą siatkę odpowiednio
kolorowanych pikseli na monitorze komputera, drukarce lub innym urządzeniu wyjściowym.
Kolor kaŜdego piksela jest definiowany osobno. Obrazki z głębią kolorów RGB często
składają się z kolorowych pikseli zdefiniowanych przez trzy bajty - jeden bajt na kolor
czerwony, jeden na zielony i jeden na kolor niebieski. Mniej kolorowe obrazki potrzebują
mniej informacji na piksel, np. obrazek w kolorach czarnym i białym wymaga tylko jednego
bitu na kaŜdy piksel. Grafika rastrowa róŜni się od wektorowej tym, Ŝe grafika wektorowa
pokazuje obraz uŜywając obiektów geometycznych takich, jak krzywe, czy poligony. Bitmapę
charakteryzują następujące podstawowe właściwości:
* wysokość i szerokość bitmapy liczona jako liczba pikseli
* liczba bitów na piksel opisująca liczbę moŜliwych do uzyskania kolorów.
Kolorowa grafika rastrowa zwykle zawiera piksele z jednym do ośmiu bitów dla kaŜdego z
kolorów bazowych. Jakość obrazka rastrowego jest określana przez całkowitą liczbę pikseli
(wielkość obrazu) oraz ilości informacji przechowywanych w kaŜdym pikselu (głębia koloru).
Na przykład obrazek zapisujący 24 bity informacji o kolorze (standard dla większości
wyświetlaczy w 2004 roku) moŜe pokazać łagodniejsze cieniowanie od obrazka zapisującego
jedynie 15 bitów informacji na jeden piksel, ale teŜ nie pokaŜe łagodniejszego obrazka od
zapisującego 48 bitów na piksel. Podobnie, obrazek o wymiarach 640 x 480 pikseli
(zawierający ok. 307 tys. pikseli) będzie wyglądał nierówno i chropowato w porównaniu do
obrazka o wymiarach 1280 x 1024 (ponad 1,3 mln pikseli). PoniewaŜ taka ilość danych
zajmuje ogromną powierzchnię, często stosuje się technikę kompresji danych celem
zmniejszenia wielkości zajmowanego miejsca. Niektóre techniki zamieniają (zmniejszają,
usuwają) pewne informacje, aby uzyskać mniejszy plik. Niestety nie są to bezstratne metody
kompresji. Przykładami takich kompresji są kompresje JPEG, GIF, PNG. Wielkość obrazka
rastrowego nie moŜe zostać zmieniona bez utraty jego jakości. Jest to przeciwne grafice
wektorowej, którą łatwo moŜna skalować, dostosowując jej wielkość do urządzenia, na
którym jest wyświetlany obraz. Grafika rastrowa jest bardziej uŜyteczna od wektorowej do
zapisywania zdjęć i realistycznych obrazów, podczas gdy grafika wektorowa jest częściej
uŜywana do obrazów tworzonych z figur geometrycznych oraz prezentacji tekstu (w tym tabel
i wzorów). Aktualnie większość komputerowych monitorów wyświetla od 72 do 130 pikseli
na cal (PPI), podczas gdy drukarki mogą drukować materiały w rozdzielczości 1200 punktów
na cal (DPI) lub wyŜszej. Ustalenie najbardziej właściwej rozdzielczości obrazka dla danej
rozdzielczości drukarki moŜe być bardzo trudne, gdyŜ dokument drukowany moŜe zawierać
większą liczbę detali (moŜe mieć większą rozdzielczość) niŜ ten, który jest wyświetlany na
ekranie monitora. Grafika rastrowa została opantentowana pierwszy raz przez firmę Texas
Instruments w latach 70-tych i jest teraz wszechobecna.
IV. Grafika dwuwymiarowa
Grafika dwuwymiarowa. Termin ten moŜe się odnosić zarówno do działu informatyki
zajmującego się grafiką dwuwymiarową i technikami dotyczącymi jej obróbki, jak i do
samych obrazów cyfrowych mogących składać się z tekstu, grafiki oraz obiektów 2D. Grafika
dwuwymiarowa jest wykorzystywana głównie w tych zastosowaniach, w których pierwotnie
uŜywano tradycyjnych technologii drukowania oraz rysowania - m.in. typografii, kartografii,
kreślarstwie, reklamie, filmie animowanym itp. W tych zastosowaniach dwuwymiarowy
obraz jest nie tylko reprezentacją obiektu ze świata rzeczywistego, ale niezaleŜnym
elementem, któremu nadano konkretne znaczenie. Dwuwymiarowy model jest w tym
wypadku bardziej preferowany, poniewaŜ daje bardziej bezpośrednią kontrolę nad obrazem
niŜ model trójwymiarowy, który lepiej odnosi się do fotografii niŜ do typografii. Grafika
komputerowa 2D rozpoczęła swój rozwój w latach 50. XX wieku od urządzeń grafiki
wektorowej. Z czasem zostały one wyparte przez urządzenia grafiki rastrowej. Język
PostScript oraz system X Window były jednymi z najwaŜniejszych projektów w tej
dziedzinie.
Techniki związane z techniką 2D
Grafika 2D moŜe zawierać w sobie modele geometryczne (nazywane grafiką wektorową),
obrazy cyfrowe (nazywane grafiką rastrową), tekst (zdefiniowany przez styl i rozmiar
czcionki, kolor, pozycję, i orientację), funkcje i równania matematyczne. Składowe te mogą
być modyfikowane i manipulowane przez dwuwymiarowe transformacje geometryczne takie
jak translacja, rotacja, skalowanie. W grafice obiektowej, obraz jest opisywany pośrednio
przez obiekt stosujący metodę autorenderingu - procedurę, która ustala kolory pikseli obrazu
poprzez bezwzględny algorytm. ZłoŜone modele tworzy się z połączenia prostszych
obiektów, tak jak w przypadku programowania obiektowego.
Rysowanie bezpośrednie
Wygodnym sposobem aby stworzyć złoŜony obraz jest rozpoczęcie pracy od pustego obrazu
(canvas) - mapy rastrowej (jest to tablica pikseli - bitmapa lub pixmapa jeśli obraz jest
kolorowy) wypełnionej jakimś jednolitym kolorem tła - następnie "rysowanie", "malowanie"
lub "wklejanie" prostych kolorowych fragmentów obrazu w określonym porządku. W
szczególnych przypadkach obraz moŜe być przedstawiany jako bufor ramki. Niektóre
programy ustawiają kolory pikseli bezpośrednio w pamięci karty graficznej, jednak większość
opiera swe działanie na którejś z bibliotek graficznych 2D. Biblioteki te zazwyczaj
implementują następujące operacje graficzne:
* wklejenie zadanego obrazu w zadanym miejscu na płótnie;
* wypisanie odpowiednią czcionką i pod odpowiednim kątem ciągu znaków w zadanym
miejscu;
* rysowanie prostych figur geometrycznych - np. trójkąta przy zdefiniowanych trzech
wierzchołkach, lub okręgu przy zdefiniowaniu jego środka oraz promienia;
* rysowanie linii prostych, łuków, krzywych za pomocą wirtualnego pióra o zadanej grubości.
Rozszerzone modele barw
Tekst, kształty i linie są renderowane kolorem określonym przez klienta. Wiele bibliotek i
kart dostarcza kolorowych gradientów, które są pomocne przy wyświetlaniu tła z przejściami
tonalnymi między kolorami, efektów cieniowania, itp. (zobacz takŜe cieniowanie Gourauda).
Kolory piksela mogą być takŜe pobrane z tekstury, np. z obrazu cyfrowego. Namalowanie
piksela danym kolorem zazwyczaj zastępuje poprzedni kolor. JednakŜe, wiele systemów
pozwala na malowanie przezroczystymi kolorami, które tylko modyfikują wartość
poprzedniego piksela. Dwa kolory mogą równieŜ być wymieszane w bardziej wyszukany
sposób, np. poprzez wykonanie na nich bitowej operacji XOR. Ta technika, znana jako
odwracanie kolorów (negatyw) jest często uŜywana w interfejsach graficznych (np. w
okienkach) do podświetlania elementów, a takŜe innych zastosowań, gdy potrzebne jest
zaznaczenie części rysunku bądź interfejsu tylko na chwilę - ponowne wykonanie na tych
pikselach operacji XOR przywróci oryginalny jego kolor.
Warstwy
Modele rysowania 2-wymiarowej grafiki komputerowej nie mają moŜliwości tworzenia
kształtów 3-wymiarowych oraz stosowania takich efektów charakteryzujących przestrzeń
trójwymiarową, jak oświetlenie, cienie, odbicia, załamania fal świetlnych itp. JednakŜe
istnieje moŜliwość nałoŜenia na obraz 2D wielu róŜnorodnych warstw, czyli czegoś w rodzaju
kartki lub półprzezroczystej bądź przezroczystej folii ułoŜonych na sobie w odpowiedniej
kolejności. Kolejność ta jest zwykle zdefiniowana przez pojedynczą liczbę - połoŜenie
warstwy lub jej odległość od obserwatora. Grafika zawierająca warstwy jest czasem
nazywana grafiką 2-i-półwymiarową. Taka technika pozwala na wykorzystanie podobnych
moŜliwości, co w przypadku obróbki obrazu na papierze oraz półprzezroczystych foliach.
MoŜliwe jest wycinanie oraz wklejanie elementów na pojedynczych warstwach nie
zmieniając pozostałych warstw. Z tych powodów są one uŜywane w większości edytorów
graficznych. Modele warstwowe pozwalają takŜe na lepszy antyaliasing bardziej złoŜonych
obrazów. Warstwy umoŜliwiają uŜytkownikowi na pozostawianie lub usuwanie
niepotrzebnych informacji podczas przeglądania bądź drukowania róŜnego rodzaju
dokumentów, np. pozwalają na usunięcie dróg bądź torów kolejowych z map, ścieŜek ze
schematów układów elektronicznych, bądź odręcznych notatek w jakimś dokumencie.
Końcowy obraz jest tworzony poprzez "malowanie" bądź "wklejanie" kaŜdej z warstw na
początkowo czysty obraz, zgodnie z kolejnością połoŜenia kaŜdej z warstw. KaŜda warstwa
jest najpierw renderowana jako pojedynczy obraz, a następnie tak wyrenderowany obraz jest
malowany piksel po pikselu na obrazie docelowym. Jeśli część warstwy jest przezroczysta, ta
część nie jest oczywiście malowana. Renderowanie i malowanie moŜe odbywać się
równolegle, tzn. piksel kaŜdej z warstw moŜe być malowany od razu po tym jak zostanie
wyrenderowany. Jeśli warstwa zawiera bardziej złoŜone obiekty geometryczne - takie jak
tekst, krzywe - moŜe być rozbita na prostsze elementy, np. pojedyncze litery w przypadku
tekstu, bądź odcinki linii prostych. Następnie są one malowane jako osobne warstwy, w
odpowiedniej kolejności. To rozwiązanie jednak moŜe doprowadzić do utworzenia
niepoŜądanych efektów w obrazie, gdy dwa elementy będą musiały zostać namalowane na
jednym pikselu.
Sprzęt grafiki 2D
Nowoczesne karty graficzne w przewaŜającej większości wykorzystują technologie rastrowe
dzieląc ekran na siatkę pikseli - jest to prostsza i tańsza technologia od tej wykorzystywanej w
sprzęcie do grafiki wektorowej. Do klasycznych procesorów graficznych 2D z końca lat 70. i
początku lat 80., wykorzystywanych w 8-bitowych konsolach gier wideo i domowych
komputerach, naleŜą:
* ANTIC firmy Atari's (właściwie GPU 2D), TIA, CTIA oraz GTIA
* układy w Technologii MOS firmy Commodore - VIC oraz VIC-II
Oprogramowanie grafiki 2D
Wiele graficznych interfejsów uŜytkownika (GUI), takich jak te zawarte w systemach Mac
OS, Microsoft Windows lub X Window System, są bazowane na grafice dwuwymiarowej.
Oprogramowanie to pozwala uŜytkownikowi za pomocą interfejsu graficznego wejść w
interakcję z komputerem. Zwykle menedŜer okien logiczne oddziela interfejsy
poszczególnych uruchomionych aplikacji, umieszczając je w osobnych oknach oraz
umoŜliwiając uŜytkownikowi w prosty sposób przejście w kaŜdej chwili z jednej aplikacji do
drugiej. Dwuwymiarowy interfejs uŜytkownika jest w pewnym sensie naturalnym
rozwiązaniem, chociaŜby z tego powodu, Ŝe najwaŜniejsze urządzenia wejścia, jak mysz
komputerowa ma swobodę ruchów ograniczoną do dwóch wymiarów. Grafika
dwuwymiarowa jest intensywnie wykorzystywana w róŜnych urządzeniach peryferyjnych
takich jak: drukarki, plotery, itp., a takŜe w większości gier wideo oraz komputerowych
wydanych w XX wieku. Jest teŜ wykorzystywana w prostych grach karcianych i planszowych
- solitaire, szachy, mahjongg, i wiele innych... Edytory grafiki 2D są programami do
tworzenia obrazów, diagramów oraz ilustracji poprzez bezpośrednie manipulowanie (za
pomocą myszy, tabletu lub podobnego urządzenia) prostymi elementami grafiki. Edytory te
zwykle umoŜliwiają edycję zarówno figur geometrycznych jak i obrazów cyfrowych. Obraz
taki jest zwykle reprezentowany jako model warstwowy o strukturze hierarchicznej dla
uproszszczenia procesu edycji. Wynikiem pracy takich programów jest plik graficzny, gdzie
poszczególne warstwy i figury geometryczne są zapisane w ich oryginalnej postaci. Jednym z
pierwszych programów, które moŜna zaliczyć do zaprezentowanej grupy, jest MacDraw,
wydany w roku 1984, razem z linią komputerów Macintosh. Do najnowszych przedstawicieli
tej grupy moŜna z kolei zaliczyć Adobe Illustrator, CorelDraw oraz darmowy edytor xfig. Jest
takŜe wiele edytorów wyspecjalizowanych w specyficznych zastosowaniach, jak diagramy
elektryczne, elektroniczne oraz VLSI, mapy topograficzne, fonty komputerowe, itp.
V. Grafika trójwymiarowa
Nazwa jednej z dziedzin grafiki komputerowej zajmującej się głównie wizualizacją obiektów
trójwymiarowych. Nazwa pochodzi od angielskiego sformułowania Three-Dimensional
Graphics.
GEOMETRIA
Geometria obiektów trójwymiarowych moŜe być reprezentowane na kilka sposobów:
* Siatka wielokątów – obiekt jest budowany z płaskich wielokątów (najczęściej trójkątów
lub czworokątów), które mają wspólne wierzchołki i krawędzie. W ten sposób moŜna tworzyć
proste bryły, albo – jeśli siatka jest dostatecznie gęsta – dobrze przybliŜać skomplikowane
obiekty.
* Voxele (woksele) – obiekt jest budowany z elementarnych sześcianów (trójwymiarowych
pikseli). Tego rodzaju reprezentacja jest rozpowszechniona szczególnie w diagnostyce
medycznej, gdzie uzyskuje się szereg przekrojów (obrazów bitmapowych) ciała pacjenta i na
ich podstawie tworzy trójwymiarowe modele.
* Opis matematyczny – obiekty są określone równaniami. Mogą to być np. kule,
płaszczyzny, oraz szczególnie uŜyteczne i powszechnie stosowane powierzchnie
parametryczne (płaty powierzchni), np. powierzchnie Beziera, Hermite'a czy NURBS.
Dane trójwymiarowe mogą zostać pobrane ze świata rzeczywistego, np. za pomocą
wspomnianych tomografów komputerowych, skanerów trójwymiarowych, ze zdjęć
satelitarnych (topografia terenów) a takŜe ze zdjęć stereoskopowych. W animacji
komputerowej wykorzystywana jest równieŜ technika motion capture, która polega na
nagrywaniu ruchu człowieka – czujniki połoŜenia umieszczane są w kluczowych punktach
ciała: na rękach, nogach, głowie, karku itp. Przeniesienie nagranych w ten sposób ruchów na
sztuczne postacie nadaje ich ruchom naturalność, trudną do uzyskania klasycznymi metodami
animacji. Obiekty trójwymiarowe mogą równieŜ zostać stworzone przez człowieka w
procesie modelowania. DuŜe znaczenie mają teŜ techniki komputerowe, które automatycznie
modelują skomplikowane efekty (takie jak dym, ogień, śnieg, deszcz) i obiekty (chmury,
góry, drzewa).
WIZUALIZACJA
PoniewaŜ obecnie wszystkie urządzenia komputerowe wyświetlają dwuwymiarowe obrazy,
dlatego z grafiką trójwymiarową związana jest bezpośrednio geometria wykreślna. Głównie w
zastosowaniach inŜynierskich (CAD) sceny trójwymiarowe przedstawione są w rzucie
prostokątnym, natomiast w pozostałych w rzucie perspektywicznym. Efekty wizualny rzutu
perspektywicznego (skrót perspektywiczny) jest bardzo podobny do efektów obserwowanych
w fotografii oraz w systemie wzrokowym człowieka. Przez analogię do aparatu
fotograficznego (lub kamery), w grafice trójwymiarowej istnieje pojęcie wirtualnej kamery,
która tworzy „zdjęcie” sceny istniejącej w pamięci komputera. Kamerę wirtualną
charakteryzują następujące parametry: połoŜenie, kierunek w jakim jest skierowana oraz
ogniskowa – mają one swoje odbicie w matematycznym modelu kamery. Obrazy
trójwymiarowe są tworzone głównie w technice rastrowej, wektorowo przedstawia się co
najwyŜej obrysy, szkice itp. Głównym problemem w obu przypadkach jest wyznaczanie
powierzchni widocznych, a więc selekcja tych obiektów (lub ich części), które są widoczne w
danym rzucie. Robi się to np. za pomocą bufora Z, sortowania względem głębokości,
śledzenia promieni. Ponadto przewaŜnie obserwujemy niewielki fragment sceny, a dodatkowo
scena moŜe składać się z wielkiej liczby obiektów (sięgającej nawet setek milionów), dlatego
równie waŜne jest określenie, które obiekty mogą być widoczne, aby przetwarzać tylko te
dane, które naprawdę są potrzebne. Zobacz: usuwanie niewidocznych powierzchni.
REALIZM
Realizm obrazów generowanych przez komputer jest w większości zastosowań bardzo waŜny.
Aby go uzyskać modeluje się oświetlenie: definiuje światła, powierzchniom obiektów
trójwymiarowych nadaje kolor i fakturę, określa cienie rzucane przez obiekty, odbicia
zwierciadlane, załamanie i rozpraszanie światła itd., itp. Metody, które pozwalają na bardzo
dokładne przedstawienie scen trójwymiarowych są równieŜ bardzo kosztowne obliczeniowo
(np. raytracing, radiosity). Z kolei szybkie, przybliŜone metody cieniowania obiektów,
tworzenia cieni, odbić zwierciadlanych są z powodzeniem wykorzystywane w grach
komputerowych. W przypadku animacji waŜne jest takŜe aby ruch obiektów, był moŜliwie
najbardziej zbliŜony do zachowania przedmiotów w świecie rzeczywistym.
VI. Grafika 2,5D
Potoczne określenie systemów generujących grafikę, które próbują wywołać złudzenie
trójwymiarowości, operując dwuwymiarowymi zestawami tzw. sprite'ów.
Sprite
dwuwymiarowy obrazek uŜywany w systemach grafiki dwuwymiarowej i 2.5-wymiarowej,
który po przesunięciu i ewentualnie przeskalowaniu jest przenoszony na ekran. Sprite'y
pozwalają na bardzo łatwe uzyskiwanie na ekranie niezbyt wyszukanych obiektów
animowanych. Wiele układów graficznych 2D jest wyposaŜonych w zdolność do
automatycznego generowania i animacji sprite'ów. Namiastkę trzeciego wymiaru moŜna
uzyskać przez skalowanie sprite'ów oraz ich wyświetlanie w kolejności od dalszych do
bliŜszych (w ten sposób bliŜsze częściowo zakrywają dalsze). W systemach grafiki 3D
zamiast sprite'ów uŜywa się raczej modeli opartych na wielokątach, chociaŜ moŜna je spotkać
jako element efektów specjalnych np. w wyścigach, moŜe to być dym z opon.
VII. Popularne biblioteki graficzne
DIRECTX
DirectX to zestaw funkcji API wspomagających generowanie grafiki (dwu i trójwymiarowej),
dźwięku oraz innych zadań związanych zwykle z grami i innymi aplikacjami
multimedialnymi. Najcześciej wykorzystywane do obsługi grafiki w grach komputerowych.
UŜywane równieŜ do pisania programów do specyficznych zadań z wykorzystaniem grafiki
trójwymiarowej. DirectX jest produktem firmy Microsoft, dostepny tylko na platformę
Windows oraz konsolę Xbox. Obecnie dostępna jest wersja DirectX 9.0. Kolejna wersja,
DirectX 10, ma zostać udostępniona wraz z premierą systemu operacyjnego Microsoft
Windows Vista.
Komponenty DirectX
DirectX składa się z szeregu komponentów odpowiedzialnych za realizację poszczególnych
funkcji aplikacji, a są to:
DirectX Graphics, składające się z dwóch pod-komponentów:
DirectDraw - obsługuje grafikę rastrową (bitmapową),
Direct3D (D3D) - obsługuje grafikę 3D,
DirectInput - przetwarza dane pochodzące z klawiatury, myszy, joysticka lub innych
kontrolerów.
DirectPlay - wykorzystywany w grach sieciowych,
DirectSound - słuŜy do odtwarzania i nagrywania dźwięku,
DirectMusic - odtwarza muzykę stworzoną przy uŜyciu programu DirectMusic Producer,
DirectShow - słuŜy do odtwarzania plików audio i wideo,
DirectSetup - obsługuje instalację poszczególnych komponentów DirectX
DirectX Media Objects - spełnia podobne zadania, jak DirectShow.
GD
GD jest biblioteką graficzną słuŜącą do dynamicznej manipulacji obrazami. Jej głównym
twórcą jest Thomas Boutell. Dzięki niej moŜna tworzyć obrazy w formatach GIF, JPEG, PNG
i BMP. GD obsługuje m.in. takie języki programowania jak C, PHP, Perl, OCaml, Tcl, Pascal
czy REXX.
OPENGL
OpenGL (ang. Open Graphics Library) - specyfikacja uniwersalnego API do generowania
grafiki. Zestaw funkcji składa się z 250 podstawowych wywołań, umoŜliwiających
budowanie skomplikowanych trójwymiarowych scen z podstawowych figur geometrycznych.
OpenGL wykorzystywany jest często przez gry komputerowe, spełnia rolę analogiczną, jak
konkurencyjny Direct3D (część DirectX) w systemie Windows firmy Microsoft. RównieŜ
programy do przedstawiania wyników badań naukowych, CAD, oraz wirtualnej
rzeczywistości uŜywają OpenGL. OpenGL, podobnie jak np. X Window System, działa w
architekturze klient-serwer. Klientem, w tym przypadku, jest aplikacja wykorzystująca
OpenGL, która zleca operacje graficzne do wykonania, a serwerem - aktualnie uŜywana
implementacja OpenGL (np. w sterowniku karty graficznej). Zwykle, klient i serwer znajdują
się na tej samej maszynie, jednak nie jest to konieczne - biblioteka zaprojektowana tak, aby
moŜliwe było np. wyświetlanie grafiki OpenGL na zdalnym terminalu. Jednocześnie, na
skutek zastosowania zunifikowanego protokołu komunikacji, wyświetlanie moŜe odbywać się
na zupełnie innej platformie, niŜ ta, na której działa aplikacja. Jedną z podstawowych cech
OpenGL jest to, Ŝe jest on maszyną stanu. Na stan OpenGL w danym momencie składa się
szereg parametrów i trybów działania, które moŜna ustawić lub zapamiętać na stosie i później
odtworzyć. Ich konfiguracja będzie miała bezpośredni lub pośredni wpływ na otrzymany
rezultat renderingu. Raz ustawiony parametr lub tryb działania pozostaje zachowany aŜ do
następnej zmiany. Przykładami takich parametrów mogą być: kolor rysowania, aktualnie
uŜywana tekstura, sposób działania bufora z, macierz, na której wykonywane są aktualnie
operacje, oraz wiele innych. Część z parametrów moŜe być włączana lub wyłączana w sposób
bardzo oczywisty, tzn. poprzez wywołanie funkcji glEnable() lub glDisable() (w tłumaczeniu
brzmiałoby to: glWłącz() oraz glWyłącz()), a inne ustawiane są poprzez wykonanie
powiązanych z tymi parametrami funkcji (np. glBindTexture() - ustawienie aktywnej
tekstury). Dzięki funkcji glPushAttrib() moŜliwe jest zapamiętanie na stosie części lub całości
aktualnego stanu OpenGL w zaleŜności od przekazanego jej argumentu. Funkcja odwrotna,
czyli glPopAttrib() nie wymaga Ŝadnych argumentów, gdyŜ pobiera ze szczytu stosu taki stan
jaki został wcześniej zapamiętany.
PYTANIA KONTROLNE
1. Wymień kilka zastosowań grafiki komputerowej
2. Co to jest „grafika interakcyjna”??
3. Co to są „warstwy” w grafice 2D??
4. Co to są „voxele”??
5. Omów krótko Sprite-a w grafice
6. Z jakiego szeregu komponentów składa się DirectX??
7. Do czego słuŜy biblioteka GD??
8. Omów grafike wektorową
9. Omów grafike rastrową
10. Czym zajmuje się dział informatyki o nazwie „Grafika komputerowa”??
Download