Aleksander Denisiuk. Materiały dydaktyczne PJWSTK

Teksturowanie w OpenGL

  1. .. (Powrót)
  2. Torus.zip Pobierz projekt, wyświetlający oteksturowany torus
    1. skompiluj i uruchom
    2. przeanalizuj kod: znadź, gdzie się tworzy tekstura, gdzie się ustawia unit teksturowy?
    3. opcje linkera dla Code::Blocks w systemie Windows: -lglfw3 -lglew32 -lopengl32 jak na rysunku
  3. Earth.png (2 punkty) Napisz program, który wyświetla obacającą się sferę. Nałóż na sferę teksturę planety. Swoją planetę wybierz z tabeli, gdzie n=(suma cyfr indeksu)mod9:
    nplaneta
    0Merkury
    1Wenus
    2Ziemia
    3Mars
    4Jowisz
    5Saturn (bez pierścieni)
    6Uran
    7Neptun
    8Pluton
    Teksturę dla swojej planety znajdź w Internecie. Na przykład, pobierz od Jamesa Hastingsa-Trew'ego. Parametryzacja sfery o promieniu R:{x=Rsinθcosφ,y=Rsinφ,z=Rcosθcosφ, gdzie 0θ2π, π2φπ2.
  4. EarthMoon.png (2 punkty) Dodaj drugą sferę, która by się obracała dookoła pierwszej. Wykorzystaj te same wierzchołki (podpowiedź: zdefiniuj dodatkową macierz model_matrix_). Nałóż na tę sferę teksturę księżyca swojej planety (dla Merkurego lub Wenus weź teksturę księżyca innej planety). Planety i księżyce powinny się obracać wokół swoich osi. Tekstury księżyców widziałem na stronie Planetary Visions.
  5. EarthMoon1.png (2 punkty) Dodaj do sceny płaszczyznę z teksturą gwiezdnego nieba. Ustaw płaszczyznę tak, aby nie było widać jej krawędzi.
  6. image/svg+xml Czynności:
    1. Zmień parametryzację w funkcji Initialize() z torusa na sferę. W szczególności, kąt φ powinien się zmieniać w przedziale od π2 do  π2. Zastosuj interpolację liniową.
    2. Dodaj drugą macierz model_matrix_, uzupełnij procedury Move() oraz Draw().
    3. Dodaj nową teksturę: zadeklaruj w window.h, uzupełnij procedurę InitTextures(). W klasie Texture zaimplementowane wczytywanie tylko tekstur z plików TGA, w modelu RGB, bez kompresji.
    4. Dodaj drugi obiekt texture_ w modelu. Dodaj funkcję podobną do SetTexture(). Unit teksturowy może pozostać ten sam. Uzupełnij procedurę Draw().
    5. Płaszczyzna. Zmień inicjalizację: współrzędne wierzchołków, współrzędne teksturowe. Tektura powinna się rozciągać na całą płaszczyznę bez powtórzeń.
  7. 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