# ISIM - Les textures # Les textures - Objectifs - Ajouter du realisme - Simplifier la modelisation des secenes - Simuler l'eclairage - Applications - Algorithmes temps reels - Algorithmes photorealistes - Types: - Textures procedurales - Textures plaquees - Effet de volume - Eclairage # Les couleurs - Associer une couleur par face - Effet de volume donee par l'illumination - Gouraud - Phong - Associer une couleur par sommet - interpolation - Indiquer les proprietes des materiaux - diffusion - specularite # Les textures plaquees - "Mapper" un bitmap sur un polygone - Realise - Consommation memoire elevee - Comment plaquer une texture? - Sur un plan $\to$ facile - Sur une surface quelconque > - Trouver une fonction - Plaquer la texture suivant un projection simple - Plan - Sphere - Cylindre - Cube - ... - *Conformal map* - Projection: - planar - cylindrical - spherical - triplanar ![](https://i.imgur.com/YHfuC6u.png) - On cree un plan qu'on projette sur le theiere - On cree un cyclindre qu'on projette sur le theiere - On cree une sphere qu'on projette sur le theiere Projections: - triplanar - On le projette en fonction de la normale du point qu'on considere - Permet de dissocier les textures en fonction de l'orientation ![](https://i.imgur.com/uMtJpuj.png) :::warning Pour un personnage (ou objet complexe), on ne trouvera pas de fonction intermediaire. ::: Association texture $\leftrightarrow$ model - On decoupe soi-meme sont modele - Voir quel est le mapping entre le modele decoupe et aplatit et le bitmap qu'on veut mapper ![](https://i.imgur.com/xI9m93P.png) Possible d'avoir un decoupage plus "intelligent". - *Conformal map* ![](https://i.imgur.com/Flmejhk.png) ## Origine du *Bitmap* - Image (photo) ![](https://i.imgur.com/yTmTHZp.png) *Est-ce qu'on peut faire des photos ou des dessins ?* On peut peindre "comme un artiste" les surfaces 3D ![](https://i.imgur.com/dvsiCoC.png) - Resultat d'un rendu (*render to texture*) - Surfaces reflechissantes ![](https://i.imgur.com/8FRHnq9.png) > Ca va ? Pas trop le mal de mer maintenant ? Dans ce cas on map 6 textures sur la sphere - Change quand on bouge la camera - Pour le rendu final on a 6 rendus intermediaires ## "Mapper" un bitmap sur un polygone ![](https://i.imgur.com/RnoootV.png) - Interpolation dependante du $z$ - Repetition de la texture si non compris entre 0 et 1 ### Textures repetitives ![](https://i.imgur.com/lutFT8R.png) *Qu'est-ce qui se passe quand on veut faire un mur de brique ?* - Motif repetitif - On prend un motif qu'on duplique |Avantages|Inconvenients| |-|-| |Economise de l'espace|Le motif peut devenir visible| ![](https://i.imgur.com/YpqipW0.jpg) Pour reduire les inconvenients: - Prendre des *patches* plus petits - Prendre des motifs differents ![](https://i.imgur.com/n9xfw4e.png) :::warning Ce n'est qu'une facon de repousser le probleme ::: ## Mipmap > Si on a notre mur qu'on voit de loin, plein d'artefacts apparaissent - Le but du MIP est d'eviter la pixelisation lorsqu'on s'eloigne d'une texture - Le niveau de detail des textures est adapte a la distance de l'objet - Souvant supporte nativement par les moteurs graphiques ![](https://i.imgur.com/u0QoVOy.jpg) - Lissage - Mip mapping: niveau de detail (LOD) - Point sampling: texel le plus proche - Bilineaire: interpolation sur 4 texels - Trilineaire: interpolation inter-LOD - Anisotropique: prise en compte des effets d'angle (32 texels) ![](https://i.imgur.com/KSmWmtn.png) # Textures procedurales - Texture generee - Avantages: - Economie de memoire - Pas de repetition dans le motif - Possibilite d'avoir une texture 3D - ... - Effets classique: - Damier, - Rayures, - ... ![](https://i.imgur.com/YQ6ZM7h.png) ![](https://i.imgur.com/ImsycN8.png) > Je vous ai fait une espece de bronze ou je ne-sais-quoi - Generation de bruit pour simuler l'aspect de certains elements - Bruit structure ![](https://i.imgur.com/iH0kYt5.png) ## Bruit de Perlin :::info Afin de donner une impression d'organisation, seul un sous enesemble de points est genere aleatoirement. Le reste des points es calcule par interpolation. ::: Ajout d'autres frequences: - $bruit(i,x)=p^{(i-1)}.bruit(2^{(i-1)},x)$ - Parametres: pas, persistance et nombre d'octaves - Resultat: - Somme de l'ensemble des $bruit(i,x)$ ![](https://i.imgur.com/Xte6vUp.png) - 1 octave $p=0.5$ - On interpole (interpolation lineaire) - On prend un autre echantillonage et on interpole avec cette autre matrice $\Leftrightarrow$ 2 tirages aleatoires donc 2$^{eme}$ octave ![](https://i.imgur.com/mhaBfZy.png) - 2 octaves $p=0.5$ ![](https://i.imgur.com/9q26QWz.png) - 5 octaves $p=0.5$ ![](https://i.imgur.com/zEwTNYn.png) - 5 octaves $p=0.8$ ![](https://i.imgur.com/EDeFZHw.png) - 5 octaves $p=0.2$ Applications: - fumee - Interpolation du balanc $\to$ noir ![](https://i.imgur.com/SY1BtBV.png) - ciel/nuages - En dessous d'un certain seuil: Interpolation du gris bleu $\to$ bleu - Au dessus d'un certain seuil: bleu ![](https://i.imgur.com/Xn5V9Qu.png) - bois - En dessous d'un certain seuil, marron fonce - En dessous d'un certain seuil, marron clair - Entre les deux, interpolation ![](https://i.imgur.com/tU1eU7D.png) - psycho... ![](https://i.imgur.com/m3po5XW.png) > A force de jouer avec les couleurs j'ai un peu craque - marbre - $n = 1-\sqrt{\vert\sin(2\pi v)\vert}$ - Interpolation linaire du gris vers le noir en fonction de $n$ ![](https://i.imgur.com/1K4faMk.png) - Generation possible en 3D ![](https://i.imgur.com/ZvGkNnR.png) # Usage des textures ## *Billboard* - Element toujours face a l'observateur sur lequel est plaque une texture - Permet de simuler un objet/phenomene complique simplement a l'aide d'une texture: - Arbre - Feu - ... ![](https://i.imgur.com/VODGjNO.png) # Environnement ::info On peut s'enfermer dans un objet pour avoir notre environnement ::: - *Equirectangular* - Une seule texture pour l'ensemble de l'environnement - *Cubemap* - *Skybox* - On enferme notre personnage dans un cube - Meme resolution pour tous les points - Mettre 6 cameras qui prennent $90^o$ dans une direction ![](https://i.imgur.com/BYu081a.png) ![](https://i.imgur.com/RZEMdvM.png) ![](https://i.imgur.com/xzMTIZ1.png) > In-theiere stellar # Texture particuliere ## Objets transparents - Rendu type *raytracing* - Loi de Snell-Descartes - Rendu par projection *openGL* - Pas de deviation de rayon - Rend tous les objets qui ne sont pas transparents - On verrouille le z-buffer en ecriture avant de dessiner tous les objets transparents - Objets transparents: melanger la couleur de ce qui a deja ete dessine avec l'objet transparent # Textures ## Effet de volume - Perturbation des normales - *Bump mapping* (Blinn) - Permet de faire apparaitre des variation sur la surface ![](https://i.imgur.com/QwFOFQ2.png) ![](https://i.imgur.com/wcmY10o.png) > Realise avec blender > (C'est une mure en haut a droite) *Comment voir que c'est bien juste la perturbation de normale ?* :::success Si on trace les contour, on voit bien qu'ils sont lissent et qu'ils ne vont pas dans les creux de la mure. ::: ![](https://i.imgur.com/K73NjQS.png) Pour aller plus loin: - Parallax mapping - Relief mapping ## Ameliorations :::info La texture permet d'ajouter du realisme et evite de modeliser les details d'une surface. Toutefois le resultat est un peu plat. ![](https://i.imgur.com/FscD9RH.png) ::: Initialement, on plaque un *bitmap* ![](https://i.imgur.com/owUoHlY.png) - Ne pas considerer seulement le *bitmap* - Ajout d'informations: ### 1. Deformations locales - Height map - Carte d'elevation - Normales deduites en faisant une derivee partielle - Normal map - Diminue le niveau de details (polygones) - Stocke dans une image ![](https://i.imgur.com/qx2JQhq.png) ![](https://i.imgur.com/EkvGUZz.png) *Bitmap*: ![](https://i.imgur.com/1UpLHUs.png) *Bitmap + bump mapping*: ![](https://i.imgur.com/tEOXVjP.png) - Tache d'illumination a disparue ### 2. Proprietes locales Ex: specularite ![](https://i.imgur.com/pxeZwOq.png) *Bitmap + bump mapping +* modifications speculaires ![](https://i.imgur.com/7fW4HKZ.png) ## Conclusions - Participe au realimse - Permet la simplification des modeles - Permet de simuler certains objets/phenomenes difficiles