Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Wstęp do grafiki komputerowej
Tok studiów:
2014/2015
Kod:
IIN-1-604-s
Wydział:
Informatyki, Elektroniki i Telekomunikacji
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Informatyka
Semestr:
6
Profil kształcenia:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Forma i tryb studiów:
Stacjonarne
Strona www:
 
Osoba odpowiedzialna:
Alda Witold (alda@agh.edu.pl)
Osoby prowadzące:
Alda Witold (alda@agh.edu.pl)
Topa Paweł (topa@agh.edu.pl)
Krótka charakterystyka modułu

Opis efektów kształcenia dla modułu zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Powiązania z EKK Sposób weryfikacji efektów kształcenia (forma zaliczeń)
Wiedza
M_W001 Zna i rozumie podstawowe pojęcia grafiki komputerowej, rastrowej i wektorowej IN1A_W04 Kolokwium
M_W002 Dysponuje wiedzą na temat struktury i możliwości biblioteki OpenGL IN1A_W05 Kolokwium
M_W003 Zna i rozumie transformacje geometryczne 3D, modele oświetlenia oraz operacje na teksturach. IN1A_W04 Kolokwium
M_W004 Zna i rozumie zaawansowane modele renderowania w czasie rzeczywistym. IN1A_W04 Kolokwium
Umiejętności
M_U001 Potrafi przygotować program graficzny z ruchomym obserwatorem i poruszającymi się niezależnie lub hierarchicznie obiektami. IN1A_U12, IN1A_U13, IN1A_U11 Zaliczenie laboratorium
M_U002 Potrafi zrealizować w programie model oświetlenia OpenGL. IN1A_U12 Zaliczenie laboratorium
M_U003 Potrafi zrealizować różne sposoby mapowania tekstur. IN1A_U12 Zaliczenie laboratorium
M_U004 Potrafi zbudować interaktywny program obsługujący zdarzenia zewnętrzne od różnych urządzeń IN1A_U13 Zaliczenie laboratorium
Kompetencje społeczne
M_K001 Orientuje się w charakterystyce dostępnych bibliotek graficznych i potrafi efektywnie z nich korzystać IN1A_K04 Egzamin
Matryca efektów kształcenia w odniesieniu do form zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Forma zajęć
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Inne
E-learning
Wiedza
M_W001 Zna i rozumie podstawowe pojęcia grafiki komputerowej, rastrowej i wektorowej + - - - - - - - - - -
M_W002 Dysponuje wiedzą na temat struktury i możliwości biblioteki OpenGL + - - - - - - - - - -
M_W003 Zna i rozumie transformacje geometryczne 3D, modele oświetlenia oraz operacje na teksturach. + - - - - - - - - - -
M_W004 Zna i rozumie zaawansowane modele renderowania w czasie rzeczywistym. + - - - - - - - - - -
Umiejętności
M_U001 Potrafi przygotować program graficzny z ruchomym obserwatorem i poruszającymi się niezależnie lub hierarchicznie obiektami. - - + - - - - - - - -
M_U002 Potrafi zrealizować w programie model oświetlenia OpenGL. - - + - - - - - - - -
M_U003 Potrafi zrealizować różne sposoby mapowania tekstur. - - + - - - - - - - -
M_U004 Potrafi zbudować interaktywny program obsługujący zdarzenia zewnętrzne od różnych urządzeń - - + - - - - - - - -
Kompetencje społeczne
M_K001 Orientuje się w charakterystyce dostępnych bibliotek graficznych i potrafi efektywnie z nich korzystać + - - - - - - - - - -
Treść modułu zajęć (program wykładów i pozostałych zajęć)
Wykład:
  1. Wprowadzenie do grafiki komputerowej. Podstawowe pojęcia (2 godz.)

    Klasyfikacja grafiki komputerowej. Scharakteryzowanie grafiki rastrowej i wektorowej, grafiki 2D i 3D. Analiza podstawowej postaci potoku graficznego nieprogramowanego i programowanego. Krótka charakterystyka sprzętu komputerowego. Przegląd zastosowania grafiki komputerowej w różnych dyscyplinach nauki i techniki.

  2. Wprowadzenie do OpenGL (2 godz.)

    Charakterystyka i historia biblioteki OpenGL. Ewolucja biblioteki i podstawowe różnice w dostępnych wersjach. Omówienie konstrukcji biblioteki, podstawowych funkcji, stałych i zmiennych systemowych. Przedstawienie pomocniczych bibliotek: freeglut – do obsługi interfejsu graficznego i obsługi zdarzeń, Glew – do sprawdzania możliwości sprzętu graficznego. Reprezentacja obiektów geometrycznych za pomocą siatki wielokątów. Struktura typowego programu w OpenGL.

  3. Architektura i programowanie procesorów graficznych (2 godz.)

    Przedstawienie logicznej struktury procesorów graficznych, na wybranym przyjkładzie. Omówienie współpracy CPU i GPU. Przedstawienie podstaw języka shakerów GLSL i zasad włączania go do programu OpenGL.

  4. Dwa style programowania w OpenGL (2 godz.).

    Scharakteryzowanie różnic pomiędzy tradycyjnym podejściem do programowania w trybie Compatible Mode i nowszym, w trybie Core Mode. Omówienie buforów VBO i VAO. Porównanie zalet i wad obu podejść oraz Zilustrowanie ich na przykładach.

  5. Transformacje geometryczne (2 godz.).

    Transformacje 3D. Omówienie przekształceń afinicznych. Reprezentacja przekształceń przez macierz transformacji. Używanie funkcji transformacji i bezpośrednie operowanie na macierzach. Składanie transformacji. Interpretacja transformacji w lokalnym i globalnym układzie współrzędnych. Ruch obiektów, a ruch kamery. Rzutowanie: rodzaje, parametry i macierze rzutowania.

  6. Stos transformacji i tworzenie obiektów hierarchicznych (2 godz.).

    Omówienie zmiany układu współrzędnych poprzez odkładanie stanu transformacji na stos. Budowanie układów obiektów o wielu stopniach swobody. Szczegółowe omówienie przykładów typu ‘układ planetarny’ i ‘kroczący robot’.

  7. Postrzeganie barwne. Modele oświetlenia (2 godz.).

    Krótkie omówienie teorii barwy i podstawowych modeli barwnych. Ogólne dywagacje na temat złożoności i efektywności modelu oświetlenia. Omówienie podstawowego modelu lokalnego ADS. Wprowadzenie normalnych do obliczania oświetlenia. Omówienie modeli Phonga, Blinna i interpolacji oświetlenia według Gourauda.

  8. Operacje rastrowe (2 godz.)

    Omówienie operacji rastrowych w OpenGL. Kopiowanie bloków danych. Realizacja obiektów typu sprite. Omówienie działania z-bufora i wykorzystania jego możliwości.

  9. Mapowanie tekstur. Podstawy (2 godz.)

    Podstawowe pojęcia dotyczące tekstur i ich parametrów. Wczytywanie tekstury z pliku. Tworzenie listy tekstur, mapowanie tekstur na obiekty geometryczne.

  10. Zaawansowane mapowanie tekstur (2 godz.)

    Multiteksturowanie, łączenie tekstur z oświetleniem, mieszanie oświetlenia, omówienie techniki mipmappingu. Użycie tekstur do mapowania obrazu otoczenia (sphere mapping, cube mapping). Wprowadzenie do tekstur 3D.

  11. Mapowanie cieni (2 godz.)

    Omówienie podstawowych algorytmów tworzenia cienia. Proste mapowanie na płaszczyznę. Użycie cieni objętościowych. Użycie map cieni.

  12. Modelowanie powierzchni krzywoliniowych (2 godz.)

    Modelowanie za pomocą krzywych i powierzchni parametrycznych: Beziera i NURBS.

  13. Zaawansowane modele oświetlenia (2 godz.)

    Metoda śledzenia promieni. Oświetlenie globalne. Odbicia i załamania promien. Optymalizacja metody śledzenia promieni. Śledzenie promieni metodą Monte Carlo. Mapowanie fotonów.

  14. Budowa i renderowanie złożonych scen (2 godz.)

    Optymalizacja renderowania złożonych scen. Algorytmy zasłaniania. Omówienie metod sort first i sort last.

  15. Graficzne modelowanie zjawisk i procesów naturalnych. Perspektywy grafiki komputerowej (2 godz.)

    Wykład końcowy. Omówienie podstaw modelowania zjawisk i procesów naturalnych dla potrzeb grafiki komputerowej. Porównanie modeli fizycznych i niefizycznych. Przedstawienie perspektyw dla grafiki komputerowej.

