.vs/grk-projekt/v15 | ||
dependencies | ||
models | ||
Release | ||
shaders | ||
src | ||
textures | ||
freeglut.dll | ||
glew32.dll | ||
grk-cw5.vcxproj | ||
grk-cw5.vcxproj.filters | ||
grk-projekt.sln | ||
readme.md |
Projekt na zaliczenie grafiki komputerowej i wizualizacji (2018) napisany przez
- Barbarę Bróździńską (s426093)
- Filipa Kowalskiego (s426158)
Opis
Program napisany w C++ (OpenGL) przedstawia interaktywną scenę podwodną z pływającymi rybami. Wszystkie modele zostały stworzone w Blenderze, a tekstury w Gimpie.
Sterowanie: WASD - poruszanie kamerą lewo/prawo/przód/tył QE - poruszanie kamerą w górę i dół ZX - obracanie kamery C - przywołanie nowej ryby zwróconej w losowym kierunku przed kamerą
Początkowe ustawienie ryb i roślin jest losowe, ale seed funkcji losującej jest zawsze taki sam. Ryby mają losowy obrót i płyną przed siebie jednocześnie delikatnie unosząc się i opadając (według funkcji sinus od czasu).
Shadery
Każdy z modeli teksturowany jest za pomocą jednego z dwóch shaderów: shader_perlin_tex lub shader_tex. Shader shader_perlin_tex.frag generuje teksturę proceduralną (szum perlina). Przyjmuje rządaną rozdzielczość tekstury.
Zaimplementowane klasy
CameraEntity
Przechowuje informacje o kamerze (pozycja, kąt) i zajmuje się jej poruszaniem, macierzą perspektywy itp.
TexturedObject
Ładuje i przechowuje model .obj oraz przypisaną do niego teksturę i/lub shader. Zawiera metodę pozwalającą wyrenderować oteksturowany model.
Entity3D
Powiązuje TexturedObject z jego pozycją w scenie. Jest odpowiedzialna za operacje na macierzy transformacji obiektu. Zawiera metody pozwalające na translację, rotację i skalowanie oraz renderuje model.