La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

TEXTURES M. NEVEU à partir notamment du cours Siggraph 97 et dautres ….

Présentations similaires


Présentation au sujet: "TEXTURES M. NEVEU à partir notamment du cours Siggraph 97 et dautres …."— Transcription de la présentation:

1 TEXTURES M. NEVEU à partir notamment du cours Siggraph 97 et dautres ….

2 TEXTURES Gain de réalisme Pas « cher » Attacher la texture à lobjet travailler dans lespace de lobjet

3 Textures 2D et 3D Images réelles ou virtuelles Analogies : papier peint (2D), sculpture (3D)

4 PRINCIPE

5 S -1 A

6 Application A

7 Projection selon un axe

8 Projection cylindrique

9 Projection sphérique

10 Projection par Développement

11

12 Application triviale de texture sur un objet paramétrique. (a) et (c) sans transformations, (b) et (d) avec la transformation l = 2.h et = /4 (qui implique h = V2/3). Plus généralement : Application A

13 (a) La texture déformée (b) Application sur la sphère. Déformation de la texture pour ladapter à la paramétrisation de la surface. On utilise une texture déformée (respectant le facteur déchelle 2 :1) Application A : déformation

14 Application A : répétition avec

15 Utilisation dune texture naturelle. (a) Texture de bois. (b) Sphère en bois vue sous son meilleur jour. (c) Pendant ce temps là, de lautre côté de la sphère : discontinuité sur la frontière de recollement. (d) Paramétrisation multiple. Textures cycliques

16 Vecteur réfléchi (environnement mapping) Vecteur normal à la surface (exagère les déformations) Vecteur normal à la surface intermédiaire (atténue les déformations) Centre Surfaces complexes : application intermédiaire

17 Composition application intermédiaire - projection

18 Si P = (1 - α - β).P 0 + α.P 1 + β.P 2 alors Q = (1 - α - β).Q 0 + α.Q 1 + β.Q 2 Cas des facettes on associe à chaque sommet (P0, P1, P2) dune facette des coordonnées (Q0,Q1,Q2) dans lespace des textures

19 Cas des facettes Si on utilise une interpolation similaire à lombrage de Gouraud : ie si P dans lespace de lécran est défini par : P = (1 – α – β).P0 + α.P1+ β.P2 Et quon calcule Q = (1 – α – β).Q0 + α.Q1 + β.Q2 alors erreur projective

20 Problèmes déchelle Petite échelleGrande échelle AtApAt>Ap EcranObjet Texture

21 Facteur de compression d P ij : pixel P uv : polygone correspondant dans lespace texture Ex : d = 1 : le pixel couvre tt lespace texture d = ¼ : le pixel couvre ¼ de lespace texture Taille image = 2 N x 2 N => aire dun pixel A t = 2 -N x 2 -N Facteur de compression dun pixel : Si dd t alors aliasing

22 Pixellisation (u c,v c ) : image du centre de P ij Dans limage T ij, (n.u c,n.v c ) est dans [i,i+1]x[j,j+1] avec i=n.u c et j=n.v c Interpolation bilinéaire Interpolation bicubique

23 Pixellisation Interpolation pour lutter contre la pixellisation. De gauche à droite sur chaque exemple :image pixellisée, interpolation bilinéaire, interpolation bicubique.

24 Sous échantillonnage (aliasing) Mip-Mapping : texture à plusieurs échelles On suppose limage de la texture carrée et de taille 2N × 2N. Changement de résolution le plus simple : construire une image deux fois plus petite. A chaque pixel de limage deux fois plus petite, on associe un bloc de 2×2 pixels sur limage originale de valeur = moyenne des 4 pixels du bloc. La taille de limageest 2k × 2k. A partir de limage T N on construit un ensemble de N + 1 images T k, k de 0 à N Facteur de compression au niveau k : d k = 2 -k

25 Ensemble des images calculées pour le mip- mapping. Stockage optimal du mipmap dune texture couleur (de la figure précédente) en mémoire. Mip-Mapping

26 Mip mapping : couleur dun pixel Pixel courant (u c,v c,d) k c = -log 2 (d) Voisin le plus proche Interpolation bilinéaire Interpolation trilinéaire

27 Technique du mip- mapping appliqué à léchiquier bilinéairetrilinéaire

28 En 3D

