Transformations de scène avec OpenGl



Documents pareils
Les algorithmes de base du graphisme

Chapitre 3 : Repères et positionnement 3D

Synthèse d'images. (1) Introduction

GL BE FLYER. Chef de projet de l équipe : SCIONICO Pierre

Calcul intégral élémentaire en plusieurs variables

C.F.A.O. : Conception et Fabrication Assistées par Ordinateur.

ANALYSE CATIA V5. 14/02/2011 Daniel Geffroy IUT GMP Le Mans

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Cours de Mécanique du point matériel

Exemples d applications. Qu est ce que l Informatique Graphique? Infographie 2D pour l interaction. Introduction

Analyse de la vidéo. Chapitre La modélisation pour le suivi d objet. 10 mars Chapitre La modélisation d objet 1 / 57

Convers3 Documentation version Par Eric DAVID : vtopo@free.fr

TPs Architecture des ordinateurs DUT Informatique - M4104c SUJETS. R. Raffin Aix-Marseille Université romain.raffin-at-univ-amu.fr

INTRODUCTION À L ANALYSE FACTORIELLE DES CORRESPONDANCES

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

Chapitre II : Infographie et bibliothèques graphiques

LA PHYSIQUE DES MATERIAUX. Chapitre 1 LES RESEAUX DIRECT ET RECIPROQUE

STATIQUE GRAPHIQUE ET STATIQUE ANALYTIQUE

F411 - Courbes Paramétrées, Polaires

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

Les Angles. I) Angles complémentaires, angles supplémentaires. 1) Angles complémentaires. 2 Angles supplémentaires. a) Définition.

Comment sélectionner des sommets, des arêtes et des faces avec Blender?

Création de mises en plan

TOUT CE QU IL FAUT SAVOIR POUR LE BREVET

Représentation géométrique d un nombre complexe

Fonctions de plusieurs variables

I - PUISSANCE D UN POINT PAR RAPPORT A UN CERCLE CERCLES ORTHOGONAUX POLES ET POLAIRES

Logiciel PICAXE Programming Editor

Chapitre 1 Cinématique du point matériel

Imagerie Numérique Synthèse d images. DUT Informatique Sébastien THON

TBI et mathématique. Pour vous soutenir dans votre enseignement des mathématiques. Les outils du logiciel Notebook. les ressources internet

CAP RÉPARATION DES CARROSSERIES

.. CSS. Damien Nouvel. Damien Nouvel (Inalco) CSS 1 / 15

modélisation solide et dessin technique

TUTORIAL 1 ETUDE D UN MODELE SIMPLIFIE DE PORTIQUE PLAN ARTICULE

Mise en scène d un modèle dans l espace 3D

Initiation aux Sciences de l Ingénieur LIVRET DE SECONDE

Fonctions de deux variables. Mai 2011

Les calques : techniques avancées

TP1 : Initiation à Java et Eclipse

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Sommaire. Première partie. Lire, comprendre et interpréter les graphiques boursiers Chapitre 1. Chapitre 2. Chapitre 3. Chapitre 4.

Chapitre 2 : Caractéristiques du mouvement d un solide

Vous devez tout d abord réaliser l esquisse (le dessin de la pièce en 2 dimensions) avant de mettre cette pièce en volume.

Guide Draw. Chapitre 5 Combiner plusieurs objets

Initiation à l algorithmique

Correction du Baccalauréat S Amérique du Nord mai 2007

Chapitre 5 : Flot maximal dans un graphe

INTRODUCTION. A- Modélisation et paramétrage : CHAPITRE I : MODÉLISATION. I. Paramétrage de la position d un solide : (S1) O O1 X

Cours IV Mise en orbite

Je sais utiliser. Logiciel gratuit de gestion des photos. Étude en 5 parties

Synthèse d'images I. Venceslas BIRI IGM Université de Marne La

MAT2027 Activités sur Geogebra

Exercices INF5171 : série #3 (Automne 2012)

1 Complément sur la projection du nuage des individus

Nom : Groupe : Date : 1. Quels sont les deux types de dessins les plus utilisés en technologie?

