Notă: Orice informație ce nu a fost acoperită în acest document este la latitudinea voastră!
@Cristi
- filmulet @Cristi
În cadrul acestei teme va trebui să realizați o simulare a unui lac de la munte, în care se varsă o cascadă. Simularea se va face pe timp de noapte, în scenă fiind prezente surse de lumină dinamice. Un video demonstrativ ce înfățișează o posibilă implementare îl puteți viziona în filmulețul de mai jos:
Geometrie obiecte incapere
@Robert
Multe capturi de ecran!
Masa
Televizorul
Ecran
Lampa
Artificiile de ecranul televizorului
Ecranul televizorului va afișa constant un show de artificii. Pentru aceasta se va folosi un framebuffer în care se va desena un sistem de particule configurat astfel încât să arate ca niște artificii. Textura de culoare din framebuffer va fi afișată pe ecranul televizorului.
Sistemul de particule va avea următorul comportament:
Se va alege o culoare random a particulelor, iar toate particulele din sistem vor avea aceeași culoare.
Toate particulele vor porni de la acceași poziție inițială și vor avea aceeași viteză inițială care le va face să se ducă în sus.
În orice moment particulele sunt afectate de gravitație. Particulele care au fost lansate se vor ridica până în punctul in care viteza lor pe verticală devine 0 (sau mai mică decât 0) din cauza gravitației. În acel punct vor exploda pe direcții random (se poate folosi o functie de generat numere pseudo-random între 0 și 1 în GLSL care să primească ca input gl_VertexID. Aceste numere pot fi folosite pentru componentele unui vec3, care după normalizare să reprezinte direcția).
Viteza de după explozie a particulelor va fi pe direcția calculată anterior, înmulțită cu o valoare aleasă aleator (magnitudinea acesteia).
Particulele vor avea toate un lifetime, care va fi același pentru toate particulele. Când expiră lifetime-ul acestora, sistemul de particule se resetează și show-ul de artificii o ia de la capăt.
Sistemul de particule pentru artificiile folosite în demo:
@Silviu
Reflexiile incaperii pe ecran
@Silviu
Iluminare
@Cristi
Notare (250)
@Toti
Bonusuri posibile
@Toti
Indicații suplimentare
Tema va fi implementată în OpenGL și C++. Este indicat să folosiți framework-ul și Visual Studio.
Pentru implementarea temei, în folderul src/lab_m2 puteți crea un nou folder, de exemplu Tema1, cu fișierele Tema1.cpp și Tema1.h (pentru implementare POO, este indicat să aveți și alte fișiere). Pentru a vedea fișierele nou create în Visual Studio în Solution Explorer, apăsați click dreapta pe filtrul lab_m2 și selectați Add→New Filter. După ce creați un nou filtru, de exemplu Tema1, dați click dreapta și selectați Add→Existing Item. Astfel adăugați toate fișierele din folderul nou creat. În fișierul lab_list.h trebuie adăugată și calea către header-ul temei. De exemplu: #include “lab_m2/Tema1/Tema1.h”.
Arhivarea proiectului
În mod normal arhiva trebuie să conțină toate resursele necesare compilării și rulării
Înainte de a face arhiva asigurați-vă că ați curățat proiectul Visual Studio:
click dreapta pe proiect în Solution Explorer → Clean Solution
și ștergeți folderul /build/.vs (dacă nu il vedeți, este posibil să fie ascuns)
SAU ștergeți complet folderul /build
În cazul în care arhiva tot depășește limita de 50MB (nu ar trebui), puteți să ștergeți și folderul /deps sau /assets întrucât se pot adăuga la testare. Nu este recomandat să faceți acest lucru întrucât îngreunează mult testarea în cazul în care versiunea curentă a bibliotecilor/resurselor diferă de versiunea utilizată la momentul scrierii temei.