Differences

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

Link to this comparison view

gp:laboratoare:05 [2026/03/27 19:41]
maria_anca.balutoiu [Implementare]
gp:laboratoare:05 [2026/04/01 11:48] (current)
maria_anca.balutoiu [Fractal Noise]
Line 8: Line 8:
   * Octava 3+: detalii fine (stânci, denivelări mici)   * Octava 3+: detalii fine (stânci, denivelări mici)
  
-Parametrii care controlează ​fBm sunt:+Parametrii care controlează ​Fractal Noise sunt:
   * **Octave:** Numărul de straturi de zgomot   * **Octave:** Numărul de straturi de zgomot
   * **Persistence:​** Cât de repede scade amplitudinea   * **Persistence:​** Cât de repede scade amplitudinea
Line 52: Line 52:
 | Taiga | 0.60 - 0.75 | > 0.40 | | Taiga | 0.60 - 0.75 | > 0.40 |
 | Zăpadă / Munte înalt | > 0.75 | - | | Zăpadă / Munte înalt | > 0.75 | - |
 +
 <note important>​Harta de elevație și harta de umiditate trebuie generate cu seed-uri diferite. Dacă se folosește același seed, cele două hărți vor fi identice, iar clasificarea biomilor va fi incorectă, deoarece fiecare punct va avea aceeași valoare de elevație și umiditate.</​note>​ <note important>​Harta de elevație și harta de umiditate trebuie generate cu seed-uri diferite. Dacă se folosește același seed, cele două hărți vor fi identice, iar clasificarea biomilor va fi incorectă, deoarece fiecare punct va avea aceeași valoare de elevație și umiditate.</​note>​
  
 ==== Implementare ==== ==== Implementare ====
-  - **Fractal Noise** +  - Fractal Noise 
-  - **Generarea celor două hărți** de elevație și de umiditate, fiecare cu propriul seed +  - Generarea celor două hărți de elevație și de umiditate, fiecare cu propriul seed 
-  - **Clasificarea biomurilor** +  - Clasificarea biomurilor 
-  - **Construirea mesh-ului ​3D**+  - Construirea mesh-ului ​
 + 
 +Pentru fiecare vertex al grilei se calculează înălțimea din harta de elevație și culoarea din clasificarea biomurilor. Apa este aplatizată la ''​waterLevel''​ pentru a simula suprafața oceanului:​ 
 + 
 +<code csharp>​ 
 +for (int z = 0; z < mapHeight; z++) 
 +
 +    for (int x = 0; x < mapWidth; x++) 
 +    { 
 +        int idx = z mapWidth + x; 
 +        float height = elevationMap[x,​ z] < waterLevel ? waterLevel : elevationMap[x,​ z]; 
 +        vertices[idx] = new Vector3(x ​meshScale, height, z * meshScale);​ 
 +        colors[idx] ​  = GetBiomeColor(elevationMap[x,​ z], moistureMap[x,​ z]); 
 +    } 
 +
 +</​code>​ 
 + 
 +Triangularea grilei (două triunghiuri per pătrat): 
 + 
 +<code csharp>​ 
 +int a = z * mapWidth + x; 
 +int b = a + 1; 
 +int c = a + mapWidth; 
 +int d = c + 1; 
 + 
 +triangles[triIdx++] = a; 
 +triangles[triIdx++] = c; 
 +triangles[triIdx++] = b; 
 + 
 +triangles[triIdx++] = b; 
 +triangles[triIdx++] = c; 
 +triangles[triIdx++] = d; 
 +</​code>​ 
 + 
 +{{ :​gp:​laboratoare:​result.png?​500 |}}
 ==== Tasks ==== ==== Tasks ====
 +  - Generați harta de elevație și harta de umiditate cu seed-uri diferite, folosind în ambele cazuri multiple octave (6-8).
 +  - Generați culori diferite pentru fiecare biom, folosind tabelul Whittaker.
 +  - Construiți mesh-ul 3D atribuind fiecărui vertex înălțimea și culoarea corectă.
 +  - **Bonus 1.** Implementați algoritmul ''​Diamond Square'',​ pentru a genera un heightmap.
 +
 +<note tip>
 +  - **Inițializare.** Se crează un grid de zerouri. Cele 4 colțuri sunt setate la o valoare aleatoare dintr-un interval predefinit de posibile înălțimi.
 +  - **Pasul Pătrat.** Se calculează punctul din mijloc al fiecărui pătrat, făcând media aritmetică ale celor 4 colțuri la care se adaugă o valoare aleatoare dintr-un interval predefinit.
 +  - **Pasul Romb.** Se calculează punctul din mijloc al fiecărui diamant, făcând media aritmetică ale celor 4 colțuri ale rombului la care se adună o valoare aleatoare din intervalul predefinit de valori aleatoare. În cazul în care rombul este incomplet, se iau în calcul doar colțurile existente în calculul mediei aritmetice.
 +  - **Recursivitate.** Intervalul predefinit de valori aleatoare se înjumătățește. Se reiau pașii pătrat și romb până se aleg calculează toate valorile din grid.
  
 +Resurse: [[https://​www.youtube.com/​watch?​v=4GuAV1PnurU|https://​www.youtube.com/​watch?​v=4GuAV1PnurU]]
 +</​note>​
  
  
gp/laboratoare/05.1774633295.txt.gz · Last modified: 2026/03/27 19:41 by maria_anca.balutoiu
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