Ćwiczenia laboratoryjne:
Ćwiczenia praktyczne w laboratorium graficznym

  1. Zbudowanie i wizualizowanie prostej sceny 3D zbudowanej z gotowych obiektów (2 godz.).
  2. Manipulowanie transformacjami geometrycznymi. Przelot nad sceną (2 godz.).
  3. Stos transformacji. Budowa obiektu hierarchicznego (2 godz.).
  4. Modelowanie oświetlenia (2 godz.).
  5. Nakładanie tekstur (2 godz.).
  6. Nakładanie tekstur typu Sphere mapping i Skybox oraz efekty specjalne (2 godz.).
  7. Połączenie poznanych elementów w jeden program (2 godz.).
  8. Prezentacja końcowego programu (1 godz.).

Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 75 godz
Punkty ECTS za moduł 3 ECTS
Udział w wykładach 14 godz
Samodzielne studiowanie tematyki zajęć 32 godz
Udział w ćwiczeniach laboratoryjnych 14 godz
Przygotowanie sprawozdania, pracy pisemnej, prezentacji, itp. 15 godz
Pozostałe informacje
Sposób obliczania oceny końcowej:

1. Aby uzyskać pozytywną ocenę końcową niezbędne jest uzyskanie pozytywnej oceny z laboratorium oraz kolokwium zaliczeniowego z wykładu.
2. Obliczamy średnią ważoną z ocen z laboratorium (75%) i wykładów (25%) uzyskanych we wszystkich terminach.
3. Wyznaczmy ocenę końcową na podstawie zależności:
if sr>4.75 then OK:=5.0 else
if sr>4.25 then OK:=4.5 else
if sr>3.75 then OK:=4.0 else
if sr>3.25 then OK:=3.5 else OK:=3
4. Jeżeli pozytywną ocenę z laboratorium i zaliczenia wykładu uzyskano w pierwszym terminie oraz ocena końcowa jest mniejsza niż 5.0 to ocena końcowa jest podnoszona o 0.5

Wymagania wstępne i dodatkowe:

Znajomość matematyki (elementarna algebra macierzy), podstawowa znajomość programowania w C/C++

Zalecana literatura i pomoce naukowe:

1. Foley, van Dam, Hughues, Wprowadzenie do grafiki komputerowej, WNT Warszawa 1997
2. M.Woo, J.Neider, T.Davies, OpenGL – Programming Guide, Addison-Wesley 2009
3. Randi J. Rost et al. OpenGL Shading Language, Addison-Wesley 2009
4. R.S.Wright et al., OpenGL- SuperBible, Addison-Wesley, 2010
5. T. Akenine-Moeller et al., Real-Time Rendering, AK Peters, 2008
6. T. McReynolds, D. Blythe, Advanced Graphics Programming Using OpenGL, Morgan-Kaufman,2005.

Publikacje naukowe osób prowadzących zajęcia związane z tematyką modułu:

Nie podano dodatkowych publikacji

Informacje dodatkowe:

Brak