GRAPHISME PAR ORDINATEUR

Slides:



Advertisements
Présentations similaires
Module Systèmes d’exploitation
Advertisements

à partir notamment du cours Siggraph 97 et d’autres ….
IFT3730 : Infographie 3D Systèmes et modèles graphiques Pierre Poulin, Derek Nowrouzezahrai Hiver 2013 DIRO, Université de Montréal.
GRAPHISME PAR ORDINATEUR
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 8 Rendu de surfaces –Modèles de rendu de surfaces –Illumination de la scène –Sources lumineuses –Composante.
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 10 Textures –Définir la texture –Superposition d’une texture sur une surface plane –Superposition.
Formation des enseignants Formation MATLAB. Formation des enseignants MATLAB® (pour MATrix LABoratory) est un logiciel scientifique de calcul numérique.
GCstar Gestionnaire de collections personnelles Christian Jodar (Tian)
1 Initiation à la micro-informatique Le matériel un clic pour la suite… Moniteur.
L'image: Le codage des images BacPro SEN Lycée Condorcet.
Modélisation Géométrique Cours 4 : Acquisition de la géométrie.
Modélisation Géométrique Les surfaces paramétriques.
Arithmétique d'Intervalles L'arithmétique d'intervalles.
Manipulations Vidéo Tutoriel de base pour Avidemux réalisé par Jeff pour G3L sous licence.
L'image: Formats et compression BacPro SEN Lycée Condorcet ➢ 1ère partie: Généralités ➢ 2ème partie: Les espaces de couleurs ➢ 3ème partie: Codage des.
Comparing color edge detection and segmentation methods Projet TIM.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
Grilles 3D Les grilles 3D. Grilles 3D Plan ● Les grilles 3D – Grille 3D ? – Reconstruction de continuité C 0 – Octree min/max – Visualisation d'une iso-surface.
Utilisation du logiciel EduStat © Construire une épreuve.
Les PREF, DEC, et jauges outils En tournage, puis en fraisage En fraisage directement P roductique M écanique U sinage LP Irénée Cros Pamiers Tâche principale.
Reprojection de Données Vectorielles sur Saga:
Traitement d'images en Java avec JAI
I- ANALYSE DU BESOIN / Plan
Téléchargement de fichiers
Exploitation de logiciels :
Module de gestion des tournées de livraison
I- ANALYSE DU BESOIN / Plan
Environnement du développement de BD ORACLE REPORTS 10g
Visite guidée - session 3 Les postes de charge et les gammes
Pointeurs et langage C.
Projet Ville de Lyon Sites Internet
AIDE A L’UTILISATION DU LOGICIEL LATISPRO
INTRODUCTION A LA GEOMETRIE
Les Processeurs Graphiques Programmables
Collecte de données CAPI
Principes de programmation (suite)
Algorithmique Langage C
11ième Classe (Mardi, 18 novembre) CSI2572
Les objectifs du cours Savoir utiliser un Tableur
Par Georges Lucotte & Jean-Pierre Vasseur 03 Mars 2017
Langages de programmation TP7
Les fonctions.
3ème Livre 1 Rappel.
D3 – Produire, traiter, exploiter et diffuser des documents numériques
La perspective Les projections parallèles et centrales.
GRAPHISME PAR ORDINATEUR
GRAPHISME PAR ORDINATEUR
GRAPHISME PAR ORDINATEUR
Géométrie dans l’espace
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
GRAPHISME PAR ORDINATEUR
GRAPHISME PAR ORDINATEUR
Chapitre 7 Configuration de l'environnement du bureau
Cours N°9: Algorithmiques Les Tableaux 1
GRAPHISME PAR ORDINATEUR
Programmation en C++ C++ de base
GRAPHISME PAR ORDINATEUR
Bus et adressage GIF-1001: Ordinateurs: Structure et Applications
Calcul Scientifique Initiation à SCILB
ACP Analyse en Composantes Principales
Qu’est-ce qu’un ordinateur ?. Ordinateur – calculateur Un ordinateur est une machine qui permet de réaliser, d’exécuter des opérations, des calculs, c’est.
Résolution d’un problème de diffusion 3D
Le morphage d’images Steph Hoffman
Les classes et les objets
Programmation Android Les listes
Janvier 2019 IA-IPR Physique-Chimie
INTELLIGENCE ARTIFICIELLE
App Inventor trucs Afficher une image depuis le Web ou Google Drive.
DONNÉE DE BASE QM Manuel de formation. Agenda 2  Introduction  Objectif de la formation  Données de base QM: Caractéristique de contrôle Catalogue.
Transcription de la présentation:

GRAPHISME PAR ORDINATEUR SIF-1032

Contenu du cours 10 Textures Lectures (Chapitre 8) 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 World/Screen Texture/World

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 TEXTURE SURFACE Transformation spatiale (x, y,z) Affectation de la couleur

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

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

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

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

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

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

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().

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)

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)

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)

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)

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)

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

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

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

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

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

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]

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)

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

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

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

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);

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);

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 (fonction TextureLoad())

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 (fonction Redraw(), terrain)

Textures (fonction Redraw(), terrain)

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)

Textures (fonction BuildTerrain(), fractal)

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

Textures (fonction DivideTerrain(), fractal)

Superposition d’une texture sur des surfaces planes Génération automatique de coordonnées de texture La fonction glTexGen<t> 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

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

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)

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)

Lecture d’une image .bmp (texture) Textures (OpenGL 3.3+) Lecture d’une image .bmp (texture) http://code.google.com/p/opengl-tutorial-org/source/browse/common/texture.cpp?r=0e89eb4ca7f7515f8baf5ef271ef76825f3734de&spec=svn24d30a5a643afe4bab458673054bc80b80a601c5 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)

Code du programme utilisant les textures (voir: Textures (OpenGL 3.3+) Code du programme utilisant les textures (voir: Création d’une référence sur l’échantillonneur de texture http://code.google.com/p/opengl-tutorial-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)

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

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)