GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 10 Textures –Définir la texture –Superposition d’une texture sur une surface plane –Superposition.

Slides:



Advertisements
Présentations similaires
Technique des Surfels Surfels: Surface Elements as Rendering Primitives SIGGRAPH 2000 H.Pfiste, J.van Baar, M.Zwicker, M.Gross.
Advertisements

Transition image classique image numérique
à partir notamment du cours Siggraph 97 et d’autres ….
C.
Systèmes d’exploitation
INF-1019 Programmation en temps réel
GIF Qualité et performance du rendu en infographie
CSI3525: Concepts des Langages de Programmation Notes # 12: Implementation des Sous-Programmes ( Lire Chapitre 9 )
Concepts avancés en mathématiques et informatique appliquées
Transformations de visualisation en OpenGL
Administration de bases de données spatiales avec SavGIS
Création d'un diaporama Création d'un diaporama
SUJETS SPÉCIAUX EN INFORMATIQUE I PIF Contenu du cours Transformations géométriques des objets –Transformations 2D –Transformations entre systèmes.
EFICN SW METHODOLOGIE Ouvrir un nouvel assemblage
GRAPHISME PAR ORDINATEUR
Gestion des événements liés à la fenêtre et aux périphériques dentrée.
FICHIERS : Définition : Algorithme général:
Modélisation géométrique à l’aide d’un maillage
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Visualisation de surfaces décrites analytiquement
IFT3730: Infographie 3D Textures
IFT3730 : Infographie 3D Systèmes et modèles graphiques Pierre Poulin, Derek Nowrouzezahrai Hiver 2013 DIRO, Université de Montréal.
IFT2740 : Outils de l'infographie 3D Systèmes et modèles graphiques
PIF-6003 Sujets spéciaux en informatique I
Standard Template Library
Interprétation automatique
Application de texture en OpenGL
Texture 2D en PGC++.
Représentation et traitement des images en OpenGL
PROTOTYPE D’UN PROGRAMME ÉCRIT EN C++ BASÉ SUR OPENGL
Projet Télédétection Vidéo Surveillance Deovan Thipphavanh – Mokrani Abdeslam – Naoui Saïd Master 2 Pro SIS / 2006.
Création d’une application complète
Modélisation géométrique
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
GRAPHISME PAR ORDINATEUR
Projet Lancer de Rayons
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
Programmation Création d’une mire 1 afficher une image
Les outils graphiques Ce sont des programmes avec les quel on peut modifier ou créer differentes sorte d’images ou videos,sert a la création,manipuler.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Performance de circuits.
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 10 Textures –Définir la texture –Superposition d’une texture sur une surface plane –Superposition.
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 6 Transformation et animation de plusieurs modèles 3D avec XNA –Chargement des modèles 3D (modèle.
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 8 Rendu de surfaces –Modèles de rendu de surfaces –Illumination de la scène –Sources lumineuses –Composante.
Romain Dupont encadré par J.Aubourg et P. Fuchs
Architecture et Fonctionnement d’un GPU Géométrie Rendu.
Éléments de présentation
Comprendre le SGBDR Microsoft Access – partie 2
Les outils graphiques Permet de traiter ces dessin Manipuler des formes, des photos Modifier les vidéo 3 D.
Visualisation des flots optiques en 3D
Les outils graphiques Qu’est-ce qu’un outil graphique?
Conception des pages Web avec
GRAPHISME PAR ORDINATEUR
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 2 Introduction à XNA –Installation de XNA 4.0 –Premier projet –Gestion des ressources (images, vidéo.
Traitement du signal (images) u Sujets –Détection des droites –Transformée de Hough (espace paramétré) *avec la pente et l’ordonnée à l’origine *avec.
Utilisation des formules de base
Qu’est-ce qu’un outil graphique?
Scénario Les scénarios permettent de modifier la position, taille … des calques au cours du temps. Son fonctionnement est très proche de celui de Macromedia.
DREAMWEAVER Première séance Villaron Audrey – Shibly Tarek.
Dreamweaver le retour Avec Les Formulaires Les Calques
Les formulaires Les calques Les comportements Les scénarios Les modèles Les feuilles de styles (CSS) La mise en ligne Les formulaires permettent à l’utilisateur.
SI28 Flash séance 1 Dessins et Animations. Présentation de Flash  Création d’animations pour le Web, pouvant contenir une forte interactivité.  Faible.
EXPOSE FLASH 2 SI 28 24/10/2006 Delphine GODREAU Hélène PERRIER.
SI 28 - Présentation Image Ready Aurélie Letenoux GSU 4.
Elise Pierrot, GSU04 ImageReady, traitement d’image pour le WEB Présentation SI28.
Dreamweaver 2 Feuilles de Style CSS Formulaires Calques Comportements
Les calques Les Template (modèles) Les Comportements Les scénarios Les formulaires Les CSS Le serveur Web de l’UTC Présentation.
INF2005– Programmation web– A. Obaid Les cartes. INF2005– Programmation web– A. Obaid Images cliquables Outil permettant d'effectuer des liens à partir.
GRAPHISME PAR ORDINATEUR
Transcription de la présentation:

GRAPHISME PAR ORDINATEUR SIF-1032

Contenu du cours 10 Textures –Définir la texture –Superposition d’une texture sur une surface plane –Superposition d’une texture sur une surface courbe Lectures (Chapitre 8) Site NeHe: Leçons 6 et 7 NeHe’s OpenGL Tutorials: Chapitres 6 et 7 OpenGL Programming Guide: Chapitre 9 Textures (OpenGL 3.3+)

Textures Les textures 2D sont généralement des images de format.bmp Les textures 2D servent à remplacer des surfaces de géométrie complexe (ex: briques sur des murs) La superposition des textures sur des surfaces consiste à projeter l ’espace de la texture représentée par des coordonnées (s,t) dans un plan dont les coordonnées sont données par des triplets (x,y,z)

Textures Exemples de superposition de textures 2D sur des surfaces (Voir leçon 6 de NeHe)

Textures Exemples de textures 2D (image.bmp, générée)

Textures Superposition des textures: transformation de l’espace des textures vers l’espace des surfaces Texture/World World/Screen

Textures Superposition des textures: transformation de l’espace des textures vers l’espace des surfaces

Textures Superposition des textures: transformation de l’espace des textures vers l’espace des surfaces Transformation spatiale Affectation de la couleur (x, y,z) SURFACE TEXTURE

Textures Définir les textures images 2D (voir leçon 6) texture[]: une liste de pointeurs de texture

Textures Définir les textures images 2D (voir leçon 6) AUX_RGBImageRec *texture1 crée un enregistrement pour le premier bitmap chargé et utilisé comme texture. Cet enregistrement contient les données RGB de l’image.bmp auxDIBImageLoad() charge l’image.bmp (ex: NeHe.bmp) et la stocke dans l’enregistrement texture1

Textures Définir les textures images 2D (voir leçon 6) glGenTextures(1, &texture[0]) indique à OpenGL que nous voulons construire une texture et qu’elle soit stockée dans l’entrée 0 de texture[] glBindTexture(GL_TEXTURE_2D, texture[0]) indique à OpenGL que texture[0] (la première texture) sera une texture 2D glBindTexture() permet à OpenGL de pointer sur une zone mémoire où sera stockée la texture (&texture[0]). À la création de la texture elle est stockée dans cet emplacement de mémoire. Après, si un lien à la mémoire est effectué, OpenGL lira la texture correspondante à partir de cet emplacement de mémoire RAM

Textures Définir les textures images 2D (voir leçon 6) Ces fonctions permettent de spécifier le type de filtrage utilisé quand l’image est plus grande (GL_TEXTURE_MAG_FILTER) à l’écran que la texture l’est en réalité, ou quand l’image est plus petite (GL_TEXTURE_MIN_FILTER) sur l’écran comparativement à la texture GL_LINEAR donne un aspect lisse à notre texture de proche ou de loin à l’écran. L’utilisation du paramètre GL_LINEAR se traduit par une charge de travail importante pour la carte vidéo ce qui peut ralentir notre système GL_NEAREST donne une texture beaucoup moins lisse et quand elle est agrandie à l’écran les formes de la texture deviennent carrée

Textures Définir les textures images 2D (voir leçon 6) Création de la texture. Indique à OpenGL que la texture est 2D (GL_TEXTURE_2D). 0 représente le niveau de détail des images, habituellement à 0. 3 est le nombre de composantes de couleurs (RGB). texture1->sizeX donne automatiquement la largeur de la texture. texture1->sizeY donne la hauteur de la texture. Le zéro suivant est la bordure, habituellement laissé 0. GL_RGB indique à OpenGL que l’image est RGB. GL_UNSIGNED_BYTE représente la dimension en octet des composantes de couleurs de chaque pixel des images (unsigned char). texture1->data indique à OpenGL où sont stockées les données images associées à une texture

Textures Définir les textures images 2D (voir leçon 6) LoadGLTextures() permet de charger l’image.bmp et permet la création de la texture glEnable(GL_TEXTURE_2D) active le mode texture mapping

Textures Définir les textures images 2D (voir leçon 6) La fonction glBindTexture() permet de sélectionner la texture utilisée. Pour les autres textures il faudrait appeler la fonction glBindTexture(GL_TEXTURE_2D, texture[numéro de texture]). Il faut appeler cette fonction hors des énoncés glBegin() et glEnd().

Textures Définir les textures images 2D (voir leçon 6) La fonction glTexCoord2f() permet de définir les coordonnées de textures. La première, la coordonnée x (s). 0.0f est à gauche de la texture. 0.5f dans le milieu et 1.0f à droite. La seconde, la coordonnée y (t). 0.0f est le bas de la texture. 0.5f est le milieu et 1.0f dans le haut.

Textures Définir les textures images 2D (voir leçon 6)

Textures Définir les textures images 2D (voir leçon 6) La face frontale du cube est couverte avec la portion inférieure gauche de la texture

Textures Définir les textures images 2D (voir leçon 6)

Textures Définir les textures images 2D (voir leçon 6) La face frontale du cube est couverte avec la portion supérieure droite de la texture

Textures Définir les textures images 2D (voir leçon 6)

Textures Définir les textures images 2D (voir leçon 6) La face frontale du cube est couverte avec une répétition de la texture de 2 en x et y

Textures Définir les textures images 2D (voir leçon 6)

Textures Définir les textures images 2D (voir leçon 6) La face frontale du cube est couverte avec une répétition de la texture de 4 en x et de 2 en y

Textures Définir les textures images 2D (voir leçon 6)

Textures Définir les textures images 2D –La fonction glTexImage2D() permet de définir une texture image 2D avec OpenGL –Paramètres: Type de texture: GL_TEXTURE_2D Niveau de détail: 0 en général Nombre de composantes de couleur (1 à 4) Largeur de la texture image (puissance de 2 [64, 256]) Hauteur de la texture image (puissance de 2 [64, 256]) Largeur de la bordure (0, 1 ou 2) Format des pixels (ex: GL_RGB, GL_RGBA..) Type de chaque valeur des pixel (ex: GL_UNSIGNED_BYTE) Séquence de pixels

Textures Définir les textures images 2D –Modes de rendu de texture (couleur VS illumination) GL_MODULATE : permet de faire le rendu des surfaces texturées en considérant les propriétés des surfaces (couleurs, propriétés de réflexion) et l’illumination. Ce mode est celui par défaut et le plus utilisé GL_DECAL : seule l’information texturale sert à faire le rendu la couleur, les propriétés des surfaces et l’illumination ne changent en rien l’apparence de la texture GL_BLEND : permet la superposition de textures

Textures Définir les textures images 2D –Modes de rendu de texture Le mode de rendu de texture est initialisé par la fonction glTexEnvi() Paramètres: –Type d’environnement texture: GL_TEXTURE_ENV –Paramètre à définir: GL_TEXTURE_ENV_MODE (mode) GL_TEXTURE_ENV_COLOR (mode GL_BLEND) –Mode ou couleur: »modes: GL_MODULATE, GL_DECAL, GL_BLEND »couleur: pointeur sur une valeur RGBA

Textures Définir les textures images 2D –Type d’interpolation utilisée pour déterminer la couleur correspondant à chaque point d’une surface projetée sur la texture GL_NEAREST: le voisin le plus proche GL_LINEAR: interpolation linéaire –La fonction glTexParameteri() permet d’établir le mode d’interpolation Paramètres: –Type de texture: GL_TEXTURE_2D –Paramètre à définir: »GL_TEXTURE_MIN_FILTER: réduction de la texture »GL_TEXTURE_MAG_FILTER: agrandissement de la texture

Textures Définir les textures images 2D –La fonction glTexParameteri() permet d’établir le mode d’interpolation Paramètres: –Type d’interpolation: »GL_NEAREST »GL_LINEAR

Textures Définir les textures images 2D –Spécification des coordonnées de texture par la commande glTexCoord2d() avec comme paramètres les coordonnées de texture s et t –Ces coordonnées sont contenues dans l’intervalle [0.0,1.0]

Textures Définir les textures images 2D –Répétition de texture Quand les coordonnées de textures sortent de l’intervalle [0,1], nous pouvons imposer soit une répétition de la texture complète (GL_REPEAT) ou une répétition de la couleur correspondant à la bordure de la texture (GL_CLAMP)

Textures Définir les textures images 2D –Répétition de texture Les procédures: glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S, GL_REPEAT) glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T, GL_REPEAT) permettent d ’établir le mode de répétition de texture

