Podstawy Grafiki Komputerowej 2015/16
zaktualizowano 25.I.2016
Andrzej Łukaszewski

Literatura wymieniana poniżej

  1. P. Shirley, "Fundamentals of Computer Graphics", A.K.Peters, Natick Massachusetts 2002 (oraz nowsze wydania).
  2. M. Jankowski, "Elementy grafiki komputerowej", WNT, Warszawa 1990.
  3. J.D. Foley, A. van Dam, S.K. Feiner, J.F. Hughes, "Wprowadzenie do grafiki komputerowej", WNT, Warszawa 1995.
  4. "Graphics Gems", seria książek, Academic Press.
  5. D.Schreiner, M.Woo, J.Neider, T.Davis, "OpenGL(R) Programming Guide", 2007. (dostępne także wersje wcześniejsze w sieci, dokumentacja opengl.org)
  6. NeHe OpenGL tutorials (WWW: link na stronie głównej)
  7. K.Shoemake - "Animating rotation with quaternion curves", Siggraph 1985 (WWW: np. ACM-DL).
  8. Mark Duchaineau et al. - "ROAMing terrain: real-time optimally adapting meshes" VIS 1997 (WWW: np. ACM-DL)
  9. R.Żukowski - "Automatyczna dekompozycja sceny 3D na portale i sektory", Wrocław, grudzień 2008, PDF.
  10. Radosław Głogowski - "Agresywne wyznaczanie widocznych obiektów", Wrocław, lipiec 2009, PDF.
  11. Stefan Gustavson - "Simplex noise demystified" pdf.

