Environnements Unity HDRP

Terrain, GAEA, végétation, et atmosphère volumétrique

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ètreDescriptionValeur typique
Terrain Width/LengthDimensions horizontales1000m × 1000m
Terrain HeightHauteur maximale600m
Heightmap ResolutionRésolution de la heightmap1025, 2049, 4097
Detail ResolutionRésolution pour l'herbe/les détails1024
Bon à savoir - les résolutions de heightmap doivent être une puissance de 2 plus 1 (513, 1025, 2049, 4097) pour une compatibilité optimale.

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
CreateCréer des grilles de terrain
UtilitiesImport/export de heightmap, découpage, fusion
VisualizationAffichage de debug (heightmap, splatmap)
SettingsRé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.

Important - sans le shader TerrainLit et GPU Instancing activé, les Terrain Layers ne fonctionneront pas correctement.

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).

TypeFormatUsage
HeightmapRAW 16 bitsGéométrie du terrain
Normal MapEXRDétail de surface
MasquesPNG/EXRSplat 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).

SourceType
Quixel MegascansScans photoréalistes
XfrogBibliothèques par biome
Poly HavenGratuit, libre de droits
Botaniq (Blender)Plugin Blender
PlantFactoryGratuit (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.

Bon à savoir - si la végétation disparaît à distance, vérifier que Tree and Details Draw est activé dans les réglages du terrain (Detail Distance, Tree Distance).

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ètreDescription
EnabledActive/désactive le brouillard
ColorCouleur 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 DistanceDistance d'effet maximale
Base HeightHauteur de référence pour une densité constante en dessous
Maximum HeightHauteur au-delà de laquelle la densité chute exponentiellement
Mean Free PathDensité (plus bas = plus dense)
Global Light Probe DimmerAtté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.

LookBottom AltitudeAltitude RangeDensity
Cumulus léger (ciel dégagé)1500m1500m0.3
Stratus dense (couvert)800m600m0.7
Cumulonimbus d'orage600m5000m0.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.

Attention - les nuages volumétriques sont coûteux et incompatibles avec le Path Tracing.

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

ChapitreCompétences couvertes
Ch. 14 - TerrainSystème de terrain de Unity, Terrain Toolbox, Terrain Layers
Ch. 15 - GAEAGénération procédurale, export, import de heightmap
Ch. 16 - VégétationSpeedTree, matériaux de feuillage, LOD, peinture
Ch. 17 - AtmosphèreBrouillard 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.