Textures Définir les textures images 2D –Répétition de texture (GL_CLAMP, voir leçon 6)

Textures Définir les textures images 2D –Répétition de texture (GL_CLAMP, Voir leçon 6)

Textures Définir les textures images 2D –Manipulation de plusieurs textures image La fonction glGenTextures() permet à OpenGL de réserver un ou plusieurs numéros (nom, référence) d’objet texture Gluint texture_objects[5]; glGenTextures(5,texture_objects); Gluint texture_object; glGenTextures(1,&texture_object);

Textures Définir les textures images 2D –Manipulation de plusieurs textures image La fonction glBindTexture() permet de sélectionner un objet texture nommé par glGenTextures() Gluint texture_object; glGenTextures(1,&texture_object); glBindTexture(GL_TEXTURE_2D,texture_object);

Textures Superposition d’une texture sur une surface plane –Exemple de superposition de texture (Voir projet Terrain1, terrain et ciel bleu) En premier lieu, nous avons besoin d’une fonction qui permet de charger la texture image (.bmp) La fonction TextureLoad() permet de faire ce chargement: –Paramètres: »Nom de fichier.bmp contenant la texture 2D »Indicateur d’utilisation d ’image RGBA »Min filter »Mag filter »Répétition

Textures

Textures (fonction TextureLoad())