Géographie CM2. Guide pédagogique. Ressources vidéoprojetables & 14 animations interactives. Jacques Arnaud Nicole Darcy Daniel Le Gal

Les nouveautés de Femap 11.1

Prise en main du logiciel de SIG MapInfo

Aide GeoGebra. Manuel Officiel 3.2. Markus Hohenwarter et Judith Hohenwarter

Les correcteurs accorderont une importance particulière à la rigueur des raisonnements et aux représentations graphiques demandées.

3 Approximation de solutions d équations

79140 CERIZAY. Collège G. CLEMENCEAU. Page 1 sur 18

Cours de tracés de Charpente, Le TRAIT

PROJET DE MODELISATION CASERNE SERGEANT BLANDAN

1 Création d une pièce. 2 Travail complémentaire. 1-1 Réglage des barres d outils. 1-2 Exemples de réalisation de pièces à l aide d un modeleur 3D

LES NOUVEAUTÉS DE ARCON 15 PRO

Utilisation du logiciel GALAAD

TP, première séquence d exercices.

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

Vue 2D / 3D / Dessin / Cotation Utilise : Logiciel edrawings Fichier.EPRT Dossier Tp-eDrawings

Correction des Travaux Pratiques Organiser son espace de travail

Chapitre 2 : Vecteurs

Les structures de données. Rajae El Ouazzani

OFPPT ROYAUME DU MAROC RESUME THEORIQUE & GUIDE DE TRAVAUX PRATIQUES APPLICATIONS DE DESSIN ASSISTE PAR ORDINATEUR MODULE N 9: :BTP SECTEUR

Manuel Utilisateur Logiciel PEB Partie modeleur version 2.5

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Opérations de base sur ImageJ

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Chapitre 4 : Guide de Mouvement et Masque

1. La notion de cascade

Objets et Programmation. origine des langages orientés-objet

Corrigé du baccalauréat S Asie 21 juin 2010

Fonctions de plusieurs variables

Mesures en 3D stéréoscopique 16 novembre 2011

05/09/2015. M Ponctualité : CM TD TP & Projet Æ En cas d absence : récupérer!!! 3 05/09/2015

Mesure d angles et trigonométrie

Prénom : MATHÉMATIQUES. 120 minutes Compas, règle métrique, rapporteur, équerre, calculatrice non programmable

Structures algébriques

Mini_guide_Isis_v6.doc le 10/02/2005 Page 1/15

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

My Custom Design ver.1.0

Gnuplot. Chapitre Lancer Gnuplot. 3.2 Options des graphes

BIENVENUE! Bonne lecture et bonne modélisation! L équipe d Eovia

Programme de la classe de première année MPSI

Structurer ses données : les tableaux. Introduction à la programmation

Moteur monocylindre de tondeuse auto-tractée. Pascal MORENTON

Apprendre à résoudre des problèmes numériques. Utiliser le nombre pour résoudre des problèmes

Once the installation is complete, you can delete the temporary Zip files..

Les problèmes de la finale du 21éme RMT

Transcription:

Transformations de scène avec OpenGl Frank Singhoff Bureau C-203 Université de Brest, France LISyC/EA 3883 singhoff@univ-brest.fr UE multimédias et animation, Université de Brest Page 1/32

Sommaire 1. Introduction 2. Transformations de modèle 3. Transformations de visualisation 4. Transformations de projection 5. Transformations de cadrage 6. Ce qu il faut retenir UE multimédias et animation, Université de Brest Page 2/32

Introduction (1) Modèle : ensemble d objets organisés pour réprésenter une scène devant être affichée. Chaque modèle est un ensemble de points (x,y,z). Transformation : opération sur les sommets afin de réaliser un effet graphique particulier (ex : déplacement d un objet). UE multimédias et animation, Université de Brest Page 3/32

