This shows you the differences between two versions of the page.
spg:teme:2019:01 [2019/11/04 07:15] ovidiu.dinu |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== Tema 1 - Glass Shatters{{ :spg:teme:2019:spgt1tri.png?nolink&200 |}} ==== | ||
- | Scopul temei este aprofundarea notiunilor framebuffer, reflexia si refractia luminii, sisteme de particule. | ||
- | |||
- | === Geamul === | ||
- | |||
- | Se doreste simularea spargerii unui obiect simplu din sticla cu ajutorul unui sistem de particule in care fiecare particula reprezinta un ciob. | ||
- | |||
- | Pozitiile initiale ale particulelor reprezinta obiectul intact, inainte sa fie spart. | ||
- | |||
- | Utilizand Geometry Shader, se expandeaza fiecare primitiva a obiectului in forme geometrice simple precum un tetraedru sau un triunghi cu adancime (8 triunghiuri), ca in Fig 1. | ||
- | |||
- | Refle | ||
- | Pentru reflexie si refractie: Normalele in World Space vor fi calculate tot in acest pas, folosind //rotatia// particulei sau cu produs vectorial . Aceasta rotatie trebuie adaugata ca informatie in SSBO ( | ||
- | |||
- | Starea initiala a particulelor | ||
- | |||
- | {{ :egc:teme:2019:fb.png?nolink&768 |}} | ||
- | |||
- | |||
- | === Detalii de implementare === | ||
- | |||
- | | ||
- | |||
- | <note tip>Mai multe informatii despre ce reprezinta coliziunea si cum se poate implementa: | ||
- | * [[https://developer.mozilla.org/en-US/docs/Games/Techniques/2D_collision_detection]] | ||
- | * [[https://learnopengl.com/In-Practice/2D-Game/Collisions/Collision-detection]] | ||
- | * [[https://www.youtube.com/watch?v=aTbw71EpamY]] | ||
- | * [[https://developer.mozilla.org/en-US/docs/Games/Techniques/3D_collision_detection]] | ||
- | </note> | ||
- | |||
- | |||
- | === Bonus === | ||
- | * (5p) Animatie de scalare pentru perechile de dreptunghiuri (o pereche de dreptunghiuri sa se comporte ca un set de usi glisante de la un lift modern), astfel incat sa se apropie si sa se departeze incontinuu, pastrand totusi o distanta suficient de mare intre ele astfel incat pasarea sa treaca printre ele) | ||
- | * (5p-10p) Scena cat mai realista (perechile de stalactite si stalagmite sa fie in mai multe culori, din forme mai complexe, pasarea sa arate ca o pasare) | ||
- | * Stalactitele si stalagmitele sa nu fie numai verticale (look up 2D GJK) | ||
- | * Sa creasca dificultatea jocului pe masura ce creste punctajul jucatorului | ||
- | * Animatie care sa simuleze modul prin care pasarea da din aripi | ||
- | |||
- | <note tip>Exemplu (doar pentru orientare): https://www.youtube.com/watch?v=I69adfEqwC0</note> | ||
- | |||
- | |||
- | === Functionalitati obligatorii === | ||
- | Barem orientativ pentru realizarea functionalitatilor (din 150 puncte): | ||
- | * desenare pasare (25p) | ||
- | * desenare mediu si animatie, cu utilizarea optima a resurselor (40p) | ||
- | * animatii fluide pasare (35p) | ||
- | * coliziuni (35p) | ||
- | * printare statistici in consola (10p) | ||
- | * readme (5p) | ||
- | |||
- | === Intrebari si raspunsuri === | ||
- | Pentru intrebari vom folosi forumurile de pe moodle. | ||
- | |||
- | === Notare === | ||
- | Baremul este orientativ. Fiecare asistent are o anumita libertate in evaluarea temelor (de exemplu, sa dea punctaj partial pentru implementarea incompleta a unei functionalitati sau sa scada pentru hard coding). Acelasi lucru este valabil atat pentru functionalitatile obligatorii, cat si pentru bonusuri. | ||
- | |||
- | Tema trebuie incarcata pe moodle. Pentru a fi punctata, tema trebuie prezentata la laborator. Vor exista laboratoare speciale de prezentare a temelor (care vor fi anuntate). | ||
- | |||
- | === Indicatii suplimentare === | ||
- | Tema va fi implementata in OpenGL si C++. Este indicat sa folositi framework-ul si Visual Studio. | ||
- | |||
- | Pentru implementarea temei, in folderul Source/Laboratoare/ puteti crea un nou folder, de exemplu Tema1, cu fisierele Tema1.cpp si Tema1.h (pentru implementare POO, este indicat sa aveti si alte fisiere). Pentru a vedea fisierele nou create in Visual Studio in Solution Explorer, apasati click dreapta pe filtrul Laboratoare si selectati Add->New Filter. Dupa ce creati un nou filtru, de exemplu Tema1, dati click dreapta si selectati Add->Existing Item. Astfel adaugati toate fisierele din folderul nou creat. | ||
- | In fisierul LabList.h trebuie adaugata si calea catre header-ul temei. De exemplu: #include <Laboratoare/Tema1/Tema1.h> | ||
- | |||
- | === Arhivarea proiectului === | ||
- | |||
- | <note> | ||
- | * in mod normal arhiva trebuie sa contina toate resursele necesare compilarii si rularii | ||
- | * inainte de a face arhiva asigurati-va ca ati dat clean la proiect | ||
- | * click dreapta pe proiect in **Solution Explorer** -> **Clean Solution**, sau | ||
- | * stergeti folderul __**/Visual Studio/obj**__ | ||
- | * stergeti fisierul __**/Visual Studio/Framework_EGC.sdf**__ (in caz ca exista) | ||
- | * stergeti fisierul __**/Visual Studio/Framework_EGC.VC.db**__ (in caz ca exista) | ||
- | * stergeti folderul __**/.vs**__ (in caz ca exista) | ||
- | * stergeti folderul __**/x64**__ sau __**/x86**__ (in caz ca exista) | ||
- | * executabilul final este generat in folderul __**/x86**__ sau __**/x64**__ la finalul link-editarii in functie de arhitectura aleasa la compilare (32/64 biti) | ||
- | * in cazul in care arhiva tot depaseste limita de 20MB (nu ar trebui), puteti sa stergeti si folderul __**/libs**__ sau __**/Resources**__ intrucat se pot adauga la testare. Nu este recomandat sa faceti acest lucru intrucat ingreuneaza mult testarea in cazul in care versiunea curenta a librariilor/resurselor difera de versiunea utilizata la momentul scrierii temei. | ||
- | </note> | ||
- | |||
- | === Deadline tema === | ||
- | 3 noiembrie ora 23:55 |