Textures (Land.bmp, sky.bmp)

Textures (fonction Redraw(), ciel)

Textures (fonction Redraw(), terrain)

Textures (fonction Redraw(), terrain + ciel)

Textures (fonction Redraw(), ciel)

Textures (fonction Redraw(), terrain)

Textures Superposition d’une texture sur des surfaces planes –Génération d ’un terrain par fractal (Voir projet Terrain2) Algorithme fractal subdivise une surface plane et ajuste la hauteur des points milieux de façon aléatoire tp[].v

Textures (fonction Redraw(), fractal) //Fractal

Textures (fonction BuildTerrain(), fractal)

Textures (fonction DivideTerrain(), fractal) // Élévation

Textures (fonction DivideTerrain(), fractal)

Textures Superposition d’une texture sur des surfaces planes –Génération automatique de coordonnées de texture La fonction glTexGen permet d ’établir les paramètres de génération automatique de coordonnées de texture Cette fonction permet de générer les coordonnées (s,t) d ’une texture à partir des positions dans une forme de la scène glTexGeni(GL_S,GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR) SI GL_TEXTURE_GEN_MODE == GL_OBJECT_LINEAR ALORS »Chaque sommet des objets est multiplié par le vecteur définit par GL_OBJECT_PLANE »glTexGenfv(GL_S,GL_OBJECT_PLANE, s_vector) »s_vector représente une fonction de projection

