Informacje końcowe

W poszczególnych wykładach poznaliśmy podstawowe pojęcia i metody grafiki komputerowej. Wszystkie poznane algorytmy praktycznie są wykorzystywane w różnego rodzaju programach graficznych. Znajomość tych algorytmów pozwala lepiej zrozumieć działanie poszczególnych narzędzi spotykanych w programach graficznych, ich możliwości i ograniczenia. Ponadto stwarza to możliwość samodzielnego pisania oprogramowania graficznego. Mimo ogromnej oferty rynkowej wciąż jest jeszcze wiele do zrobienia, a równocześnie istnieje stałe zapotrzebowanie na nowe oprogramowanie o bogatszych możliwościach funkcjonalnych, bardziej przyjazne dla użytkownika i przystosowane do konkretnych potrzeb użytkownika.

Na rynku dostępnych jest kilkaset różnych programów graficznych, poczynając od darmowych a kończąc na drogich systemach komercyjnych. Możliwości funkcjonalne programów są bardzo zróżnicowane. Wybór konkretnego programu zależy od zastosowania. Przy prostych zastosowaniach z reguły jeden z wielu dostępnych programów w zupełności wystarczy. Przy bardziej zaawansowanych zastosowaniach czasami trzeba korzystać z kilku programów, wykorzystując unikatowe możliwości poszczególnych programów.

Klasyfikacja programów graficznych nie jest prosta z tego względu, że wiele z nich posiada tak różnorodne funkcje, że wiele programów można przypisywać do różnych kategorii. W tym kontekście sensowny wydaje się być podział ze względu na główny obszar zastosowań. W szczególności wyróżnić można (w nawiasach podano przykładowe programy): niskopoziomowe biblioteki graficzne, programy do tworzenia rysunków wektorowych, programy do przetwarzania obrazów, programy do wizualizacji danych, narzędzia do modelowania, narzędzia do renderingu, narzędzia do animacji, narzędzia dla tworzenia grafiki umieszczanej w sieci, konwertery formatów plików graficznych itd.

Ze zrozumiałych względów nie ma sensu omawianie tutaj poszczególnych programów. Omówienie każdego z programów wymaga niezależnego obszernego opracowania, a ponadto warto opisywać program jedynie wtedy gdy ma się możliwość korzystania z niego. Jedyny wyjątek uczynimy w odniesieniu do programów bibliotecznych niskiego poziomu, które udostępniają zestawy poleceń graficznych lub funkcji. Z bibliotek tych można korzystać z poziomu różnych języków programowania (C, Java itd.). Zapewniają one interfejs programowy do sprzętu graficznego.

Najpopularniejszą biblioteką jest OpenGL (Open Graphics Library). Zawiera ona ponad 100 procedur i funkcji, które umożliwiają programiście specyfikowanie obiektów i operacji potrzebnych dla tworzenia obrazów. Zakres dostępnych funkcji rozciąga się od rysowania pojedynczego punktu, odcinka czy wypełnionego wielokąta do teksturowania krzywoliniowych powierzchni NURBS. Dostępne funkcje pozwalają realizować oświetlenie i cieniowanie, animację i różne efekty specjalne. Wiele narzędzi graficznych i aplikacji naukowych zostało opracowanych z wykorzystaniem tej biblioteki. Wiele funkcji biblioteki OpenGl jest implementowanych sprzętowo. Można spotkać się z określeniem, że OpenGl jest "programowym interfejsem sprzętu graficznego".

Drugą pod względem popularności jest biblioteka Direct3D. Jest ona szczególnie popularna w programowaniu gier dla komputerów PC. Jest to biblioteka graficzna niskiego poziomu na platformę Windows. Zbiór funkcji jest porównywalny ze zbiorem funkcji udostępnianych przez bibliotekę OpenGl. Zarówno Direct3D jak i OpenGl są wspierane przez producentów kart graficznych. Direct3D wchodzi w skład DirectX - zbioru API dostępnych jako obiekty COM (DirectDraw, DirectSound, DirectPlay, Direct3D, DirectInput).

Dostępne są również biblioteki graficzne wysokiego poziomu (np. OpenInventor). Umożliwiają one na przykład konstrukcje scen, import i eksport plików 3D, operowanie na obiektach i wyświetlanie. Biblioteki wysokiego poziomu są często określane jako narzędzia do animacji, do symulacji czy sztucznej rzeczywistości.

