Présentation du modè utilisé pour les terrains
L'idée ici est de partir d'un terrain composé d'une "heightmap" (carte de hauteurs), tel que souvent utilisé dans les jeux en 2D isométrique, comme par exemple Ultima Online. De cette heightmap, il est possible d'interpoler différemment les points pour en sortir un terrain plus ou moins joli. Le choix qui est généralement fait est de créer un carré (tile) dont le centre est un point de la heightmap, et de le diviser en huit triangles. Chaque triangle est alors lié au point central et aux extrémités de deux voisins de la façon suivante. Les résultats peuvent alors être très triangulés.
Mais une autre méthode bien meilleure graphiquement existe. Elle consiste à créer non pas un tile à partir de 9 points (le point central et ses voisins), mais à partir de 16 points : 4 points pour les 4 coins du carré, et 12 points pour les voisins. On obtient alors une gestion de la heighmap de ce style. On peut alors utiliser un algorithme appelé patch de Bezier pour créer les surfaces de ces tiles. C'est cette méthode que nous avons mise en oeuvre. Elle est certes plus coûteuse en nombre de polygones (de 32 à 512 triangles par tile dans nos tests), mais les résultats sont autrement plus beaux et l'on ne voit plus du tout les limitations entre tiles.
Son principal désavantage est alors la difficulté pour placer des objets sur le sol : la totalité du terrain a tendance à être arrondi, posant alors des problème graphiques si l'on pose un objet à fond plat.
Les sections suivantes relatent la mise en oeuvre de la gestion de heightmap par patchs de Bezier, les problèmes rencontrés, et les leçons que nous avons tiré de son utilisation.