Textures Superposition d’une texture sur des surfaces planes –Génération automatique de coordonnées de texture »s_vector représente une fonction de projection glEnable(GL_TEXTURE_GEN_S) permet à OpenGL d ’utiliser une séquence de coordonnées de texture générée

Textures Superposition d’une texture sur des surfaces planes –Génération automatique de coordonnées de texture glTexGeni(GL_S,GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP) SI GL_TEXTURE_GEN_MODE == GL_SPHERE_MAP ALORS »Les coordonnées de texture sont générées dans une sphère par rapport à la position de visualisation ou l ’origine

Textures (Fonction Redraw(), projet Terrain3)

// Calcul par rapport à l ’observateur

Textures (Fonction Redraw(), projet Terrain3)

Textures (Avec Illumination, projet Terrain5) Ajout de l ’illumination et des normales à chaque surface N

Textures (Avec Illumination, projet Terrain5)

Textures (Avec transparence, projet Terrain6)

Textures Superposition d’une texture sur une surface courbe

Textures (OpenGL 3.3+) Découpage dans une texture (U,V => x, y, z)

Textures (OpenGL 3.3+) Lecture d’une image.bmp (texture) org/source/browse/common/texture.cpp?r=0e89eb4ca7f7515f8baf5ef271ef76825f3734de &spec=svn24d30a5a643afe4bab bc80b80a601c5 Prototype de la fonction loadBMP_custom() Appel de la fonction loadBMP_custom() Code de la fonction (déclarations)