Podsumowując część wykładową kursu mam nadzieję, że przedstawiony materiał był zrozumiały i jego poznanie pozwoliło zrozumieć o co chodzi w grafice komputerowej ale równocześnie nasunęło refleksję, że wiele rzeczy jest wciąż niejasnych. Taka refleksja jest oczywiście w pełni uzasadniona. Grafika komputerowa jest już obecnie bardzo rozległą dziedziną wiedzy i nie sposób jest przedstawić wszystkie problemy w ramach jednego kursu. Równocześnie jest to dziedzina wciąż rozwijająca się - stale pojawiają się nowe metody, umożliwiające tworzenie obrazów o coraz lepszej jakości i coraz szybciej. Wciąż też pojawiają się nowe obszary zastosowań, które wymagają opracowywania następnych rozwiązań.

Sądzę również, że dołączone do poszczególnych wykładów pytania i problemy do samodzielnego rozwiązania pozwoliły każdorazowo zweryfikować czy dany wykład został dobrze zrozumiany. Wszystkie pytania i problemy zostały tak dobrane, żeby można było znaleźć odpowiedzi na nie albo bezpośrednio w wykładzie albo żeby można było na podstawie znajomości wykładów dojść samodzielnie do poprawnego rozwiązania. Gdyby jednak pojawiły się trudności ze znalezieniem poprawnych odpowiedzi, bądź gdyby pewne fragmenty wykładów były mimo wszystko niezrozumiałe, to proszę o kontakt za pomocą poczty elektronicznej (jza@ii.pw.edu.pl). Będę również zobowiązany za zwrócenie uwagi na ewentualne zauważone usterki oraz za wszelkie sugestie, które pozwolą ulepszyć kurs.

Z pewnością przedstawiony w wykładach materiał teoretyczny przyda się również w czasie zajęć laboratoryjnych w ramach których poznamy praktycznie wiele narzędzi stosowanych w różnych programach graficznych, w tym z pewnością sporo nowych narzędzi, o których w trakcie wykładu nie było mowy.

Ponieważ, jak to już było sygnalizowane na początku kursu, czeka nas egzamin z materiału wykładowego, niżej podany jest fragment jednego z wcześniej przeprowadzanych egzaminów.

Przykładowe tematy egzaminacyjne

W każdym z tematów od 1 do 10 podane są trzy stwierdzenia. Niektóre z tych stwierdzeń są poprawne, inne nie. Proszę w odpowiednich polach wpisać TAK gdy stwierdzenie jest poprawne albo NIE gdy stwierdzenie jest niepoprawne. Za każdy z tematów 1-10 uzyskuje się 3 punkty, jeżeli związane z tematem trzy odpowiedzi zostały zaznaczone poprawnie. Za każdy z tematów 11 i 12 można uzyskać po 3 punkty. Za temat 13 można uzyskać do 4 punktów. Minimum dla uzyskania oceny pozytywnej wynosi 21 punktów.

1. Podstawowe algorytmy techniki rastrowej

 

a. Dwa przecinające się odcinki mogą mieć więcej niż jeden piksel wspólny

 

b. Odcinek o współrzędnych końców (2,1), (5,6) narysowany przy wykorzystaniu algorytmu Bresenhama składa się z 6 pikseli

 

c. Aliasing jest skutkiem skończonej rozdzielczości rastra

 

2. Barwa w grafice komputerowej

 

a. W modelu RGB, przy reprezentacji barwy za pomocą 24 bitów, barwa czarna ma współrzędne (255, 255, 255)

 

b. W systemie full color (pełnokolorowym) każda składowa barwy jest reprezentowana za pomocą 10 bitów

 

c. W modelu CIE XYZ barwy nasycone znajdują się na obwiedni wykresu chromatyczności we współrzędnych xy

 

3. Podstawowe przekształcenia geometryczne

 

a. Kwadrat o współrzędnych wierzchołków (0, 0), (1, 0), (1, 1), (0, 1) został poddany operacji skalowania ze współczynnikami Sx = 2, Sy = 3 i przesunięty o wektor (3, 2). Współrzędne jednego z wierzchołków otrzymanej figury to (2, 5)

 

b. Punkt o współrzędnych jednorodnych (5, 4, 3,1) w układzie współrzędnych xyz ma współrzędne (5, 4, 3)

 

c. W przekształceniu typu obrót, punkt wokół którego następuje obrót musi pokrywać się z początkiem układu współrzędnych

 

.....................

11. Wymienić trzy właściwości krzywych Béziera

a.

b.

c.

12. Wyjaśnić różnicę między cieniowaniem płaskim a cieniowaniem Gouraud

13. Naszkicować sześcian oświetlony odległym źródłem światła (promienie padają równolegle)