Un générateur de terrain

Nano-projet de Visu3d
Binôme Kappes-Martineau

une zoulie imache du projet

  • Cékoidon ?
  •        

    Comme son nom l'indique, le générateur de terrain permet de griller le pain.
    Non, je plaisante.
    Le but de ce projet était d'appliquer la triangulation de Delaunay à un ensemble de points de l'espace dont la hauteur est définie par rapport à un plan fixe afin de construire le terrain correspondant. (Le titre initial était "terrain mapping" mais pouvait induire en erreur les fanatiques de texture mapping; "terrain builder" me semble plus approprié).
    La réalisation s'est essentiellement déroulée en Java, VRML n'intervenant pour sa part qu'au moment de l'affichage. À ce sujet notons qu'il est actuellement impossible de faire tourner la chose sur cette page vu l'incapacité (pour le moment ?) de Netscape a l'interpréter.

  • Comment ca marche ?
  •        

    Pour générer le terrain nous nous basons sur un plan dont les dimensions ont arbitrairement été fixées à 400x200 et d'un certain nombre de points (50 dans le cas présent mais aisément modifiable (*) dont les coordonnées ont été tirées au hasard (mais de façon à rester au-dessus du plan tout de même).
    Le terrain proprement dit sera construit au moyen de triangles reliant chacun des points. La difficulté, on s'en doute, naît donc de la façon dont on va relier ces points pour dessiner les triangles; c'est ici qu'intervient l'algorithme de Delaunay.

    (*):cela nécessite quand même outre une modification du source Java d'adapter le fichier VRML pour que le nombre de facettes à construire corresponde.

  • Euh, le quoi de qui ?
  •        

    L'algorithme de Delaunay est la pièce essentielle du programme Java puisqu'il choisit le meilleure construction de triangle possible à partir de l'ensemble de points qu'il reçoit. Par meilleure construction possible j'entends un dessin plus "clair" des triangles en éliminant les faces contenant des angles trop petits.
    Un petit dessin valant mieux qu'un long discours, vous trouverez une applet de démonstration ainsi que de nombreux autres renseignements ici.
    Techniquement, l'"implantation" (ce mot est laid certes mais implémentation n'est toujours pas français) a été réalisée à partir de l'applet Java sus-citée, grâce soit donc rendue à:
    Notons maintenant que l'algorithme fonctionne en 2D, ce qui est assez gênant pour un terrain, sauf si c'est un terrain de football mais ce n'est pas le cas.
    Nous pouvons néanmoins l'utiliser pour générer des triangles "intéressants" en simulant une 2D provisoire par projection des points sur le plan. Ici ce dernier étant xy, il suffit de se débarrasser de la coordonnée z pour ensuite passer un à un nos points "randomisés" à l'algorithme en partant du plus haut pour finir par le plus bas.

  • Et VeuReuMeuLeu dans tout ca ?
  •        

    VRML intervient dans la partie visible (et finale) du projet: le rendu.
    Pour visualiser l'agencement des triangles générés il a été nécessaire d'utiliser un objet au doux nom d'Indexed Face Set dont les champs principaux contiennent une liste de tous les points utilisés et un index décrivant la façon dont ils sont reliés entre-eux. Ici ce dernier champ est fixé et c'est la liste qui est crée par le programme Java et transmise par le biais d'un noeud Script (tout comme la couleur).

  • C'est bôôôôôôôôô
  •        

    Oui hein ? L'essentiel a été dit, pour juger sur pièces il vous est maintenant proposé de télécharger l'archive complète (sources + cette page):
    projet.tar.gz (181Ko)
    Pour faire tourner le projet il vous faudra charger le .wrl dans le viewer de Liquid Reality qui lui-même se lance avec appletviewer (attention à votre CLASSPATH ! Si vous êtes à l'ESSI, jetez un oeil ici avant).

  • C'est tout ?
  •        

    Pour le projet oui, mais plusieurs extensions sont possibles, en voici quelques unes:
    • intégrer une interface permettant de placer les points "à la main" et avoir une construction dynamique en parallèle du terrain dans une autre fenêtre.
    • permettre un remodelage dynamique du terrain (ie: pouvoir le creuser, permettre la suppression de facettes).
    • lui coupler un générateur de chamois pour agrémenter les verts alpages ainsi crées.
    Remarques, critiques et commentaires en tous genres ? Mailez-moi.