29 3D Pour faire des bandes sur la théière de gauche partie entière des x( resp y ou z) de chaque point. Si impair rouge; Si pair blanc.

30 3D Pour faire les anneaux, on prend les coord en x et y (resp x et z, y et z) pour calculer la distance dun point au centre de lobjet + troncature. Si impair rouge; Si pair blanc

31 Bruit Lattice noise : grille de bruit Valeur aléatoire pour chaque ccord entière Si coord entière : lookup table Si coord réelle : interpolation trilineaire Gradient noise : vecteurs de bruit générés pour chaque coord entière Interpolation trilinéaire

32 Bump Mapping/ Displacement Mapping Carte de hauteurs Modification des normales

33 En Opengl placer une image (la texture ) sur un objet image rectangulaire face rectangulaire facile ! échelle ? Répétition de motif? objets à faces non rectangulaires ?

34 Recette créer un Objet-Texture et spécifier la texture à utiliser. choisir le mode de placage de la texture avec glTexEnv[f,i,fv,iv]() Le mode replace remplace la couleur de l'objet par celle de la texture. Le mode modulate utilise la valeur de la texture en modulant la couleur précédente de l'objet. Le mode blend mélange la couleur de la texture et la couleur précédente de l'objet. Le mode decal avec une texture RGBA utilise la composante alpha de la texture pour combiner la couleur de la texture et la couleur précédente de l'objet. autoriser le placage de textures : glEnable(GL_TEXTURE_2D) (ou GL_TEXTURE_1D). spécifier les coordonnées de texture en plus des coordonnées géométriques pour les objets à texturer.

35 coordonnées de texture de 0.0 à 1.0 pour chaque dimension. glTexCoord*(): pour chaque sommet un couple de coordonnées de texture Tout ou partie de la texture

36 Répétition de la texture en dehors de l'intervalle [0.0, 1.0] ? glTexParameter() GL_TEXTURE_WRAP_S « horizontale » GL_TEXTURE_WRAP_T « verticale » GL_CLAMP sans répétition GL_REPEATavec répétition

37 Les Objets-Textures déclarer, nommer et rappeler des Objets-Textures. glGenTextures(GLsizei n, GLuint *textureNames) renvoie n numéros de textures dans textureNames[] glBindTexture(GL_TEXTURE_2D, GLuint textureNames) : –la première fois qu'il est appelé avec une valeur textureNames non nulle, un nouvel Objet-Texture est crée, et le nom textureNames lui est attribué. –avec une valeur textureNames déjà liée à une objet-Texture, cet objet devient actif –avec la valeur zéro, OpenGL arrête d'utiliser des objets-textures et retourne à la texture par défaut, qui n'a pas de nom. glDeleteTextures(GLsizei n,const GLuint *textureNames)efface n objets-textures du tableau textureNames

38 Filtrage si la partie de l'image de texture appliquée sur un pixel est plus petite qu'un texel : agrandissement. si la partie de l'image de texture appliquée sur un pixel contient plus d'un texel : réduction. glTexParameter() spécifie les méthodes d'agrandissement (GL_TEXTURE_MAG_FILTER) et de réduction (GL_TEXTURE_MIN_FILTER) utilisées : –GL_NEAREST choisit le texel le plus proche –GL_LINEAR calcule une moyenne sur les 2x2 texels les plus proches. L'interpolation produit des images plus lisses, mais prend plus de temps à calculer.

39 Niveaux de détail Selon la distance à la caméra taille + ou - importante de l'image de texture utilisée (mipmapping) Soit fournir les images de texture aux différentes tailles (glTexImage2D() à différentes résolutions), ou bien gluBuild2DMipmaps(), qui calcule les images réduites. Et le Filtrage ? Avec les mipmaps, 4 autres filtres : –GL_NEAREST_MIPMAP_NEAREST et GL_LINEAR_MIPMAP_NEAREST utilisent l'image mipmap la plus proche, et dans cette image, le premier choisit le texel le plus proche, et le deuxième réalise une interpolation sur les quatre texels les plus proches. –GL_NEAREST_MIPMAP_LINEAR et GL_LINEAR_MIPMAP_LINEAR travaillent à partir de l'interpolation de 2 mipmaps.


Télécharger ppt "TEXTURES M. NEVEU à partir notamment du cours Siggraph 97 et dautres …."

Présentations similaires


Annonces Google