Introduction (2) Etapes d une opération/transformation sur sommets (ex : rotation, puis translation) : 1. Soit un vecteur contenant les coordonnées d un sommet. On mémorise tous les points du modèle de cette façon. 2. Générer une matrice 4x4 de transformation. Cette matrice mémorise les deux déplacements (2 matrices combinées, notion de matrice active). 3. Multiplier le vecteur de chaque sommet du modèle par la matrice de transformation. Si v est un sommet du modèle et M, une matrice de transformation, v = M.v est le sommet transformé. 4. Afficher la scène avec ces nouveaux sommets... l objet est déplacé! UE multimédias et animation, Université de Brest Page 4/32

Introduction (3) Pourquoi des matrices 4x4? Notion de coordonnées homogènes : soit v = (x, y, z) des coordonnées cartèsiennes, les coordonnées homogènes de v sont v = (x, y, z, w) avec w, le dénominateur commun de x,y,z tel que w >= 0. (x, y, z) et (x /w, y /w, z /w) désignent donc le même sommet. Pourquoi les coordonnées homogènes? Permettre l implantation des transformations par algèbre linéaire. Moins de flottants = + rapide et + précision. Moins de divisions = plus de stabilité numérique. Exemple : (x1, y1, z1) > (x1/3, y1/3, z1/3) devient (x1, y1, z1, 1) > (x1, y1, z1, 1 3). UE multimédias et animation, Université de Brest Page 5/32

Introduction (4) Quels types de transformation? 1. Transformation de modèle : composition de la scène (taille et position des objets) + animation (déplacement des objets). 2. Transformation de visualisation : position de l oeil/caméra. 3. Transformation de projection : forme du volume à visionner ainsi que les objets inclus dans ce volume 4. Transformation de cadrage : taille de la fenêtre de visualisation. UE multimédias et animation, Université de Brest Page 6/32

Sommaire 1. Introduction 2. Transformations de modèle 3. Transformations de visualisation 4. Transformations de projection 5. Transformations de cadrage 6. Ce qu il faut retenir UE multimédias et animation, Université de Brest Page 7/32

Transformations de modèle (1) Transformation qui consiste à déplacer un objet ou le système de coordonnées de la scène. Primitives/types de déplacement : 1. La translation (glt ranslate), 2. La rotation (glrotate), 3. La mise à l échelle (glscale). Notion de matrice active : matrice qui combine toutes les transformations demandées. UE multimédias et animation, Université de Brest Page 8/32

Transformations de modèle (2) Translation : génèrer une matrice de translation puis multiplier la matrice active de modélisation. Soit un sommet v = (x,y,z, 1) et un vecteur de translation (tx,ty,tz,1), les nouvelles coordonnées v = (x,y,z, 1) sont x = x + tx; y = y + ty; z = z + tz; UE multimédias et animation, Université de Brest Page 9/32

Transformations de modèle (3) La primitive OpenGl doit générer une matrice M, tel que : ou encore : v = M.v M = 1 0 0 tx 0 1 0 ty 0 0 1 tz 0 0 0 1 Primitive : gltranslatef(glfloat tx, GLfloat ty, GLfloat tz); Génère une matrice M qui déplace un objet/système de coordonnées selon le vecteur de translation (tx, ty, tz), puis multiplie la matrice active avec M. UE multimédias et animation, Université de Brest Page 10/32

Transformations de modèle (4) Rotation : gènére une matrice M de rotation puis multiplie cette matrice avec la matrice active de modélisation. Primitive : glrotatef(glfloat angle, rx, ry, rz); Applique sur un objet/système de coordonnées une rotation d angle angle sur les axes x, y et/ou z. Exemple : rotation de 45 degrés sur l axe des z. glrotatef(45, 0, 0, 1); UE multimédias et animation, Université de Brest Page 11/32

Transformations de modèle (5) Mise à l échelle : gènére une matrice M de mise à l échelle puis multiplie cette matrice avec la matrice active de modélisation. Primitive : glscalef(glfloat sx, GLfloat sy, GLfloat sz); Elargit, rétricit ou réfléchit un objet/système de coordonnées sur les axes x, y et/ou z. Elargit sur x/y/z si sx/sy/sz>1. Rétrécit si sx/sy/sz<1. Réfléchit si sx/sy/sz=-1. UE multimédias et animation, Université de Brest Page 12/32