Program wykładu i źródła

  1. Wstep
  2. Sprzęt, standardy i biblioteki
    1. Bufor obrazu 2D: bitmapa
    2. Potok przetwarzania grafiki 3D
    3. Biblioteki graficzne 3D API: OpenGL
    4. Stary i nowy OpenGL
    5. Metody rysowania, VBO
    6. Shadery GLSL
    7. Przekształcenia współrzędnych w starym OpenGL
    8. Dodatkowe biblioteki: GLU, GLUT, GLFW, SDL
    Źródła: wstępne informacje w zasadzie w każdym podręczniku np. [1], część dotycząca OpenGL: RedBook [5]
  3. Przekształcenia geometryczne
    1. Preliminaria
    2. Przekształcenia liniowe afiniczne i rzutowe
    3. Prawo i lewoskrętny system współrzędnych, iloczyn wektorowy
    4. Transformacja wektora normalnego
    5. Wektory i wartości własne macierzy
    6. Diagonalizacja macierzy symetrycznej i rozkład SVD
    7. Rozkład rotacji na 3 ścięcia (shears): Paeth 1990
    8. Jednorodny system współrzędnych
    9. Reprezentacje rotacji
    10. Arcball
    11. Rzuty i przekształcenie perspektywiczne
    12. Model kamery wirtualnej
    13. Obcinanie do ostrosłupa/prostop. widzenia
    14. Przekształcenie współrzędnych świata na wsp. kamery
    Źródła: większość w dowolnym z podręczników: [1], [2], [3]; arcball [4] lub [6], kwaterniony [7] lub [4](tom V).
  4. Widoczność
    1. Klasyfikacja
    2. Trywialne odrzucanie ścian tylnych (Culling)
    3. Algorytm bufora głębokości (z-bufora)
    4. Algorytmy sortujące : algorytm malarza
    5. Algorytm oparty na drzewach BSP
    6. Nierekurencyjna metoda śledzenia promieni (ray--casting)
      1. Generowanie promienia pierwotnego
      2. Znajdowanie przecięcia ze sferą
    7. Culling (c.d): ściany od tyłu, ostrosłup widzenia, zasłanianie
    8. Portal Rendering: portale i sektory
    9. Zbiory obiektów potencjalnie widocznych (PVS -Potentially Visible Sets)
    10. Algorytm GVS - Guided Visibility Sampling
    Źródła: Punkty 1-4: [1] lub [2] (nawet wiecej w [2]), punkty 5-6 [1], punkt 7 to uwagi ogólne zebrane z róznych miejsc, punkty 8-10: można znaleść oryginalne prace szukając po angielskich nazwach lub przeczytać odpowiednie części prac magisterskich [9] i [10].
  5. Obliczanie oświetlenia --- modelowanie odbicia światła
    1. Lokalny model oświeltenia Phonga
      1. Odbicie idealnie rozproszone
      2. Odbicie zwierciadlane
      3. Światło otoczenia (ambient)
      4. Model Phonga-Blinna
      5. Refrakcja: prawo Snell'a
      6. Odbicie zwierciadlane: funkcja Fresnela
    2. Cieniowanie wielokątów
      1. Cieniowanie stałym kolorem
      2. Cieniowanie Gouraud
      3. Interpolacja dwuliniowa --- bilinear interpolation
      4. Cieniowanie Phonga
      5. Pasma Macha
    3. Globalny model oświetlenia vs. lokalny
      1. Definicja funkcji BRDF
      2. Równanie oświetlenia/renderingu
      3. Rekurencyjna metoda śledzenia promieni (ray-tracing)
    Źródła: Punkty 1-2: [1],[2] lub [3], punkt 3: [1] lub inne
  6. Reprezentacje wielościenne obiektów 3D
    1. Siatki trójkątów i czworokątów
    2. Winged--Edge
    3. SceneGraph
    4. LoD - Level of Detail
    5. Statyczne reprezentacje wielorozdzielczościowe
    6. Dynamiczny LoD: siatki adaptacyjne
    7. Algorytm ROAM (idea)
    Źródła: [1] (lub większość poza winged-edge w [3] albo [2]) oraz punkty 6,7: ROAM z pracy [8]
  7. Inne reprezentacje obiektów 2D/3D
    1. Powierzchnie parametryczne
      1. Krzywe Beziere'a
      2. Własności
      3. Gładkie łączenie, ciągłość geometryczna
      4. Algorytm de Casteljaux
      5. Prostokątne powierzchnie Beziere'a
      6. Trójkątne powierzchnie Beziere'a
    2. Reprezentacje wolumetryczne
      1. Zbiory wokseli
      2. Metoda maszerujących kwadratów
      3. Drzewa ósemkowe
      4. Drzewa BSP
      5. Konstruktywna geometria brył
  8. Światło i kolor
    1. Światło
    2. System widzenia człowieka
    3. Światło achromatyczne
      1. Postrzeganie różnic jasności
      2. Zakres dynamiczny
      3. Ile poziomów do pamiętania jasności
      4. Gamma
    4. Modele koloru
      1. Model CIE XYZ
      2. Model CIE xyY
      3. Diagram chromatyczny
      4. Definicje Światła białego
      5. Modele RGB
      6. Model sRGB
      7. Modele interfejsu HSV, HSL
      8. Modele percepcyjne L*u*v*, L*a*b*
  9. Teksturowanie
    1. Tekstury proceduralne 3D: proste przykłady drewno
    2. Wymagania dla szumu, szum kratowy
    3. Generowanie szumu: idea szumu Perlina
    4. Składanie szumu: FractalSum() i Turbulence()
    Źródła: Ken Perlin lub [11]
  10. Rasteryzacja
    1. Rasteryzacja odcinka
      1. Równania prostej
      2. Prosty algorytm zmiennoprzecinkowy
      3. Algorytm Bresenhama
      4. Symetryczny dwukrokowy algorytm Wu-Rokne `87
    2. Algorytm Bresenhama dla okręgu
    3. Metoda przyrostowa/różnicowa i krzywe
    4. Problem aliasingu
      1. Próbkowanie i rekonstrukcja
      2. Granica Nyquista
      3. Filtry dolnoprzepustowe: filtry trójkątny Bartletta, gaussian
    5. Rasteryzacja odcinka z antialiasingiem
    6. Algorytm Gupty-Sproull'a `81
    Źródła: [2],[3],[1] (brak algorytmu Gupty-Sproulla, temat aliasingu więcej w [1] lub w podręcznikach z przetwarzania obrazów)
  11. Algorytmy wycinania
    1. Algorytm Cohena--Sutherlanda
    2. Algorytm Lianga--Barsky'ego
    Źródła: [2] lub [3]