Ce générateur de planètes low poly est un projet réalisé en solo. Il était destiné à être utilisé dans un projet de jeu, aujourd’hui abandonné.Je l’ai développé en C++, et j’ai utilisé Nazara engine pour réaliser le rendu des planètes générées.

Pour réaliser ce générateur, je me suis grandement inspiré de cet article :
http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/

La génération se fait en plusieurs étapes :

  • Construction d’une ICO sphère de base en ajoutant des informations (humidité,offset, biome …) sur chaque sommet.
  • Création d’un premier offset sur les sommets avec un bruit de Perlin 3D, qui permet de définir les zones d’eau et de terre.
  • Les zones d’eau qui s’étendent sur une petite surface sont considérées comme des lacs, les autres des océans.
  • L’altitude du relief est recalculé en chaque point en fonction de la distance du sommet par rapport aux limites avec les océans, en s’assurant de garder les zones de lac à plat.
  • Quand le relief est défini, il est maintenant possible de descendre depuis n’importe quel point, jusqu’à un océan, en suivant les arêtes qui connectent chaque sommet. C’est ainsi que sont tracées les rivières.
  • Le niveau d’humidité d’un point est défini en fonction de sa distance avec la rivière la plus proche.
  • Quand l’humidité et l’élévation des surfaces sont construites, les biomes peuvent être définis.

Avec toutes les informations fournies par le générateur, il est possible de réaliser le rendu de la planète générée, en donnant une correspondance de couleur à chaque biome.

Le projet est accessible sur github : https://github.com/larnin/PlanetGeneration