Transformations de modèle (6) La matrice active peut être sauvegardée, pour être restaurée plus tard : utilisation d une pile de matrice. Pile de matrices de modélisation/visualisation et pile de matrices de projection. Primitives : glmatrixmode : choisit la matrice active (de modélisation/visualisation avec GL_M ODELV IEW, ou de projection avec GL_P ROJECT ION). glloadidentity : initialise la matrice active. glpushmatrix : empile la matrice active. glpopmatrix : dépile la matrice active. UE multimédias et animation, Université de Brest Page 13/32

Transformations de modèle (7) Modélisation hiérarchique de scène : UE multimédias et animation, Université de Brest Page 14/32

Transformations de modèle (8) Dessiner une roue : // Cercle centré sur l origine void cercle(float r, float g, float b) { glcolor3f (r, g, b); glbegin(gl_polygon); for (i = 0; i <= 60; i++) { glvertex3f(x[i], y[i], 0); } glend(); } void dessine_roue() { cercle(1.0, 1.0, 0.0); glpushmatrix(); gltranslatef(0,0,.001); glscalef(.2,.3,.2); cercle(0, 0, 1); glpopmatrix(); } UE multimédias et animation, Université de Brest Page 15/32

Transformations de modèle (9) Dessiner la voiture : void voiture() { glcolor3f (1, 0, 0); glbegin(gl_polygon); glvertex3f (0, 0, 0); glvertex3f (0, 1, 0); glvertex3f (2, 1, 0); glvertex3f (2.5, 2, 0); glvertex3f (8, 2, 0); glvertex3f (9, 1, 0); glvertex3f (10, 1, 0); glvertex3f (10, 0, 0); glend(); } UE multimédias et animation, Université de Brest Page 16/32

Transformations de modèle (10) Fonction d affichage : void display(void) { glloadidentity (); glclear (GL_COLOR_BUFFER_BIT); glclear (GL_DEPTH_BUFFER_BIT); glpushmatrix(); gltranslatef(-5,0,0); voiture(); glpopmatrix(); } glpushmatrix(); gltranslatef(-3,0,-0.5); dessine_roue(); glpopmatrix(); gltranslatef(3,0,-0.5); dessine_roue(); glutswapbuffers(); UE multimédias et animation, Université de Brest Page 17/32

Transformations de modèle (11) Il faut terminer la fonction d affichage sur une pile de modélisation vide. Affichage de la taille d une pile : void etat() { int val; glgetintegerv(gl_modelview_stack_depth,&val); printf("taille pile = %d\n", val); } Ne pas dépasser la taille maximale des piles de modélisation/visualisation (état GL_MAX_MODELV IEW _STACK_DEPTH) et de projection (état GL_MAX_PROJECTION_STACK_DEPTH). UE multimédias et animation, Université de Brest Page 18/32

Sommaire 1. Introduction 2. Transformations de modèle 3. Transformations de visualisation 4. Transformations de projection 5. Transformations de cadrage 6. Ce qu il faut retenir UE multimédias et animation, Université de Brest Page 19/32

Transformations de visualisation (1) Transformation qui consiste à définir la position et l orientation de la caméra. Primitive : glulookat(ex,ey,ez, rx,ry,rz, ox,oy,oz); (ex,ey,ez) désigne la position de la caméra. (rx,ry,rz) désigne le cadrage : c est à dire le centre de la scène. (ox, oy, oz) désigne l orientation de la caméra vers le haut du volume visionné. glulookat génère une matrice M appliquant un positionnement de la caméra, puis multiplie la matrice active avec M. UE multimédias et animation, Université de Brest Page 20/32

Transformations de visualisation (2) Position par défaut : glulookat(0,0,0, 0,0,-1, 0,1,0); Attention : la caméra est orientée vers l axe négatif des z ; on voit donc le dos de la caméra. UE multimédias et animation, Université de Brest Page 21/32

Transformations de visualisation (3) Exemple : la caméra est placée en (4,2,1). L objectif est tourné vers l objet et donc vers (2,4,-3). Un vecteur d orientation a été choisi (2,2,-1) afin d orienter le point de vue sur un angle de 45 degrés. glulookat(4,2,1, 2,4,-3, 2, 2,-1); UE multimédias et animation, Université de Brest Page 22/32