Textures (OpenGL 3.3+) Code de la fonction (ouverture du fichier) Code la fonction (lecture de l’entête)

Textures (OpenGL 3.3+) Code de la fonction (validation du format d’image) Code de la fonction (lecture des dimensions) Code de la fonction (assignations)

Textures (OpenGL 3.3+) Code de la fonction (lecture de l’image) Création de la texture

Textures (OpenGL 3.3+) Lecture d’une image (uvtemplate.bmp)

Textures (OpenGL 3.3+) Utilisation des textures avec OpenGL (vertex shader)

Textures (OpenGL 3.3+) Utilisation des textures avec OpenGL (fragment shader)

Textures (OpenGL 3.3+) Code du programme utilisant les textures (voir: Création d’une référence sur l’échantillonneur de texture org/source/browse/tutorial05_textured_cube/tutorial05.cpp

Textures (OpenGL 3.3+) Code du programme utilisant les textures (coordonnées des sommets et de texture)

Textures (OpenGL 3.3+) Code du programme utilisant les textures (coordonnées des sommets et de texture)

Textures (OpenGL 3.3+) Code du programme utilisant les textures (coordonnées de texture, Blender)

Textures (OpenGL 3.3+) Code du programme utilisant les textures (création d’un tampon pour stocker les coordonnées de texture) Associer la TEXTURE0 à la texture lue (Texture)

Textures (OpenGL 3.3+) Code du programme utilisant les textures (Attributions des tampons, traçage des triangles)

Textures (OpenGL 3.3+) Exemple d’exécution

Textures (OpenGL 3.3+) Exemple d’exécution Qualité du rendu est fonction du type d’interpolation

Textures (OpenGL 3.3+) Type d’interpolation (GL_NEAREST)

Textures (OpenGL 3.3+) Type d’interpolation (GL_LINEAR)

Textures (OpenGL 3.3+) Type d’interpolation (GL_LINEAR) f (x, y) f (1, 0) f (1, 1) f (0, 1) f (0, 0) 0, 0 0, 1 x, 1 1, 1 1, 0 x, 0 x y x, y

Textures (OpenGL 3.3+) Type d’interpolation (MIPMAP, selon la profondeur la texture est adaptée en modifiant sa résolution)

Textures (OpenGL 3.3+) Type d’interpolation (MIPMAP, selon la profondeur la texture est adaptée en modifiant sa résolution)