Differences

This shows you the differences between two versions of the page.

Link to this comparison view

spg:teme:2019:01 [2019/11/04 07:59]
ovidiu.dinu
— (current)
Line 1: Line 1:
-==== Tema 1 - Glass Shatters ==== 
  
-Scopul temei este aprofundarea notiunilor framebuffer,​ reflexia si refractia luminii, sisteme de particule. 
- 
-{{ :​spg:​teme:​2019:​tema1spggif.gif?​nolink&​750 |}} 
- 
-=== Cioburile === 
- 
-Se doreste simularea spargerii unui obiect simplu din sticla cu ajutorul unui sistem de particule in care fiecare particula reprezinta un ciob. 
- 
-{{ :​spg:​teme:​2019:​spgt1tri.png?​nolink&​200 |}}  
- 
-Pozitiile initiale ale particulelor reprezinta obiectul intact, inainte sa fie spart. 
- 
-Utilizand Geometry Shader, se expandeaza fiecare primitiva (vertex(ca in exemplu) sau triunghi) a obiectului in forme geometrice simple precum un tetraedru sau un triunghi cu adancime (ca in exemplu, 8 triunghiuri,​ Fig 2).  
- 
-=== Obiecte in scena === 
- 
-Scena trebuie sa aiba obiecte animate(animatii simple). Minimul necesar este un obiect care sparge geamul. 
-Pentru ca vom avea refexie si refractie in timp real. 
- 
-=== Reflexia si refractia === 
-Obiectul din sticla reflecta si refracta celelalte obiecte din scena in timp real, in special pe cel care il crapa. 
-Trebuie sa va creati voi o clasa modificata FrameBuffer pentru cube map in care randati, din punctul ce reprezinta centrul obiectului, 6 vederi patrate(fetele cubului: fata, spate, stanga, dreapta, sus, jos) cu intreaga scena cu obiecte animate. 
- 
-Redarea scenei in cubemap se face cu proiectie perspectiva cu FoV=90grade si aspectRatio=1 ca sa fie incadrat tot mediul. 
-Pentru ca avem reflexie & refractie real-time, randam in cubemap la fiecare frame. 
- 
-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, pe langa pozitie, pozitie initiala, viteza, viteza initiala. Rotatia initiala e nula. 
-  
-Starea initiala a particulelor reprezinta obiectul inainte sa fie spart. 
- 
- 
-=== Detalii de implementare === 
- 
-Simularea trebuie sa poata fi repornita la runtime. 
-Nu ne intereseaza coliziuni pentru cioburile obiectului spart, puteti pleca prin modificarea codului din Lab5, cioburile au doar o viteza initiala si sunt trase in jos de gravitatie. 
-Fiecare ciob trebuie sa aiba si o rotatie. 
- 
- 
-Veti avea un buton care arata normalele(shiftate din (-1,1) in (0,1) pe fiecare componenta X,Y,Z). Hint: prima data afisati normalele pentru a asigura corectitudinea reflexie si refractiei. 
-Veti avea un buton care permite afisarea wireframe. 
-Veti avea doua butoane pentru dilatarea si contractarea timpului, practic folositi o variabila timeScale = 1 initial pentru 
-a inlocui deltaTime cu deltaTime * timeScale oriunde cel dintai e folosit. 
- 
- 
-<note tip>Un exemplu de tema aici: 
-  * [[https://​www.youtube.com/​watch?​v=msJEWEOmbs0]] 
-  * [[https://​youtu.be/​JxfJBl3f8VE]] 
-</​note>​ 
- 
- 
-=== Bonus === 
-  * Cioburi mai complexe 
-  * reflexii/​refractii mai physically accurate, e.g. 
-       * [[https://​youtu.be/​Bvar6X0dUGs]] 
-       * [[https://​youtu.be/​K2rs7K4y_sY]] 
-  * Orice aduce un plus semnificativ de realism 
- 
-=== Functionalitati obligatorii === 
-Barem orientativ pentru realizarea functionalitatilor (din 100 puncte): 
-  * spargere obiect in cioburi cu sistemul de particule (35p) 
-  * calcul normale pentru fiecare ciob + reflectie & refractie(25p) 
-  * toggle afisare normale, afisare wireframe(20p) 
-  * reset simulation @runtime (10p) 
-  * time dilation/​contraction(5p) 
-  * 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_SPG.sdf**__ (in caz ca exista) 
-  * stergeti fisierul __**/Visual Studio/​Framework_SPG.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 === 
-29 noiembrie ora 23:55 
spg/teme/2019/01.1572847167.txt.gz ยท Last modified: 2019/11/04 07:59 by ovidiu.dinu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0