Transformations de visualisation (4) Est ce l objet qui s éloigne ou la caméra? Transformation de visualisation et de modèle constituent en fait, les mêmes opérations sur les sommets, d où le partage de la même matrice. glulookat n est en fait qu une combinaison de rotations et de translations. Attention : une seule transformation de visualisation doit être réalisée, et généralement avant les transformations de modélisation. UE multimédias et animation, Université de Brest Page 23/32

Sommaire 1. Introduction 2. Transformations de modèle 3. Transformations de visualisation 4. Transformations de projection 5. Transformations de cadrage 6. Ce qu il faut retenir UE multimédias et animation, Université de Brest Page 24/32

Transformation de projection (1) Transformation qui consiste à définir 1. Quel est le volume visionné (clipping). 2. Comment ce volume doit être projeté sur un plan. Comme pour les transformations de modélisation/visualisation, une projection, c est un calcul matriciel. Utilise une matrice différente : la matrice de projection. Opération sur la matrice de projection : glmatrixmode(gl_projection); glloadidentity();... opération de projection... glmatrixmode(gl_modelview); Projection par perspective conique versus perspective cavalière. UE multimédias et animation, Université de Brest Page 25/32

Transformation de projection (2) Perspective conique : plus l objet est éloigné et plus il est petit ; le volume est un frustum (tronc de pyramide). Deux primitives selon que le frustum soit symétrique avec un axe aligné sur l axe des z (gluperspective) ou non (glfrustum) : gluperspective(fovy, aspect, near, far); aspect est le ratio largeur/hauteur ; near et far définissent les plans de clipping. fovy est l angle de vision dans le plan yz (0 fovy 180) ; UE multimédias et animation, Université de Brest Page 26/32

Transformation de projection (3) Perspective cavalière : chaque objet a une taille identique quelque soit sa profondeur. Peu utilisé. Primitive : glortho(gldouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far); (left, bottom, near) et (right, top, far) sont les plans de clipping. Parallèle à l axe des z. Cas particulier de la perspective cavalière en 2D : gluortho2d. UE multimédias et animation, Université de Brest Page 27/32

Sommaire 1. Introduction 2. Transformations de modèle 3. Transformations de visualisation 4. Transformations de projection 5. Transformations de cadrage 6. Ce qu il faut retenir UE multimédias et animation, Université de Brest Page 28/32

Transformation de cadrage (1) Transformation qui consiste à définir la zone rectangulaire de la fenêtre ou sera restitué le dessin. Primitive : glviewport(glint x, GLint y, GLint w, GLint h); (x, y) spécifie l angle inférieur gauche du rectangle de cadrage et w et h la taille du rectangle de cadrage. Une fenêtre peut contenir plusieurs rectangles de cadrage. UE multimédias et animation, Université de Brest Page 29/32

Transformation de cadrage (2) Transformation de projection et de cadrage doivent être cohérentes pour éviter une déformation de l image. Image déformée : gluperspective(angle, 1.0, proche, eloigne); glviewport(0, 0, 400, 200); Image non déformée : gluperspective(angle, 2.0, proche, eloigne); glviewport(0, 0, 400, 200); UE multimédias et animation, Université de Brest Page 30/32

Sommaire 1. Introduction 2. Transformations de modèle 3. Transformations de visualisation 4. Transformations de projection 5. Transformations de cadrage 6. Ce qu il faut retenir UE multimédias et animation, Université de Brest Page 31/32

Ce qu il faut retenir Que sont les opérations sur les sommets ou transformations? Une transformation = génération d une matrice + multiplication avec la matrice active (cf. les primitives glrotate, glt ranslate, glulookat, glf rustum, glup erspective excepté glv iewp ort) Transformations importantes : modélisation et visualisation. La transformation de visualisation est remplaçable. Comment faire une description hiérarchique d une scène avec les transformations de modèle et la pile de matrice de modélisation/visualisation. UE multimédias et animation, Université de Brest Page 32/32