Rapport Génération de Terrain Procedural

Rapport Technique : Système de Terrain Procédural Infini

Projet : Operation Dragoon - Beneath the Sand

Date : 9 Décembre 2025

Auteur : Ilyas Ghandaoui

Depo git des scripts : https://github.com/ilyasgdo/procedural-generation-and---volumetric-cloud/tree/main/ARessourcesPlaneScene/Scripts


Introduction

Ce rapport détaille l’implémentation technique d’un système de terrain procédural infini pour Unity. Le système combine des techniques avancées de génération procédurale, d’optimisation de mémoire et de rendu adaptatif pour créer un monde ouvert en temps réel.


1. Architecture Globale du Système

1.png

Inventaire des Fichiers (17 scripts C#)

CatégorieFichiersLignes de Code
CoreChunkManager, TerrainChunk, CoordinateUtils~590
TerrainNoiseGenerator, MeshGenerator~345
BiomesBiomeGenerator~235
VégétationVegetationPlacer, LSystemParser, TreeMeshGenerator~930
GrottesCellularAutomata, MarchingCubes, MCTables~585
Total12 fichiers~2685 lignes

2. Système de Chunks Infinis

2.1 Principe du Monde Infini

Le monde est divisé en chunks de taille fixe (240×240 unités) qui sont générés et détruits dynamiquement autour du joueur.

2.png

2.2 Système de Coordonnées

3.png

ConstanteValeurDescription
CHUNK_SIZE240 unitésTaille de chaque chunk
viewDistanceInChunks5Chunks visibles par direction
updateInterval0.25sInterval de mise à jour

2.3 Object Pooling

Technique d’optimisation mémoire pour réutiliser les chunks au lieu de les détruire/recréer.

4.png

Avantages :

  • Zéro allocation pendant le jeu
  • Réduction du garbage collection
  • Temps de création de chunk réduit

3. Système LOD (Level of Detail)

3.1 Résolutions Multiples

Le système génère des maillages à 5 niveaux de détail différents.

5.png

LODRésolutionVertices/ChunkDistance Max
0241×24158 081300m
1121×12114 641600m
261×613 7211000m
331×319611500m
413×131692500m+

3.2 Algorithme de Sélection LOD

6.png

3.3 Cache de Maillages

Chaque chunk maintient un tableau de maillages pré-calculés pour éviter la régénération.

7.png


4. Génération de Bruit Procédural

4.1 Bruit de Perlin avec Seed

Base de la génération de hauteur avec décalage par seed pour variété.

8.png

4.2 Fractal Brownian Motion (FBM)

Superposition de couches de bruit à fréquences croissantes.

9.png

ParamètreValeurDescription
octaves8Nombre de couches de détail
persistence0.5Réduction d’amplitude par octave
lacunarity2.0Multiplication de fréquence
scale0.002Échelle globale du bruit
heightMultiplier300Amplitude maximale du terrain

4.3 Domain Warping (Déformation de Domaine)

Technique avancée qui déforme l’espace avant l’échantillonnage pour créer des formes plus organiques.

10.png

Effet : Crée des crêtes sinueuses et des vallées moins régulières que le bruit standard.

ParamètreValeurDescription
warpStrength50Intensité de la déformation
warpScale0.001Échelle du bruit de déformation

4.4 Courbe de Hauteur (AnimationCurve)

Remapping non-linéaire des valeurs de bruit pour sculpter le profil du terrain.

Effet : Plus de terrain plat à basse altitude, montagnes abruptes aux valeurs hautes.

11.png


5. Système de Biomes par Voronoi

5.1 Diagramme de Voronoi

Partitionne l’espace en cellules, chacune avec un biome déterministe.

12.png

5.2 Types de Biomes

13.png

5.3 Blending Entre Biomes

Le système calcule des poids pour une transition douce via les vertex colors.

14.png

ParamètreValeurDescription
cellSize500mTaille des cellules Voronoi
blendDistance100mZone de transition
snowHeight250mAltitude début neige
rockSlopeThreshold0.4Pente forçant la roche

6. Génération de Maillage

6.1 Pipeline de Génération

15.png

6.2 Calcul des Normales par Face

16.png

Moyenne des normales des faces adjacentes pour chaque vertex.

6.3 Données de Pente (UV2)

Stocke pente et hauteur normalisée pour le shader de terrain.

Canal UV2DonnéeCalcul
XPente1 - abs(dot(normal, up))
YHauteur normalisée(y - minY) / range

6.4 Interpolation Bilinéaire des Hauteurs

Pour le placement d’objets entre les vertices du maillage.

17.png


7. L-Systems pour Arbres Procéduraux

7.1 Grammaire L-System

Système de réécriture de chaînes avec règles stochastiques.

18.png

7.2 Règles Stochastiques

Plusieurs remplacements possibles avec probabilités.

PresetSymboleRemplacements
SimpleTreeXF[+X][-X]FX (33%), F[+X]FX (33%), F[-X]FX (33%)
BushyTreeXF-[[X]+X]+F[+FX]-X (50%), F+[[X]-X]-F[-FX]+X (50%)
PineTreeXF[+X]F[-X]+X (50%), F[-X]F[+X]-X (50%)

7.3 Alphabet Turtle Graphics

19.png

7.4 Interpréteur Turtle 3D

20.png

7.5 Génération de Géométrie

21.png

Paramètres de Branches :

ParamètreValeurDescription
branchLength2.0Longueur de base
branchRadius0.15Rayon initial
radiusDecay0.85Réduction par niveau
branchSegments6Faces du cylindre

8. Automates Cellulaires 3D

8.1 Règles Type “Game of Life”

Génère des structures de grottes organiques en 3D.

22.png

8.2 Paramètres de Grotte

ParamètreValeurDescription
initialFillProbability0.45% initial de cellules solides
smoothingIterations5Passes de lissage
birthLimit13Voisins pour devenir solide
deathLimit14Voisins pour rester solide

8.3 Génération d’Arches

Méthode spéciale pour tunnels traversables.

23.png


9. Marching Cubes

9.1 Principe de l’Algorithme

Convertit une grille de voxels booléens en maillage polygonal.

24.png

9.2 Index de Cube (8 bits)

25.png

9.3 Tables de Lookup

TableTailleContenu
EdgeTable256 entréesBitmask des 12 arêtes intersectées
TriTable256×16Liste des triangles (indices d’arêtes)

9.4 Numérotation des Arêtes

       4----4----5
      /|        /|
     7 |       5 |
    /  8      /  9
   7----6----6   |
   |   |     |   |
   |   0----0|---1
  11  /      10 /
   | 3        | 1
   |/         |/
   3----2----2

10. Système de Végétation

10.1 Placement Dynamique

26.png

10.2 Types d’Arbres par Biome

27.png

BiomeTypes PrincipauxProbabilités
GrasslandOak (35%), Birch (25%), Bush (40%)
DesertPalm (70%), Bush (30%)
RockyPine (65%), Bush (35%)
SnowPine (65%), Bush (35%)

10.3 Génération de Forêts

28.png

ParamètreValeurDescription
maxTrees120Arbres individuels max
maxForests8Forêts max
treesPerForest25Arbres par forêt
forestRadius80mRayon de forêt
minTreeDistance12mEspacement minimum

11. Synthèse des Techniques Avancées

29.png


12. Tableau Récapitulatif des Complexités

TechniqueComplexité CalculComplexité MémoireFichier
FBMO(octaves) par sampleO(1)NoiseGenerator.cs
Domain WarpingO(2 × FBM)O(1)NoiseGenerator.cs
VoronoiO(9 cellules)O(1)BiomeGenerator.cs
Mesh GenerationO(vertices²)O(vertices)MeshGenerator.cs
LOD SwitchO(1)O(5 meshes/chunk)TerrainChunk.cs
L-SystemO(string length × iterations)O(string)LSystemParser.cs
Cellular AutomataO(voxels × iterations)O(voxels)CellularAutomata.cs
Marching CubesO(voxels)O(triangles)MarchingCubes.cs
Object PoolingO(1) réutilisationO(pool size)ChunkManager.cs

13. Performances Estimées

OpérationTemps TypiqueFréquence
Génération Chunk (LOD 0)~50-100msÀ la demande
Switch LOD~5-10ms0.25s interval
Spawn Arbre~2-5ms4/update
Marching Cubes (50³)~20-40msÀ la demande
Cellular Automata (5 iter)~10-20msÀ la demande

Conclusion

Ce système de terrain procédural implémente 24 techniques avancées réparties en 6 catégories :

  1. Gestion de Chunks : Pooling, LOD multi-niveaux, distance culling
  2. Bruit Procédural : FBM, Domain Warping, Height Curves
  3. Biomes : Voronoi, blending par poids, overrides pente/altitude
  4. Maillage : Multi-résolution, normales, UV2 slope data
  5. Végétation : L-Systems stochastiques, Turtle Graphics 3D
  6. Grottes : Automates cellulaires 3D, Marching Cubes

Le système offre un équilibre optimal entre qualité visuelle et performance temps réel pour un simulateur de vol.

0 items under this folder.