This is an old revision of the document!


Laboratorul 05. Biome Generator

Generarea procedurală de biomes este o tehnică utilizată pentru a crea lumi virtuale cu zone cu proprietăți geografice distincte (ocean, deșert, junglă, tundră etc.). Fiecare biome este caracterizat de condiții climatice specifice, vegetație și relief. Astfel, în acest laborator se va implementa un sistem simplificat de generare de biomes pornind de la două hărți de zgomot și clasificarea acestora pe baza modelului Whittaker.

Fractal Noise

Pentru a îmbunătăți realismul terenului generat, tereneul se poate genera folosind fractal noise, care combină mai multe straturi (octave) de zgomot Perlin la frecvențe și amplitudini diferite. Fiecare nouă octavă introdusă adaugă un nivel de detaliu:

  • Octava 1: forma generală a terenului (munți, văi)
  • Octava 2: detalii medii (dealuri, platouri)
  • Octava 3+: detalii fine (stânci, denivelări mici)

Parametrii care controlează fBm sunt:

  • Octave: Numărul de straturi de zgomot
  • Persistence: Cât de repede scade amplitudinea
  • Lacunarity: Cât de repede crește frecvența

Exponentul Hurst (H) se calculează din persistence: H = −log₂(persistence). El descrie rugozitatea suprafeței: H aproape de 1 ⇒ teren neted; H aproape de 0 ⇒ teren haotic. Dimensiunea fracțională a suprafeței generate este D = 3 − H.

float FractalNoise(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

gp/laboratoare/05.1774628091.txt.gz · Last modified: 2026/03/27 18:14 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