Differences

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

Link to this comparison view

gp:laboratoare:04 [2025/03/21 22:43]
maria_anca.balutoiu [Cum funcționează?]
gp:laboratoare:04 [2025/03/30 14:51] (current)
maria_anca.balutoiu [Diamond Square Algorithm]
Line 1: Line 1:
-===== Laboratorul 04. Diamond Square Algorithm ​=====+===== Laboratorul 04. Generare Procedurală de Teren ===== 
 +==== Diamond Square Algorithm ====
 Algoritmul Diamond-Square este o tehnică procedurală utilizată pentru a genera heightmaps. Acesta funcționează prin subdivizarea recursivă a unui grid și aplicarea unor perturbări aleatorii pentru a crea variații cu aspect natural. Algoritmul Diamond-Square este o tehnică procedurală utilizată pentru a genera heightmaps. Acesta funcționează prin subdivizarea recursivă a unui grid și aplicarea unor perturbări aleatorii pentru a crea variații cu aspect natural.
  
-==== Cum funcționează? ​====+=== Cum funcționează?​ ===
   - **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.   - **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 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 Diamant.** Se calculează punctul din mijloc al fiecărui diamant, făcând media aritmetică ale celor 4 colțuri ale diamantului la care se adună o valoare aleatoare din intervalul predefinit de valori aleatoare. În cazul în care diamantul este incomplet, se iau în calcul doar colțurile existente în calculul mediei aritmetice.   - **Pasul Diamant.** Se calculează punctul din mijloc al fiecărui diamant, făcând media aritmetică ale celor 4 colțuri ale diamantului la care se adună o valoare aleatoare din intervalul predefinit de valori aleatoare. În cazul în care diamantul este incomplet, se iau în calcul doar colțurile existente în calculul mediei aritmetice.
-  - **Recursivitate.** +  - **Recursivitate.** ​Intervalul predefinit de valori aleatoare se înjumătățește. Se reiau pașii pătrat și diamant până se aleg calculează toate valorile din grid.
-<​hidden>​+
  
-Explicaţie:​+==== Fractal Noise ==== 
 +Pentru a îmbunătăți realismul terenului generat, tereneul se poate genera folosind fractal noise, care combină mai multe straturi de zgomot Perlin la frecvențe și amplitudini diferite.
  
-Inițializare:​ grila este inițializată cu zerouriiar cele patru colțuri sunt setate la o valoare de scară specificată.+<​code>​ 
 +float CalculateFractalNoise(int xint y) 
 +
 +    for (i = 0; i < octaves; i++) 
 +    { 
 +        xCoord = (float)x / width * scale * frequency;​ 
 +        yCoord = (float)y / height * scale * frequency;
  
-Pas de diamant: calculează punctul de mijloc al fiecărui pătrat făcând o medie a celor patru colțuri și adăugând o compensare aleatorie.+        perlinValue = Mathf.PerlinNoise(xCoord,​ yCoord) * 2 - 1; 
 +        noiseHeight += perlinValue * amplitude;
  
-Pas pătrat: calculează punctul de mijloc al fiecărui diamant făcând o medie a punctelor din jur și adăugând o compensare aleatorie.+        amplitude *= persistence;​ 
 +        frequency *= lacunarity;​ 
 +    }
  
-Recursie: Procesul se repetă, înjumătățind dimensiunea pasului șscara de fiecare datăpână când se atinge nivelul dorit de detaliu+    return (noiseHeight + 1) / 2; // Normalize to 0 - 1 
-</hidden>+
 +</​code>​ 
 + 
 +==== Tasks ==== 
 +  - Implementați algoritmul diamond-square. 
 +  - Deformați un terenfolosind fractal noise în Unity
 +  - **Bonus.** Generați procedural multiple biomes. (Puteți porni de la acest exemplu: [[https://​www.youtube.com/​watch?​v=aZyrimErjJ0]])
  
gp/laboratoare/04.1742589804.txt.gz · Last modified: 2025/03/21 22:43 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