# Champ de hauteur

En infographie, un champ de hauteur, ou heightmap sous son appellation anglaise, est une image matricielle stockant un déplacement par rapport à une surface, dans le but de réaliser ensuite un rendu tridimensionnel.

## Principe

Un champ de hauteur classique est une image matricielle ne contenant qu'un seul canal, et est donc souvent visualisé comme une image en nuances de gris. Il est interprété comme un déplacement par rapport à une surface : en particulier le noir représente la distance minimum et le blanc la distance maximale.
Ces distances peuvent être interprétées comme une élévation par rapport à un plan, et permettent alors de représenter une surface, comme un terrain dans les images de synthèse par exemple. Un rendu tridimensionnel peut alors être fait en créant un mesh à partir du champ de hauteur.
Les champs de hauteur sont aussi utilisés dans plusieurs techniques d'infographie permettant de donner du relief à des modèles bi- ou tridimensionnels ou à des textures :
* Bump mapping (ou placage de relief)
* Normal mapping
* Parallax mapping
* Displacement mapping
Une image classique codée en 24 bits (8 bits par couleurs) permet de stocker 2$^8$ = 256 nuances de gris et donc comporter seulement 256 valeurs possibles différentes, ce qui est trop faible pour un relief détaillé. Il est ainsi possible d'utiliser des formats particuliers, par exemple un seul canal mais codé sur 16 bits, permettant alors 2$^{16}$ = 65 536 valeurs différentes. Il est aussi possible de tirer parti des différents canaux de couleurs : pour une image 24 bits, il est ainsi possible d'atteindre 2$^{24}$ = 16 777 216 hauteurs différentes, ou même 2$^{32}$ = 4 294 967 296 si le canal alpha d'une image 32 bits est utilisé. Ces techniques sont surtout utiles quand la hauteur varie beaucoup sur une grande surface. N'utiliser que des nuances de gris pourrait en effet rendre le terrain « plat » par endroits, comme des escaliers.
Une telle image est souvent enregistrée en format RAW, mais ce dernier ne permettant entre autres pas de stocker la taille de l'image, les formats BMP, TGA, ou PNG sont aussi utilisés.

## Génération

Divers algorithmes permettent la création de champs de hauteur, produisant des terrains fractals dont le but est de ressembler à des terrains naturels :
* Algorithme diamant-carré
* Bruit de Perlin
Des traitements additionnels sont souvent ajoutés pour accroître le réalisme des terrains, comme la simulation de l'érosion et de la sédimentation ou l'ajout de cours d'eau.
Un champ de hauteur peut aussi être obtenu par mesure d'un véritable lieu géographique. Ils sont ainsi utilisés dans les systèmes d'information géographique en tant que modèle numérique de terrain.

## Utilisation
### Générateurs de paysages

Des logiciels dits générateurs de paysages permettent de créer des terrains et d'en faire un rendu, notamment en utilisant des champs de hauteur. Entre autres :
* Terragen
* Picogen
* Un lac créé et rendu avec Terragen
* Des montagnes créées et rendues dans Terragen
* Un autre paysage créé et rendu dans Picogen

### Moteurs de jeu

Certains moteurs de jeu permettent l'utilisation de champs de hauteur dans une scène pour importer un terrain. C'est par exemple le cas de Unreal Engine ou encore de Unity, proposant l'importation de champs de hauteur en nuances de gris, 16 bits et au format RAW$^,$. Chacun permet ensuite la modification du terrain créé avec différents outils de modélisation.

### Jeux vidéo

Beaucoup de jeux vidéo 3D utilisent les champs de hauteur pour créer et enregistrer des terrains, rendus ensuite plus réalistes par des cartes de texture. Ce système permet entre autres aux joueurs de créer leurs propres champs de hauteur et donc leurs propres terrains dans le jeu. On retrouve notamment :
* Cities: Skylines
* The Elder Scrolls V: Skyrim