Differences

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

Link to this comparison view

pgapi:teme:2024:01 [2024/11/26 19:29]
silviu.stancioiu00 [Teren]
pgapi:teme:2024:01 [2024/12/08 16:55] (current)
silviu.stancioiu00 [Teren]
Line 3: Line 3:
   * **Responsabili:​** Anca Băluțoiu, Silviu Stăncioiu, Mihnea Mitrache, Andrei Voicu   * **Responsabili:​** Anca Băluțoiu, Silviu Stăncioiu, Mihnea Mitrache, Andrei Voicu
   * **Lansare:​** 15 noiembrie 2024   * **Lansare:​** 15 noiembrie 2024
-  * **Termen de predare:​** ​decembrie 2024, ora 23:55 +  * **Termen de predare:​** ​11 decembrie 2024, ora 23:55 
   * **Regulament:​** https://​ocw.cs.pub.ro/​courses/​pgapi/​regulament_general   * **Regulament:​** https://​ocw.cs.pub.ro/​courses/​pgapi/​regulament_general
   * **Notă: Orice informație ce nu a fost acoperită în acest document este la latitudinea voastră!**   * **Notă: Orice informație ce nu a fost acoperită în acest document este la latitudinea voastră!**
Line 16: Line 16:
 ===== Teren ===== ===== Teren =====
  
-Se va genera procedural un mesh pentru teren. Inițial se va porni de la un grid de rezoluție m x n, iar apoi se vor face următoarele operații de displacement pe vertecșii acestuia: +Se va genera procedural un mesh pentru teren. Pentru a simplifica lucrurile, mesh-ul va fi generat în întregime pe CPU (folosind metoda prezentată în laboratorul 2 de EGC), nefiind necesară folosirea de Geomtry Shaders. Inițial se va porni de la un grid de rezoluție m x n, iar apoi se vor face următoarele operații de displacement pe vertecșii acestuia: 
-  - Definirea suprafețelor concave și convexe ale terenului: Terenul va defini o suprafață convexă pentru zona în care se va afla lacul și una concavă unde vor fi munții. Displacement-ul aferent acestor parabole va fi calculat în funcție de distanța dintre vertecși și centrul mesh-ului astfel:​{{:​pgapi:​teme:​2024:​formula_teren.png?​200|}}unde hmax este înălțimea dorită pentru suprafață,​ iar d este o valoare calculată în felul următor: {{ :​pgapi:​teme:​2024:​screenshot_2024-11-14_232359.png?​200 |}} unde v este poziția vertexului curent în planul XZ, c este centrul mesh-ului în planul XZ, iar r este raza gropii. Rezultatul dorit este următorul (imaginea afișează normalele suprafeței pentru a fi mai ușor de perceput forma): {{ :​pgapi:​teme:​2024:​1.png?​500 |}}+  - Definirea suprafețelor concave și convexe ale terenului: Terenul va defini o suprafață convexă pentru zona în care se va afla lacul și una concavă unde vor fi munții. Displacement-ul aferent acestor parabole va fi calculat în funcție de distanța dintre vertecși și centrul mesh-ului astfel: 
 +{{ :​pgapi:​teme:​2024:​formula_teren.png?​200 |}} 
 +unde hmax este înălțimea dorită pentru suprafață,​ iar d este o valoare calculată în felul următor: {{ :​pgapi:​teme:​2024:​screenshot_2024-11-14_232359.png?​200 |}} unde v este poziția vertexului curent în planul XZ, c este centrul mesh-ului în planul XZ, iar r este raza gropii. Rezultatul dorit este următorul (imaginea afișează normalele suprafeței pentru a fi mai ușor de perceput forma): {{ :​pgapi:​teme:​2024:​1.png?​500 |}}
   - Denivelări ale suprafeței pentru a da impresia de munți: Pentru asta se poate folosi noise: [[https://​thebookofshaders.com/​11/​|The Book of Shaders: Noise]]. După aplicarea denivelarilor,​ un rezultat satisfăcător este acesta: {{ :​pgapi:​teme:​2024:​2.png?​500 |}}   - Denivelări ale suprafeței pentru a da impresia de munți: Pentru asta se poate folosi noise: [[https://​thebookofshaders.com/​11/​|The Book of Shaders: Noise]]. După aplicarea denivelarilor,​ un rezultat satisfăcător este acesta: {{ :​pgapi:​teme:​2024:​2.png?​500 |}}
   - Curbură ce definește zona prin care se va vărsa cascada: Se va folosi o curbă Bezier pe baza căreia se va denivela o parte a terenului. Pentru fiecare pereche (xv, zv) de coordonate ale vertecșilor terenului în planul XZ și fiecare pereche (xc, zc) de coordonate ale curbei Bezier în planul XZ se va calcula parametrul t al curbei Bezier pentru care distanța dintre (xv, zv) și curba proiectată este minimă.   - Curbură ce definește zona prin care se va vărsa cascada: Se va folosi o curbă Bezier pe baza căreia se va denivela o parte a terenului. Pentru fiecare pereche (xv, zv) de coordonate ale vertecșilor terenului în planul XZ și fiecare pereche (xc, zc) de coordonate ale curbei Bezier în planul XZ se va calcula parametrul t al curbei Bezier pentru care distanța dintre (xv, zv) și curba proiectată este minimă.
Line 29: Line 31:
 Parametrul t este apoi folosit pentru a evalua curba propriu-zisă (nu cea proiectată pe OZ) și a găsi cel mai apropiat punct de pe curbă. O să numim acest punct b_closest. Parametrul t este apoi folosit pentru a evalua curba propriu-zisă (nu cea proiectată pe OZ) și a găsi cel mai apropiat punct de pe curbă. O să numim acest punct b_closest.
  
-Pentru a realiza curbura în teren putem interpola între înălțimea sa inițială și înălțimea celui mai apropiat punct pe curba în 3D (y_b_closest) astfel:{{ :​pgapi:​teme:​2024:​screenshot_2024-11-14_232359.png?200 |}} unde r_cascada este raza cascadei noastre.+Pentru a realiza curbura în teren putem interpola între înălțimea sa inițială și înălțimea celui mai apropiat punct pe curba în 3D (y_b_closest) astfel:{{ :​pgapi:​teme:​2024:​screenshot_2024-11-14_233111.png?200 |}} unde r_cascada este raza cascadei noastre.
  
 Folosind formula descrisă mai sus vom avea o curbură, dar aceasta nu va avea o formă naturală. Putem îmbunătăți forma acesteia folosind funcția sinus: Folosind formula descrisă mai sus vom avea o curbură, dar aceasta nu va avea o formă naturală. Putem îmbunătăți forma acesteia folosind funcția sinus:
Line 105: Line 107:
        * Noise (25)        * Noise (25)
        * Curbura pentru cascada (25)        * Curbura pentru cascada (25)
-  * Puncte de lumina miscatoare ​(50)+  ​* Cerul (50) 
 +    * Skybox (20) 
 +    ​* Puncte de lumină mișcătoare ​(30)
   * Petic de apa (75)   * Petic de apa (75)
        * Reflexie (25)        * Reflexie (25)
pgapi/teme/2024/01.1732642150.txt.gz · Last modified: 2024/11/26 19:29 by silviu.stancioiu00
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