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.
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 :
Une image classique codée en 24 bits (8 bits par couleurs) permet de stocker 28 = 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 216 = 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 224 = 16 777 216 hauteurs différentes, ou même 232 = 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[1].
Divers algorithmes permettent la création de champs de hauteur, produisant des terrains fractals dont le but est de ressembler à des terrains naturels :
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[2] ou l'ajout de cours d'eau[3].
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[4].
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 :
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[5],[6]. Chacun permet ensuite la modification du terrain créé avec différents outils de modélisation.
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 :