Table of Contents

Devoir 3 - Terrain déformable

Dans le Devoir 3, vous devez implémenter un terrain déformable.

Construction du terrain

Texture de hauteur

Nous définissons une surface de balayage décrite par la fonction:

$$ f(x,z) = y $$

En raison de la construction, une telle surface peut être directement déterminée par le contenu d'une texture de la manière suivante:

$$ f(x,z) = texture2D(textureUnit,vec2 (u,v)).r $$

où $\{u, v\}$ représente les coordonnées de texture associées aux coordonnées spatiales $\{x,z\}$.

Ces types de textures décrivant les surfaces de balayage sont appelées textures de hauteur ou height maps. Ils contiennent dans chaque pixel une seule information en $[0,255]$ (normalisé $[0,1]$), sur un seul canal, représentant la hauteur de la zone couverte par le pixel respectif. Un exemple d'une telle texture peut être vu ci-dessous.

Géométrie support

Afin de pouvoir créer une surface définie par la hauteur donnée par la texture, une géométrie support est nécessaire qui inclut toutes les coordonnées $\{x,z\}$ finale. Il est également nécessaire que chaque sommet soit associé à une coordonnée de texture, $\{u,v\} \in [0, 1]$, normalisé entre les limites de $x$ et $y$ de la géométrie support.

La géométrie support est dessinée avec un shader spécial qui, à l'étape du vertex shader, accède à la texture dans laquelle se trouvent les hauteurs. En interrogeant la texture, la hauteur est obtenue à partir des coordonnées $\{u,v\}$, associée au sommet. Cette valeur peut être directement associée à la coordonnée y du sommet ou il peut être mis à l'échelle pour un plus grand impact de la terre.

Implémentation

Étapes suggérées pour implémentation :

Bonus possibles

Évaluation (150p)

Archiver le projet

  • l'archive doit normalement contenir toutes les ressources nécessaires à la compilation et à la routine
  • Avant de créer l'archive, assurez-vous de nettoyer le projet
    • faites un clic droit sur le projet dans l' Explorateur de solutions → Nettoyer la solution , ou
    • supprimer le dossier / Visual Studio / obj
  • supprimer le fichier / Visual Studio / Framework_EGC.sdf (s'il existe)
  • supprimer le fichier / Visual Studio / Framework_EGC.VC.db (s'il existe)
  • supprimer le dossier / x64 ou / x86 (s'il existe)
    • l'exécutable final est généré dans le dossier / x86 ou / x64 à la fin de l'édition des liens en fonction de l'architecture sélectionnée pour la compilation (32/64 bits)
  • si l'archive dépasse toujours la limite de 20 Mo (ne devrait pas l'être), vous pouvez également supprimer le dossier / libs ou / Resources car vous pouvez l'ajouter au test. Cela n’est pas recommandé, car il est difficile de vérifier si la version actuelle des bibliothèques / ressources diffère de la version utilisée au moment de la rédaction du thème.