Chapitre 14 : le Terrain de Unity
Ceci est la partie 5 du guide de production Unity HDRP, faisant suite à Partie 4 : rendu avancé. Ce volet couvre les environnements : le système de terrain de Unity, le workflow procédural GAEA, la végétation, et les systèmes d'atmosphère/ciel.
14.1 Le système de terrain de Unity
Unity dispose d'un système de terrain natif optimisé pour les grandes surfaces extérieures, gérant automatiquement le LOD, la tessellation et l'optimisation mémoire. En créer un via GameObject → 3D Object → Terrain. Un nouveau terrain inclut un composant Terrain (rendu et peinture), un Terrain Collider (physique), et un asset Terrain Data (données stockées).
| Paramètre | Description | Valeur typique |
|---|---|---|
| Terrain Width/Length | Dimensions horizontales | 1000m × 1000m |
| Terrain Height | Hauteur maximale | 600m |
| Heightmap Resolution | Résolution de la heightmap | 1025, 2049, 4097 |
| Detail Resolution | Résolution pour l'herbe/les détails | 1024 |
14.2 Terrain Toolbox
Le Terrain Toolbox est un package additionnel qui facilite la gestion de terrain à grande échelle. L'installer via Window → Package Manager → Terrain Tools.
| Fonctionnalité | Description |
|---|---|
| Create | Créer des grilles de terrain |
| Utilities | Import/export de heightmap, découpage, fusion |
| Visualization | Affichage de debug (heightmap, splatmap) |
| Settings | Réglages globaux |
Pour importer une heightmap : Terrain Toolbox → Utilities → Heightmap, sélectionner le fichier (RAW ou PNG 16 bits), configurer dimensions et hauteur, puis Import. Formats supportés : RAW 16 bits (recommandé pour la précision), PNG 16 bits en niveaux de gris, EXR 32 bits.
14.3 Peindre le terrain avec les Terrain Layers
Un Terrain Layer (Assets → Create → Terrain Layer) définit un matériau applicable au terrain : Diffuse (texture Albedo), Normal Map, Mask Map (RGBA : Metallic, AO, Detail, Smoothness), et Tiling.
Le terrain a besoin du shader HDRP/Terrain/TerrainLit : sélectionner le terrain, aller dans Inspector → Terrain Settings → Material, assigner un matériau utilisant TerrainLit, et activer GPU Instancing dans les réglages avancés.
Outils de peinture : Paint Texture (peindre manuellement les couches), Set Height (définir une hauteur absolue), Smooth Height (lisser les variations), Stamp Terrain (appliquer des formes prédéfinies).
14.4 Filtres automatiques
Pour accélérer le texturing, des filtres appliquent les couches automatiquement selon des critères. L'Altitude Filter distribue les textures selon l'élévation (herbe dans les vallées, roche sur les pentes, neige aux sommets). Le Slope Filter distribue les matériaux selon l'inclinaison (terre sur les pentes douces, roche sur les falaises, herbe sur les surfaces plates). Le mode Scatter (dans les réglages du pinceau) donne une dispersion aléatoire qui évite les motifs répétitifs - le combiner avec des valeurs d'opacité et d'espacement variables.
Chapitre 15 : le workflow GAEA
15.1 Introduction à GAEA
GAEA (QuadSpinner) est un logiciel de génération de terrain procédural utilisé dans l'industrie du jeu et du cinéma, construit sur un système de nœuds pour une création non destructive. La modélisation procédurale offre de vrais avantages : vous pouvez revenir en arrière et changer n'importe quoi à tout moment, les éditions sont non destructives, vous pouvez générer des variations infinies, et le workflow est visuel et clair. La recette de base est généralement Bruit → Filtre → Masques. Les interfaces à base de nœuds apparaissent dans chaque outil professionnel (Houdini, Substance, Nuke) - chaque nœud est une opération, et les connexions définissent le flux de données.
15.2 Construire un terrain
Nœuds de base (primitives) : Perlin (bruit de Perlin classique), Voronoi (motifs cellulaires), Mountain (formes de montagne), Dunes (formations de dunes), SlopeNoise (bruit piloté par la pente).
Nœuds modificateurs (filtres) : Erosion (simulation d'érosion hydraulique), Thermal (érosion thermique), Terrace (terrassement), Smooth, Sharpen (renforcement du détail).
Nœuds de combinaison : Combine (fusionne deux terrains), Blend (mélange contrôlé), Mask (combinaison pilotée par masque).
Exemple concret - un terrain type falaise : SlopeNoise pour une base inclinée, Cells pour ajouter des formations rocheuses, Mask pour contrôler où elles apparaissent, Erosion pour une finition naturelle, Combine pour assembler la falaise et son détail.
15.3 Exporter vers Unity
Avant d'exporter, marquer les nœuds de sortie avec F3 (marqués d'un point jaune).
| Type | Format | Usage |
|---|---|---|
| Heightmap | RAW 16 bits | Géométrie du terrain |
| Normal Map | EXR | Détail de surface |
| Masques | PNG/EXR | Splat mapping |
Réglages d'export : Resolution 1025/2049/4097, format Heightmap RAW 16 bits, format de texture EXR ou PNG 16 bits, Range Full (0-1). Pour importer dans Unity : Terrain Toolbox → Utilities → Import Heightmap, sélectionner le fichier RAW, faire correspondre les dimensions de GAEA, et importer les masques comme textures pour le splat mapping.
15.4 Splat mapping avancé
Les masques exportés depuis GAEA permettent un texturing automatique : les importer comme textures, construire un shader personnalisé ou utiliser les outils de peinture, et assigner les Terrain Layers par canal de masque - une convention courante est R = roche, G = herbe, B = terre, A = neige.
Chapitre 16 : la végétation
16.1 Sources de végétation
SpeedTree est la solution professionnelle pour la végétation temps réel et cinématique, exportable en .ST natif (intégration automatique, LOD et vent - direct dans Unity) ou .FBX universel (nécessite une configuration manuelle).
| Source | Type |
|---|---|
| Quixel Megascans | Scans photoréalistes |
| Xfrog | Bibliothèques par biome |
| Poly Haven | Gratuit, libre de droits |
| Botaniq (Blender) | Plugin Blender |
| PlantFactory | Gratuit (e-on) |
16.2 Importer des assets SpeedTree
Pour le format natif .ST : déposer le fichier dans le projet, et Unity génère automatiquement des matériaux HDRP/Nature/SpeedTree, un LOD Group configuré, et des animations de vent - il est alors directement utilisable dans l'outil de peinture de terrain.
Pour .FBX : l'importer, Extract Materials dans les réglages d'import, puis configurer les matériaux (activer Alpha Cutout pour les feuilles, activer Double Sided/Two Sided), Unpack Completely le prefab si nécessaire, et ajouter manuellement un LOD Group.
16.3 Configuration du matériau de végétation
Pour le feuillage sur le shader Lit : Surface Type Opaque avec Alpha Clipping activé (Threshold ~0.5), Double Sided (Global Settings ou Two Sided), et Material Type réglé sur Subsurface Scattering ou Translucent.
Un profil de diffusion calibré pour les feuilles : Scattering Distance autour de 0.5mm (bas), Transmission élevée (la lumière traverse), teinte verte. Pour simuler la lumière traversant des feuilles à contre-jour, utiliser le profil de translucence intégré Foliage de Unity.
16.4 Optimisation : le LOD
Le Level of Detail réduit la complexité géométrique selon la distance : LOD0 (pleine résolution, proche), LOD1/LOD2... (résolution décroissante), Billboard (un sprite 2D, très lointain), Culled (invisible au-delà d'une distance définie). Configurer un composant LOD Group en assignant des maillages à chaque niveau et en réglant les seuils de transition (en pourcentage de la taille écran). Le dernier niveau de LOD est souvent un billboard - une simple image 2D faisant face à la caméra, permettant à des milliers d'arbres lointains de se rendre à moindre coût.
16.5 Peindre la végétation sur le terrain
Paint Trees : sélectionner le terrain, ouvrir Paint Trees dans l'Inspector, Edit Trees → Add Tree, assigner le prefab d'arbre, puis peindre. Paramètres : Brush Size, Tree Density, Tree Height (variation), Random Rotation.
Paint Details (herbe et petits éléments) : Paint Details → Edit Details → Add Detail Mesh, assigner le maillage d'herbe, configurer densité et réglages.
16.6 HDRP Projector Decal pour le détail
L'outil HDRP Projector Decal ajoute du détail environnemental à coût de performance minimal : litière de feuilles au sol, lierre sur les murs, mousse sur les rochers, traînées de pluie. Créer via GameObject → Rendering → Decal Projector.
Chapitre 17 : atmosphère et ciels
17.1 Le brouillard volumétrique
Le Volumetric Fog simule la diffusion de la lumière à travers l'atmosphère à intervalles réguliers dans l'espace vide, indépendamment de la géométrie de surface - un véritable rendu atmosphérique physiquement basé, pas l'ancien brouillard exponentiel. Il doit être activé à deux endroits séparés avant que quoi que ce soit n'apparaisse : HDRP Asset → Lighting → Volumetrics (c'est ce qui alloue la grille de voxels 3D que HDRP utilise pour le calcul, typiquement 240×135×64 voxels à 1080p), et HDRP Global Settings → Frame Settings (Default Values) → Camera, où Fog et Volumetrics doivent tous deux être cochés. Oublier la deuxième bascule est la cause la plus courante de « le brouillard ne fait rien » - la case Fog seule n'active que le simple brouillard exponentiel, pas le système volumétrique.
Ajouter l'effet via un Sky and Fog Volume global (GameObject → Volume → Sky and Fog Volume), avec Is Global coché pour qu'il affecte chaque caméra sans que HDRP ait besoin de calculer les bornes de volume ou le blending - l'option la moins coûteuse pour une atmosphère extérieure constante.
| Paramètre | Description |
|---|---|
| Enabled | Active/désactive le brouillard |
| Color | Couleur de base du brouillard |
| Fog Attenuation Distance | À quelle vitesse la densité augmente avec la distance caméra - plus bas signifie un brouillard plus épais plus tôt |
| Max Fog Distance | Distance d'effet maximale |
| Base Height | Hauteur de référence pour une densité constante en dessous |
| Maximum Height | Hauteur au-delà de laquelle la densité chute exponentiellement |
| Mean Free Path | Densité (plus bas = plus dense) |
| Global Light Probe Dimmer | Atténue l'éclairage ambiant |
Le brouillard global de HDRP est un brouillard de hauteur (height fog) : densité constante sous Base Height, chute exponentielle au-dessus - le même gradient piloté par la gravité qui rend l'atmosphère réelle plus dense près du sol. C'est un motif qui vaut la peine d'être retenu au-delà du seul brouillard ; les particules sous-marines, la brume de chaleur et des effets similaires utilisent la même logique de densité verticale.
Pour les god rays, activer Volumetric sur la lumière elle-même (Volumetric Dimmer 1.0, Shadow Dimmer autour de 0.75 pour adoucir les ombres à l'intérieur du brouillard) et l'angler - un soleil à environ 35-50° d'élévation frappant le brouillard latéralement produit des faisceaux visibles ; directement au-dessus, il diffuse bien moins du point de vue de la caméra. Le paramètre Anisotropy propre au brouillard façonne cette diffusion : de petites valeurs positives (0 à 0.125) favorisent la diffusion avant et font lire les faisceaux plus clairement vers le spectateur, des valeurs négatives diffusent la lumière à l'écart et assombrissent le brouillard ; une atmosphère réaliste a rarement besoin de valeurs hors de ±0.25. Les Spot lights fonctionnent de la même façon pour les faisceaux intérieurs (torche, rayon de fenêtre) - garder le volumétrique sur 2-4 lumières « héros » et le désactiver sur les fill lights, puisque chaque lumière volumétrique coûte du temps GPU réel et le brouillard reçoit de toute façon leur contribution non volumétrique.
Pour une poche de brouillard contenue plutôt qu'une atmosphère uniforme - une porte, le fond d'une vallée, un coin où la brume s'accumule - utiliser un Local Volumetric Fog (GameObject → Rendering → Local Volumetric Fog), dimensionné comme une boîte et réglé nettement plus dense (Fog Distance plus bas) que le brouillard global pour qu'il se lise comme une couche distincte, avec Blend Distance adoucissant les bords de la boîte. Une Density Mask Texture (des échantillons de bruit 3D sont livrés avec le package HDRP sous Samples) casse cette densité uniforme en un brouillard tourbillonnant et d'aspect organique plutôt qu'un volume plat - la chute Exponential convient aux effets organiques comme la brume ou la poussière, Linear convient aux sources mécaniques comme une bouche d'aération ou une cheminée.
17.2 Ciels dynamiques
Le HDRI Sky utilise une image HDR panoramique pour l'éclairage et l'arrière-plan : Volume → Add Override → HDRI Sky, assigner une texture HDRI (Cubemap ou Lat-Long), puis ajuster Rotation, Exposure et Multiplier. Bonnes sources HDRI : Poly Haven, HDRI Haven, ambientCG.
Le Physically Based Sky simule physiquement l'atmosphère terrestre - Type (Earth Simple, Earth Advanced), Ground Color, Air Maximum Altitude - et réagit automatiquement à la position de la Directional Light (le soleil).
Le Gradient Sky est un simple dégradé à trois couleurs (Top, Middle, Bottom).
17.3 Systèmes de nuages
HDRP propose deux systèmes de nuages véritablement différents, et choisir le bon compte plus que bien régler l'un ou l'autre. Le Cloud Layer rend une texture 2D lat-long sur la skybox - simple blending alpha, aucun coût volumétrique (bien en dessous de 0.5ms GPU), animable via une flowmap, avec des ombres projetées via un light cookie. Il n'a pas de véritable profondeur (la caméra ne peut pas y voler à l'intérieur), n'interagit pas avec le brouillard volumétrique, et les ombres ne s'auto-ombrent pas. C'est le bon choix pour les jeux ancrés au sol (FPS, TPS, RTS), le mobile ou la VR avec un budget GPU serré, et les couches de nuages d'arrière-plan lointaines - souvent combiné avec Volumetric Clouds pour ceux proches de la caméra.
Les Volumetric Clouds (Volume → Add Override → Volumetric Clouds) sont un véritable volume 3D, ray-marché avec du bruit procédural multi-échelle et une accumulation temporelle sur plusieurs images pour un éclairage réel - diffusion interne, auto-ombrage sur le terrain, et interaction complète avec le brouillard et les lumières volumétriques. Ce réalisme coûte 5-15ms à 1080p selon la qualité, nécessite un vrai réglage par type de nuage, et peut montrer des artefacts temporels (ghosting, scintillement). Ce coût en vaut la peine pour les jeux avec vol, les cinématiques haute qualité, et tout ce qui nécessite que les nuages réagissent à un éclairage dynamique - PC/console uniquement en pratique.
Les deux paramètres de forme clés sont Bottom Altitude (où commence la couche de nuages - à garder cohérent avec l'échelle propre de votre scène, sinon les nuages finissent invisibles très haut) et Altitude Range (épaisseur de la couche - fine pour des stratus, haute pour des tours d'orage), aux côtés de Density Multiplier, Shape Factor et Erosion Factor pour définir à quel point les nuages paraissent solides ou vaporeux. Un réglage réaliste par défaut se situe autour de Density 0.3-0.5, Shape 0.8-0.95, Erosion 0.4-0.7.
| Look | Bottom Altitude | Altitude Range | Density |
|---|---|---|---|
| Cumulus léger (ciel dégagé) | 1500m | 1500m | 0.3 |
| Stratus dense (couvert) | 800m | 600m | 0.7 |
| Cumulonimbus d'orage | 600m | 5000m | 0.9 |
Le vent pilote l'animation via les réglages de vent globaux de l'override Visual Environment, et pour les scènes combinant les deux systèmes, garder Cloud Layer pour le ciel lointain et réserver le budget GPU de Volumetric Clouds à ce qui est réellement proche de la caméra.
17.4 Visual Environment
L'override de Volume Visual Environment définit quel système de ciel et de brouillard est actif : Sky Type (HDRI, Physically Based, Gradient, etc.), Sky Ambient Mode (Static, Dynamic), Wind Orientation (direction pour les nuages et le brouillard).
Résumé de la partie 5
| Chapitre | Compétences couvertes |
|---|---|
| Ch. 14 - Terrain | Système de terrain de Unity, Terrain Toolbox, Terrain Layers |
| Ch. 15 - GAEA | Génération procédurale, export, import de heightmap |
| Ch. 16 - Végétation | SpeedTree, matériaux de feuillage, LOD, peinture |
| Ch. 17 - Atmosphère | Brouillard volumétrique, ciels, HDRI, nuages |
Points clés à retenir : le shader TerrainLit avec GPU Instancing est obligatoire pour le terrain HDRP ; GAEA offre une création procédurale puissante avec un chemin d'export propre vers Unity ; la végétation nécessite Alpha Cutout, Double Sided et généralement SSS/Translucent ; le LOD est essentiel pour la performance avec une végétation lourde ; le brouillard volumétrique ajoute profondeur et atmosphère ; et les HDRI sont la voie la plus rapide vers un éclairage d'environnement réaliste.
La partie 6, prochainement, couvre la production et l'export : le système d'animation, Timeline et Cinemachine, et l'export final.