Devoir 3 - Terrain déformable

  • Deadline: 26 janvier 2020, ora 23:55
  • Remarque: Toute information non couverte dans ce document est à votre discrétion!

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 :

  • téléchargement de texture heightmap dans le laboratoire 9
  • création d'un objet de géométrie de support (vous pouvez utiliser l'objet plane50 du framework resources, 'Primitives/plane50.obj')
  • affichage du plan dans la scène, avec le heightmap
  • extraction d'information du texture dans Vertex Shader
  • ajuster la position Y du sommet avec les informations de la heightmap

Bonus possibles

  • Ajout d'un ciel texturé
  • Éclairage (les normes de surface du terrain généré doivent être calculées)

Évaluation (150p)

  • Construction et affichage du terrain (25p)
  • Téléchargement et affichage du heightmap texture (25p)
  • Déformation du terrain dans le VertexShader (100p)

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.

egc/teme/fr/2019/03.txt · Last modified: 2020/01/08 18:42 by alexandru.gradinaru
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0