Gry komputerowe
Informatyka N1 - 2017/2018

Wykłady

  1. Wprowadzenie. Synteza trójwymiarowej grafiki czasu rzeczywistego. OpenGL. Transformacje geometryczne.

    Wykład 1 - Prezentacja w formacie PDF

  2. Techniki wyświetlania obrazu i ich zastosowanie w grach. Kamera w scenie 3D. Implementacja interaktywnej kamery pierwszoosobowej.

    Wykład 2 - Prezentacja w formacie PDF

  3. Oświetlenie. Potok renderowania. Techniki oświetlenia i cieniowania.

    Wykład 3 - Prezentacja w formacie PDF

  4. Zaawansowane oświetlenie. Definiowanie geometrii. Backface culling. Renderowanie mapy wysokości. 2017-04-25

    Wykład 4 - Prezentacja w formacie PDF

Materiały na zajęcia projektowe

  1. Zajęcia projektowe 1
    Transformacje geometryczne

    Na zajęciach omówione zostaną podstawy użycia OpenGL. Zbudowana zostanie prosta, złożona z kilku brył scena.

    Sposoby programowania grafiki z użyciem OpenGL które będą wykorzystywane na zajęciach nie odpowiadają współczesnemu podejściu. Jest to celowe i ma charakter edukacyjny - tzw. immediate mode i fixed pipeline, choć archaiczne, są dużo łatwiejsze do zrozumienia i pozwalają na bardziej bezstresowe zrobienie pierwszych kroków w dziedzinie grafiki komputerowej czasu rzeczywistego.

    Zainteresowanych podejściem współczesnym odsyłam do dokumentacji nowego OpenGL (wersja 3.2 i nowsze) i np. do bardzo dobrej książki Real-Time Rendering. Third edition. Akenine-Muellera, Hainesa i Hoffmana.

    Zadanie nr 1

    Zadaniem do wykonania na pierwszych laboratoriach jest utworzenie animowanego "pajacyka" składającego się z kilku prostych brył. Sugerowane jest posłużenie się załączonym projektem, jako punktem wyjściowym.

    Poniżej przedstawiono oczekiwany wygląd wykonanego zadania, w dwóch wersjach zależnych od ambicji wykonującego:

    Materiały

    Układ współrzędnych w OpenGL

    Rysunek, który jest często bardzo pomocny dla poprawnego wyobrażenia sobie struktury sceny:

    Układ współrzędnych w OpenGL

  2. Zajęcia projektowe 2
    Kamera FPP, obsługa wejścia z klawiatury

    Zajęcia będą obejmowały zagadnienie kontroli kamery pierwszoosobowej (FPP - First-Person Perspective). Poruszone zostaną kwestie związane z podstawową obsługą wejścia od użytkownika.

    Zadanie nr 2

    Zadaniem jest zaimplementowanie działania interaktywnej kamery pierwszoosobowej.

    • Wesja podstawowa
      • Kontrola ruchu za pomocą klawiatury: ruch do przodu, do tyłu, na boki
      • Kontrola obrotu wokół jednej osi za pomocą klawiatury
      • Wykorzystanie gluLookAt(...)
      • Poprawna obsługa repetycji klawiszy
      • Mile widziana inercja - ruch kamery nie zatrzymujący się natychmiastowo, ale płynnie wygasający

      Lab2 - Wersja podstawowa (Youtube)

    • Wesja zaawansowana

      To co wersja podstawowa, a także:

      • obrót wokół dwóch osi (przydadzą się współrzędne sferyczne)
      • obrót kontrolowany z użyciem myszy (przydatne: glutWarpPointer(x, y), glutSetCursor(GLUT_CURSOR_NONE), glutPassiveMotionFunc(f))

      Lab2 - Wersja zaawansowana (Youtube)

    Materiały

  3. Zajęcia projektowe 3
    Oświetlenie

    Celem zajęć jest poznanie podstawowych technik cieniowania z użyciem nieprogramowalnego potoku renderowania OpenGL (fixed pipeline).

    Fixed pipeline pozwala jedynie na uzyskanie cieniowania płaskiego per face lub gładkiego per vertex, gdzie dla drugiego z nich wynik jest obliczany dla każdego wierzchołka, po czym jest on interpolowany pomiędzy tymi wierzchołkami. Jest to tzw. cieniowanie Gouraud. Daje to kiepskie efekty wizualne szczególnie dla komponentu specular.

    Współcześnie standardem jest stosowanie lepszego jakościowo cieniowania per fragment (per pixel), a więc obliczanie koloru na podstawie modelu oświetlenia dla każdego fragmentu osobno, po uprzedniej interpolacji wektora normalnego. Ten rodzaj cieniowania, nazywany cieniowaniem Phonga (lub z małym uproszczeniem Phonga-Blinna), można jednak uzyskać tylko korzystając z programowalnego potoku renderowania, w oparciu o własne programy cieniujące wykonywane na karcie graficznej, tzw. shadery które wykraczają poza materiał przerabiany na laboratoriach w ramach tego przedmiotu (jednak gorąco zachęcam do zapoznania się z tą techniką).

    Zadanie nr 3

    Zadaniem jest umieszczenie na scenie różnych, zmieniających się źródeł światła.

    • Wesja podstawowa
      • Dwa źródła światła: directional i pointlight
      • Wykorzystanie komponentów ambient/diffuse
      • Wygaszanie światła (attenuation)
      • Kontrola położenia źródła światła - poddanie jego pozycji transformacjom geometrycznym, np. związanie jednego ze źródeł z położeniem gracza
      • Zmienność źródeł światła (np. zmiana koloru, jasności, kierunku, wygaszania)
      • Mile widziane zastosowanie w bardziej złożonym środowisku - jak w przykładzie

      Lab3 - Wersja podstawowa (Youtube)

    • Wesja zaawansowana

      To co wersja podstawowa, a także:

      • Świadome użycie komponentu specular
      • Światło typu spotlight
      • Przemyślane użycie światła dla celów estetycznych

      Lab3 - Wersja zaawansowana (Youtube)

    Materiały

Kontakt

dr inż. Bartosz Bazyluk
bbazyluk@wi.zut.edu.pl
Pokój 316 WI2 / 214 WI1

Konsultacje

Bezpośrednio po zajęciach.

Przewiń do...