TGBEHeightmap - gbegreg/GBE3D GitHub Wiki

TGBEHeightmap

Qu'est ce qu'un heightmap (champ de hauteur)

Une heightmap est une image dont les pixels vont déterminer les coordonnées des sommets du maillage 3D.
Par exemple, voici une image heightmap :
Exemple d'image heightmap

Dans cette image, chaque pixel possède de coordonnées X et Y. Pour en générer un maillage en 3D, nous allons considérer que chaque pixel correspond à un sommet du maillage. Outre ses coordonnées X et Y, la troisième coordonnée nécessaire pour définir un point en 3D sera donnée par la couleur du pixel. Dans notre exemple avec une image en noir et blanc, plus la couleur sera sombre, plus le sommet sera bas et plus la couleur sera blanche, plus il sera haut.

TGBEHeightmap

Le TGBEHeightmap descend du TMesh standard.

Le TGBEHeightmap hérite donc de toutes ses propriétés et ses méthodes auxquelles il ajoute :

  • Flou de type integer : permet d'indiquer un niveau de flou plus ou moins élevé à l'image heightmap afin d'adoucir les aspérité du heightmap final. 0 pas de flou, plus le nombre indiqué sera élevé, plus le flou sera fort.

  • Heightmap de type TBitmap : contient l'image heightmap qui sera utilisée.
    Cette image doit être en noir et plan et carrée (pour l'instant). La taille de cette image déterminera le nombre de mailles qui constituera le maillage. Une image de 128x128 pixels donnera donc 16 384 mailles.
    Attention, car plus il y a de mailles, plus cela réclamera des calculs ce qui pourra nuire sur les performances.
    C'est le canal rouge de la coueur du pixel qui va donner la hauteur du sommet. Il y a donc dans cette version jusqu'à 255 niveaux de hauteur possibles.

  • MaterialLines de type TColorMaterialSource : permet de définir la couleur qui sera utilisée pour le tracé des lignes du maillage (si ShowLines est à true).

  • MaterialSource de type TMaterialSource : permet d'affecter un matériau (couleur, texture, texture réagissant aux sources lumineuses...) à l'objet TGBEHeightmap.

  • ShowLines de type boolean : permet d'afficher ou non les lignes du maillage. Pour que cela soit effectif, il faut également renseigner la couleur qui sera utilisée pour le tracé (cf la propriété MaterialLines ).

  • UseRamp de type boolean : Permet d'appliquer l'image utilisée dans le MaterialSource via la méthode de la rampe. C'est à dire que la couleur de la maille dépend de son altitude.

Quatre méthodes publiques sont également disponibles :

  • procedure loadHeightmapFromFile : cette procédure permet de générer l'objet 3D directement depuis un fichier. La méthode prend en paramètre le nom complet du fichier image à utiliser.

  • procedure loadHeightmapFromStream : cette procédure permet de générer l'objet 3D directement depuis un stream. La méthode prend en paramètre le TStream à utiliser.

  • procedure loadHeightmapFromResource : cette procédure permet de générer l'objet 3D directement depuis une ressource. La méthode prend en paramètre le nom de la ressource.

  • function getHeight(P: TPoint3D): single : cette fonction renvoie un réel correspondant à la hauteur du maillage au point passé en paramètre en tenant compte de la taille et de l'échelle du TGBEHeightmap.

Exemple de rendu

TGBEHeightmap

(cliquez sur l'image pour accéder à la vidéo Youtube)

⚠️ **GitHub.com Fallback** ⚠️