Informacje bieżące:
Wyniki kolokwium
Informacje o kolokwium
Kolokwium będzie się składało z 4 zadań tego typu jak na listach
z ćwiczeń i 2 dodatkowych zadań z pozostałego materiału z wykładu,
przykłady tych zadań poniżej:
- Zaproponuj algorytm znajdowania przeciecia prostopadłoscianu
z promieniem czyli półprosta okreslona przez punkt poczatkowy P
i wektor kierunkowy D (mozna zaadaptowac jeden z algorytmów
z wykładu).
- Przedstaw zasady działania, różnice i zastosowania metod
cieniowania wielokątów: stałym kolorem, Gouraud i Phonga.
Punktacja (wersja robocza):
Program wykładu:
Program wykładu 2007/08
Pozycje podstawowe wydane w Polsce:
-
M. Jankowski, Elementy grafiki komputerowej, WNT, Warszawa 1990.
-
J.D. Foley, A. van Dam, S.K. Feiner, J.F. Hughes, Wprowadzenie do grafiki
komputerowej, WNT, Warszawa 1995.
-
J. Zabrodzki (red.), Grafika Komputerowa, metody i narzędzia, WNT 1994.
-
T. Pavlidis, Grafika i przetwarzanie obrazów, WNT, Warszawa 1987.
Inne podstawowe:
-
J.D. Foley, A. van Dam, S.K. Feiner, J.F. Hughes, Computer Graphics - Principles
and Practice, 2nd edition, Addison-Wesley, Reading, Massachusetts
1992. (takze tych samych autorów ``Interactive Computer Graphics'',
``Introduction to Computer Graphics'').
-
P. Shirley, Fundamentals of Computer Graphics, A.K.Peters, Natick
Massachusetts 2002.
-
A. Glassner, Principles of Digital Image Synthesis, Morgan Kaufmann Publ.,
San Francisco 1995.
Pozostałe (dostępne w bibliotece instytutu):
-
A. Watt, 3D Computer Graphics, 2nd edition, Addison-Wesley, 1993.
-
D.F. Rogers, Procedural Elements for Computer Graphics, McGraw
Hill 1985 (przeklad rosyjski, Mir 1989).
-
D. Hearn, P. Baker, Computer Graphics, Prentice-Hall, Englewood Cliffs,
1986.
-
R. Salmon, M. Slater, Computer Graphics: system and concepts, Addison-Wesley,
1987
-
A.S. Glassner, Graphics Gems, Academic Press, Boston 1990.
-
J. Arvo, Graphics Gems II, Academic Press, Boston 1991.
-
D. Kirk, Graphics Gems III, Academic Press, Boston 1992.
-
P.S. Heckbert, Graphics Gems IV, Academic Press, Boston 1994.
Ogólne:
Oprogramowanie:
- XnView -
przeglądarka i konwerter plików graficznych (Win/Linux/...) oraz GFL SDK
czyli biblioteki do czytania/zapisywania wielu formatów plików graficznych.
- GIMP - program do edycji grafiki
rastrowej (licencja GNU)
- Blender - program do
modelowania scen 3D, renderowania i tworzenia animacji (licencja GNU)
- Wings3D - prostszy program
do modelowania scen 3D
OpenGL:
OpenGL Toolkits (otwieranie okna, obsługa klawiatury i myszy...) :
Interface Libraries (biblioteki z przyciskami, suwakami,... ):
Zasoby lokalne:
Iluzje:
Zaliczenie/Punktacja:
Zaliczenie będzie oparte na zrobionych na pracowni zadaniach
oraz aktywności na ćwiczeniach w postaci rozwiązywanych zadań
i kolokwium.
Zadanie 1 (pracownia 8.X.2008):
- Przedstawić przykłady programów z dobrymi czyli ładnymi i funkcjonalnymi
interfejsami graficznymi.
- Uruchomić środowisko ulubionego kompilatora, przejrzeć i skompilować
przykładowe programy sciągając brakujące biblioteki.
Zapoznać się z przenośnymi interfejsami do obsługi okien i zdarzeń dla biblioteki OpenGL:
- Rozbudować wybrany przeklad według uznania
Zadanie 2 (pracownia 15.X.2008):
- Zmodyfikować przykład tcube.c definiując widok perspektywiczny
przy użyciu funkcji gluPerspective() i definicji obserwatora przy
pomocy gluLookAt() (np. patrzymy się z [3,1.5,2] na punkt 0,
usunąć na razie efekt uciekania sześcianu).
- Zmodyfikować przeklad tak aby obserwator poruszał się po okręgu na
płaszczyźnie
y=1.5 o promieniu 2 (parametryzacja okręgu: x=2cos(a), z=2sin(a) gdzie
a jest zmiennym katem).
- Dodać double-buffering celem wyeliminowania migania: glutSwapBuffers()
i GLUT_DOUBLE zamiast GLUT_SINGLE
- Dodać drugi mały sześcian lub kulkę która będzie poruszać się wewnątrz
sześcianu i będzie odbijać się od brzegów zgodnie z zasada kat padania
równy katowi odbicia. Początkowo pozycja w 0 i predkość początkowa
dana jako wektor [x,y,z] zadany jako stała lub wektor losowy. Pozycja jest
modyfikowana przez funkcje idle() tak jak i obserwator.
- Uatrakcyjnić kształt kulki/sześcianu np. dorobić uszy,....
Zadanie 3 (pracownia 22-29.X.2008):
Zaimplementować prosta animacje, która można rozwinąć do prostej gry:
- Scena składa się z brązowego prostokąta na którym mamy narysowany
okrągły tor w ciemniejszym kolorze (np. GL_TRIANGLE_STRIP).
Po bokach toru należy narysowac
pewną liczbę drzew np. jako kule na prostopadłościanach (przeskalowane cube).
-
Na torze stoi samochód narysowany np. z dwoch prostopadłościanów (wire).
Po nacisnięciu spacji samochód zaczyna sie poruszać ze stałym przyspieszeniem.
po okrągłym torze (parametryzacja pozycji podobnie jak w poprzednim zadaniu
(cos/sin)).
- W jednym oknie mamy dwa widoki (użyc w display 2 razy funkcji glViewport)
jeden dla obserwatora statycznego który widzi z góry całą scene i drugi z
pozycji kierowcy samochodu (tak aby widać też kawalek samochodu - wireframe,
widoki obok siebie lub PIP)
- Użyć DOUBLE_BUFFER i DEPTH_BUFFER aby wyeliminować miganie i zapewnić
poprawną widoczność.
- W zależności od inwencji rozwinąc program udoskonalając scene, zmieniając
tor lub robiąc prostą gre np. dodając poślizg na zewnątrz zależnie
od prędkości i mierząc czas 5 okrążeń przy sterowaniu z klawiatury
(gaz/hamulec,...).
Przed ćwiczeniami należy rozwiązać zadania z listy i na cwiczeniach
zadeklarować sie które zadania potrafi się rozwiązać.
Zadanie 4 (pracownia 12-26.XI.2008):
Wyświetlanie mapy wysokości terenu z danych SRTM.
- Dane SRTM SRTM ver.4 z
CGIAR-CSI SRTM 90m
są w formacie geotiff. Każdy plik to wysokości dla kawałka
ziemi 5x5 stopni geograficznych na regularnej kracie 6000x6000.
Wysokości w metrach [-500,9000] inne ujemne wartości oznaczaja
regiony bez danych.
Geotiff mozna skonwertować do prostego formatu PNM. Przykładowy plik
do czytania dla kawałka Polski: 15-20E, 50-55N
tutaj
Przykladowy kod sample wczytuje plik pomijając
nagłówek i odwracając kolejność bajtów na właściwą. Otrzymujemy dane
w tablicy.
- Wyświetlić siatkę czworokątów/trójkątów (lub lepiej przy pomocy
GL_QUAD_STRIP całe paski) z widokiem z góry, rzut perspektywiczny
lub równoległy z możliwościa zbliżania/oddalania i przesuwania
na boki i góra/dół. Należy wyświetlać np. co 16 punkt w tablicy
(6000x6000 to troche za dużo i będzie wolno działać) i dodać
wybór dokladności np. klawisze 1-9.
- Nadać punktom kolory zależne od wysokości np.
if (ht < 0 ) glColor3f(0., 0., 1.); //blue
else if (ht < 500) glColor3f(0., ht/500, 0.); //->green
else if (ht < 1000) glColor3f(ht/500-1, 1., 0.); //->yellow
else if (ht < 1500) glColor3f(1, ht/500-2., 0.); //->red
else glColor3f(1.,1.,1.); //white
Zadanie 6 (pracownia 3-10.XII.2008):
Oświeltenie w OpenGL:
- Przeczytać
Basic OpenGL lighting i więcej w
rozdziale OpenGL Red Book o oświetleniu
- Przetestować oświetlenie modyfikując przykład:
lighting.c przez skorzystanie z funkcji glColorMaterial().
Dla obu wersji glMaterial / glColorMaterial oświetlać obiekty:
glutSolidSphere() i wlasny obiekt zdefiniowany przez glBegin/glEnd
(Uwaga: zdefiniować wektory normalne).
- Zmodyfikować jeden z poprzednich programów(3 lub 4) dodając oświetlenie
w postaci kilku różnych świateł: kierunkowe/punktowe
z mozliwoscia włączania, wyłączania i zmiany pozycji.
- Przetestować jak zmiana położenia obserwatora wpływa na
oświetlenie
- Przetestuj funkcję tłumienia (Attenuation) światła z odległościa jako
odwrotność funkcji liniowej i fizycznie poprawnej kwadratowej.
Zadanie 7 (pracownia 15.XII.2008):
W jak najkrotszym kodzie w C/OpenGL/GLUT zaimplementowac obracajaca sie
wokol wlasnej osi choinke skladajaca sie z cylindrycznego lub stozkowego
pnia i galezi. Z pnia wychodzi 8 galezi z ktorej kazda ma 8 galazek
ktore maja po 8 igiel. Widok powinien byc lekko z gory, a choinka powinna
byc zielona, wymagane jest takze wykorzystanie oswietlenia dla lepszego
wygladu.
Pierwsza wersja powyżej powinna być minimalistyczna tak aby kod był jak
najkrótszy (wykorzystac samopodobieństwo/fraktaloność choinki,
transformacje OpenGL i usunąc niepotrzebne funkcje).
Druga wersja może być dłuższa, należy zadbac o jakość choinki, kolory,
dobór oświetlenia i wykazać się inwencją np. dodać różnokolorowe bombki
ze spekularnymi rozblyskami.
Zadanie 8 (pracownia 7.I.2009,... ):
Zapoznać sie z tutorialami NeHe o teksturowaniu:
Lesson 6 i
Lesson 7.
Napisać program przedstawiający animacje układu słonecznego
złożony z co najmniej
Słońca, Ziemi i Księżyca wraz z teksturowaniem i oświetleniem od Śłońca.
Na Ziemię powinna być nałożona tekstura
Blue Marble,
a na Księżyc tekstura z widocznej strony księżyca (zdjęcie z Ziemi).
Przed ćwiczeniami należy rozwiązać zadania z listy i na cwiczeniach
zadeklarować sie które zadania potrafi się rozwiązać.
Kolokwium 21.I.2009
Pracownia i wyniki kolokwium 28.I.2009
|