Aleksander Denisiuk. Materiały dydaktyczne PJWSTK

Oświetlenie w OpenGL

  1. .. (Powrót)
  2. ThreeLights.zip Pobierz projekt, wyświetlający oświetlone torusy
    1. Skompiluj i uruchom.
    2. F1, F2, F3 przełącza odpowiednio na światło point, Sun, spot.
    3. Czemu torusy nie rzucają cienia na płaszczyznę?
    4. Kółko myszki zbliża i oddala kamerę, a przesunięcie myszki przy naciśniętym lewym przycisku — obraca kamerę.
    5. opcje linkera dla Code::Blocks w systemie Windows: -lglfw3 -lglew32 -lopengl32 jak na rysunku
  3. Planety.png (6 punktów)
    1. Dodaj do swojej planety z księżycem Słońce. Niech planeta obraca się wokół Słońca i wokół własnej osi, a księżyc obraca się wokół planety i własnej osi.
    2. Umieść w centrum Śłońca żródło światła point, żeby oświetlało ono planety. Zdefiniuj materiał Słońca, tak żeby ono „świeciło”.
    3. Czemu umieszczamy światło point, a nie Sun?
    4. Dla wszystkich trzech sfer wykorzystaj te same wierzchołki.
    5. Dodaj do sceny płaszczyznę z teksturą gwiezdnego nieba. Ustaw płaszczyznę tak, aby nie było widać jej krawędzi. Na płaszczyźnie-niebie nie powinno być widocznym ani odbicie zwierciadlane, ani tłumienie światła. Podopowiedź: wykorzystaj dla renderowania nieba TextureCameraProgram z poprzedniego ćwiczenia.
    6. Wektory normalne na sferze:( sinθcosφ sinφcosθcosφ) gdzie 0θ2π, π2φπ2.
  4. image/svg+xml Czynności:
    1. Zamień torus na sferę — jak zwykle. Zwróć uwagę na wektory normalne.
    2. Dodaj trzecią macierz model_matrix_ oraz trzecią macierz normal_matrix_, uzupełnij procedury Move() oraz Draw().
    3. Dodaj nowe tekstury.
    4. Dodaj drugi i trzeci obiekt texture_ w modelu. Uzupełnij procedurę Draw().
    5. Dodaj trzeci materiał oraz odpowiednią funkcję SetMaterial(). Uzupełnij procedurę Draw(). Materiał Słońca powinien emitować światło.
    6. Płaszczyzna. Skopiuj model z poprzedniego zadania. Skompiluj program do renderowania płaszczyzny wykorzystując shadery z poprzedniego ćwiczenia. Ustaw renderowanie płaszczyzny tym programem w metodzie Window::Run().
    7. Obserwuj odbicie zwierciadlane na Słońcu, planecie i księżycu. Jeżeli nie widzisz żadnych nieprawidłowości (przykładowo: odbicie „nie patrzy” w kierunku światła), wszystko jest gotowe. Przenieś źródło światła do środka Słońca.
    8. Ostatnie szlify mistrza. Wyzeruj w materiałach planety i księżyca odbicie zwierciadlane. Podbij odbicie ambient, aby były widoczne nieoświetlone części.
  5. Termin oddania zadań:
    • klasowych: na zajęciach. Zadania, oddane po terminie, warte są połowę punktów
    • domowych: do momentu, gdy się pojawi następne zadanie. Zadania, oddane po terminie, warte są 0 (słownie: zero) punktów