Differences

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

Link to this comparison view

gp:laboratoare:04 [2026/03/23 10:40]
maria_anca.balutoiu [Tasks]
gp:laboratoare:04 [2026/03/27 20:01] (current)
maria_anca.balutoiu [Tasks]
Line 28: Line 28:
   - Generați procedural folosind BSP un dungeon.   - Generați procedural folosind BSP un dungeon.
   - **Bonus.** Generați un dungeon cu minim 3 etaje.   - **Bonus.** Generați un dungeon cu minim 3 etaje.
- 
- 
-<​hidden>​ 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. 
- 
-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. 
-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. 
-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. 
- 
- ​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. 
- 
-float CalculateFractalNoise(int x, int y) 
-{ 
-    for (i = 0; i < octaves; i++) 
-    { 
-        xCoord = (float)x / width * scale * frequency; 
-        yCoord = (float)y / height * scale * frequency; 
- 
-        perlinValue = Mathf.PerlinNoise(xCoord,​ yCoord) * 2 - 1; 
-        noiseHeight += perlinValue * amplitude; 
- 
-        amplitude *= persistence;​ 
-        frequency *= lacunarity; 
-    } 
- 
-    return (noiseHeight + 1) / 2; // Normalize to 0 - 1 
-} 
- 
-Tasks 
- ​Implementați algoritmul diamond-square. 
- ​Deformați un teren, folosind fractal noise în Unity. 
- ​Bonus. Generați procedural multiple biomes. (Puteți porni de la acest exemplu: [[https://​www.youtube.com/​watch?​v=aZyrimErjJ0]])</​hidden>​ 
  
gp/laboratoare/04.txt · Last modified: 2026/03/27 20:01 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