This shows you the differences between two versions of the page.
egc:teme:2018:03 [2018/12/07 22:23] ovidiu.dinu [Exemplu de Implementare] |
egc:teme:2018:03 [2019/01/10 15:46] (current) alexandru.gradinaru [Alte exemple orientative] |
||
---|---|---|---|
Line 3: | Line 3: | ||
* **Responsabili**: Alex Gradinaru, Alex Dinu \\ | * **Responsabili**: Alex Gradinaru, Alex Dinu \\ | ||
* **Perioada de lucru**: 8/12/2018 – 13/01/2019 | * **Perioada de lucru**: 8/12/2018 – 13/01/2019 | ||
- | * **Termen de predare**: 13/01/2019, 23:55 \\ | + | * **Termen de predare**: 13/01/2019, 23:55 \\ |
- | * **Depunctare intarziere**: **2.5p/zi** pana la maxim **40p** din totalul de **100p** | + | |
===== New Vegas ===== | ===== New Vegas ===== | ||
{{ :egc:teme:2018:55-7789-subversion_city_600.jpg?500 |}} | {{ :egc:teme:2018:55-7789-subversion_city_600.jpg?500 |}} | ||
- | Scopul acestei teme este de a stimula creativitatea prin generarea procedurala a unui oras in 3D. Va veti folosi cunostintele din domeniul graficii asistate de calculator, anume **generare de modele 3D**, **transformari geometrice** **iluminare** si **texturare**. \\ | + | Scopul acestei teme este de a stimula creativitatea prin generarea procedurala a unui oras in 3D. Va veti folosi cunostintele din domeniul graficii asistate de calculator, anume **generare de modele 3D**, **transformari geometrice**, **iluminare** si **texturare**. \\ |
- | Tema isi propune un minim de complexitate, descris in cerintele ce urmeaza, insa va incurajeaza sa veniti cu idei si abordari proprii, astfel incat va exercitati capabilitatile programatice si creativitatea, prin generare procedurala. \\ | + | Tema isi propune un minim de complexitate, descris in cerintele ce urmeaza, insa va incurajeaza sa veniti cu idei si abordari proprii, astfel incat sa va exercitati capabilitatile programatice si creativitatea, prin generare procedurala. \\ |
Utilitatea deprinderilor dobandite in urma crearii acestui mediu virtual se regaseste in industrii precum: jocuri video(mai ales open world, e.g. No Man's Sky), filme(Hollywood CGI), retail(e.g. geometric patterns). | Utilitatea deprinderilor dobandite in urma crearii acestui mediu virtual se regaseste in industrii precum: jocuri video(mai ales open world, e.g. No Man's Sky), filme(Hollywood CGI), retail(e.g. geometric patterns). | ||
===== Generare procedurală ===== | ===== Generare procedurală ===== | ||
Line 28: | Line 27: | ||
===== Cerinte ===== | ===== Cerinte ===== | ||
Se va genera procedural o scena cu elementele mentionate mai sus.\\ | Se va genera procedural o scena cu elementele mentionate mai sus.\\ | ||
+ | Utilizatorul se poate plimba prin intreaga scena utilizand camera din laborator. \\ | ||
La fiecare noua rulare a aplicatiei, orasul va arata diferit. | La fiecare noua rulare a aplicatiei, orasul va arata diferit. | ||
==== Clădrile ==== | ==== Clădrile ==== | ||
Cladirile sunt formate prin asamblare de **primitive** cu geometrie alterata procedural. Asamblarea este controlata printr-un proces **pseudorandom** creat de voi. Primitivele pot fi, de exemplu, cilindri cu distanta nu neaparat uniforma intre oricare 2 puncte succesive de pe conturul cercului generator, cu numar variabil de puncte, etc. Pot fi paralelipipede, etc.\\ | Cladirile sunt formate prin asamblare de **primitive** cu geometrie alterata procedural. Asamblarea este controlata printr-un proces **pseudorandom** creat de voi. Primitivele pot fi, de exemplu, cilindri cu distanta nu neaparat uniforma intre oricare 2 puncte succesive de pe conturul cercului generator, cu numar variabil de puncte, etc. Pot fi paralelipipede, etc.\\ | ||
Pentru fiecare triunghi generat, trebuie sa generati si **coordonatele de texturare** corespunzatoare, astfel incat puteti aplica o textura repetitiva (tileable, folositi **GL_REPEAT**) cu ferestre. Puteti gandi triunghiurile constituente ale primitivelor cate 2, formand un quad, caruia sa-i dati coordonate de texturare in afara intervalului (0,1)x(0,1), astfel incat sa folositi **GL_REPEAT** corespunzator.\\ | Pentru fiecare triunghi generat, trebuie sa generati si **coordonatele de texturare** corespunzatoare, astfel incat puteti aplica o textura repetitiva (tileable, folositi **GL_REPEAT**) cu ferestre. Puteti gandi triunghiurile constituente ale primitivelor cate 2, formand un quad, caruia sa-i dati coordonate de texturare in afara intervalului (0,1)x(0,1), astfel incat sa folositi **GL_REPEAT** corespunzator.\\ | ||
- | Asamblarea primitivelor constituente unei cladiri consta in aplicarea de **transformari** (**scalare, translatie, rotatie**) acestora dupa un **set de reguli(constrangeri)** creat de voi astfel incat rezultatul arata ca o potentiala cladire. | + | Asamblarea primitivelor constituente unei cladiri consta in aplicarea de **transformari** (**scalare, translatie, rotatie**) acestora dupa un **set de reguli(constrangeri)** creat de voi astfel incat rezultatul arata ca o potentiala cladire.\\ |
+ | |||
+ | {{ :egc:teme:2018:untitled.png?500 |}} | ||
==== Străzile ==== | ==== Străzile ==== | ||
Line 39: | Line 41: | ||
Strazile trebuie sa fie si ele **texturate** utilizand **GL_REPEAT**. | Strazile trebuie sa fie si ele **texturate** utilizand **GL_REPEAT**. | ||
<note important>Geometriile cladirilor nu se vor suprapune peste geometriile strazilor. </note> | <note important>Geometriile cladirilor nu se vor suprapune peste geometriile strazilor. </note> | ||
+ | Minimul de complexitate implica doar strazi pe verticala si pe orizontala. Cladirile vor fi plasate in celulele formate intre strazi. Minimul de complexitate implica o cladire per celula. | ||
==== Elementele decorative ==== | ==== Elementele decorative ==== | ||
Orasul va contine elemente decorative plasate printr-un algoritm procedural, dupa un **set de reguli** ales de voi, astfel ca nu se intersecteaza cu alte elemente, iar pozitia, rotatia si dimensiunea acestora le incadreaza corespunzator in scena. \\ | Orasul va contine elemente decorative plasate printr-un algoritm procedural, dupa un **set de reguli** ales de voi, astfel ca nu se intersecteaza cu alte elemente, iar pozitia, rotatia si dimensiunea acestora le incadreaza corespunzator in scena. \\ | ||
Line 49: | Line 51: | ||
Fiecare cladire va avea un set de lumini de tip **spot** care o ilumineaza doar pe aceasta, cu directia aproximativ perpendiculara pe ground plane. Si aceastea vor fi generate procedural. | Fiecare cladire va avea un set de lumini de tip **spot** care o ilumineaza doar pe aceasta, cu directia aproximativ perpendiculara pe ground plane. Si aceastea vor fi generate procedural. | ||
- | ==== Camera ==== | + | |
- | Veti avea **o camera interactiva** care pe o tasta face **toggle intre modurile First Person/Third Person**. | + | |
- | <note important>Camera trebuie sa fie implementata de voi in laborator, si nu cea din framework.</note> | + | |
===== Exemplu de Implementare ===== | ===== Exemplu de Implementare ===== | ||
- | Sunteti incurajati sa va ghidati dupa implementarea de la acest link: | + | Sunteti incurajati sa va ghidati dupa implementarea de la acest link: \\ |
- | [[https://youtu.be/-d2-PtK4F6Y]] | + | //**[[https://youtu.be/-d2-PtK4F6Y]]**// |
<note tip>Puteti folosi gramatici independente de context pentru construirea algoritmului de generare procedurala. </note> | <note tip>Puteti folosi gramatici independente de context pentru construirea algoritmului de generare procedurala. </note> | ||
+ | |||
+ | ==== Alte exemple orientative ==== | ||
+ | |||
+ | * http://www.shamusyoung.com/twentysidedtale/images/pixelcity_cars3.jpg | ||
+ | * http://vectorworksindia.com/frontend/web/img/products/64d3e39fe525b9d56338e58dd6cd8be009e14dd1.png | ||
+ | * https://cdn.dribbble.com/users/17619/screenshots/1188357/attachments/156829/3d-city.png | ||
+ | * http://weelii.com/wp-content/uploads/2015/07/Low-Poly-City.jpg | ||
+ | * https://designshack.net/wp-content/uploads/cityscape-1.jpg | ||
+ | |||
+ | {{ :egc:teme:2018:procedural_buildings.jpg?500 |}} | ||
+ | ==== Resurse utile ==== | ||
+ | |||
+ | * http://pcg.wikidot.com/category-pcg-algorithms | ||
+ | * https://medium.freecodecamp.org/how-to-make-your-own-procedural-dungeon-map-generator-using-the-random-walk-algorithm-e0085c8aa9a | ||
+ | * https://stackoverflow.com/questions/155069/how-does-one-get-started-with-procedural-generation | ||
+ | |||
===== Bonus ===== | ===== Bonus ===== | ||
Line 64: | Line 80: | ||
===== Barem ===== | ===== Barem ===== | ||
<note tip> | <note tip> | ||
- | * **30p** - Generare procedurala a geometriei cladirilor | + | * **20p** - Generare procedurala a geometriei cladirilor |
- | * **30p** - Generare procedurala a retelei de drumuri | + | * **20p** - Generare procedurala a retelei de drumuri |
- | * **10p** - Texturarea cladirilor | + | * **20p** - Texturarea cladirilor |
- | * **10p** - Texturarea strazilor | + | * **20p** - Texturarea strazilor |
- | * **10p** - Iluminare scena | + | * **15p** - Iluminare scena |
- | * ** 5p** - Camera | + | |
* ** 5p** - Readme&Comentarii | * ** 5p** - Readme&Comentarii | ||