65
Strategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours 9 : Introduction à la 3D Vincent Guigue UPMC - LIP6 Vincent Guigue 2i013 - Course de Voiture 1/45

Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Cours 9 : Introduction à la 3D

Vincent GuigueUPMC - LIP6

Vincent Guigue 2i013 - Course de Voiture 1/45

Page 2: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Stratégies complexes : plusieurs solutions

1 Composite : Liste de Selector/Strategy- Composite dans Composite = Arbre de strategy- Partage d’informations entre Selector et Strategy : 1 objetimplémente les 2 interfaces (attributs communs)

2 Héritage : une stratégie fille plus fine que la stratégie parente- getCommande() = parent.getCommande() + spécificitésclasse fille

3 Decorator/Délégation : une Strategy attribut d’une autre- Comportement partiel (ex : donner une accélération franchelorsque la vitesse de la voiture est à 0)

- Surcouche sur n’importe quelle stratégie- Fonctionnement :

· Possède une stratégie en attribut· Renvoie tous les ordres vers l’attribut (Délégation)· Fait quelques modifications dans certains cas particuliers

Vincent Guigue 2i013 - Course de Voiture 2/45

Page 3: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Intérêt et Usage de la décoration

◦ Une stratégie décorée EST UNE stratégie◦ Pouvoir étendre/spécialiser n’importe quelle stratégie (plus

général que l’héritage)Forme générale :

1 pub l i c c l a s s St r a t egyP ruden t e implements S t r a t e g y {2 p r i v a t e S t r a t e g y sBase ;34 pub l i c St r a t egyP ruden t e ( S t r a t e g y sBase ) {5 super ( ) ;6 t h i s . sBase = sBase ;7 }89 pub l i c Commande getCommande ( ) {

10 Commande c = sBase . getCommande ( ) ; // d é l é g a t i o n11 // mod i f i c a t i o n de c12 // [ . . . ]1314 re tu rn c ;15 }16 }

Vincent Guigue 2i013 - Course de Voiture 3/45

Page 4: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Rappel sur les filtres

◦ Filtre = cahier des charges = interface1 pub l i c vo id f i l t r e ( Te r r a i n [ ] [ ] mat )

◦ Les filtres parcourent et modifient la matrice Terrain[][]◦ La CircuitFactory change (ou il en faut une nouvelle)

- Aucune méthode static (l’appel depuis le main change aussi)- La classe a un attribut ArrayList<Filtre> instancié dans leconstructeur

- La classe contient une méthode void add(Filtre f)- Avant de construire le CircuitImpl, la classe applique lesfiltres sur la matrice Terrain[][]

1 f o r ( F i l t r e f : l i s t e )2 f . f i l t r e (mat ) ;

Vincent Guigue 2i013 - Course de Voiture 4/45

Page 5: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Filtre simpleDans la version simple, un filtre est rapide à développer :

◦ Pas d’attribut◦ Pas de constructeur (Implicite)

1 pub l i c c l a s s F i l t r e D i a g implements F i l t r e {23 pub l i c vo id f i l t r e ( Te r r a i n [ ] [ ] mat ) {4 f o r ( i n t i =0; i<mat . l e n g t h -1 ; i++)5 f o r ( i n t j =0; i<mat [ 0 ] . l e n g t h -1 ; j++){6 i f ( [QUADRUPLE CLAUSE ] ) {7 mat [ i ] [ j ] = Te r r a i n . Herbe ;8 mat [ i +1] [ j +1] = Te r r a i n . Herbe ;9 }

10 e l s e i f ( [QUADRUPLE CLAUSE ] ) {11 mat [ i +1] [ j ] = Te r r a i n . Herbe ;12 mat [ i ] [ j +1] = Te r r a i n . Herbe ;13 }14 }15 }16 }

Vincent Guigue 2i013 - Course de Voiture 5/45

Page 6: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Filtre générique

◦ Détection d’un pattern (Utiliser isRunnable, ⇒ filtre booléen)◦ Remplacement

...

...

...

Vincent Guigue 2i013 - Course de Voiture 6/45

Page 7: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Proposition de codage1 pub l i c c l a s s F i l t r e G e n e r i q u e implements F i l t r e {2 p r i v a t e boolean [ ] [ ] window ;3 pub l i c F i l t r e G e n e r i q u e ( boolean [ ] [ ] window ){ t h i s . window = window ; }45 pub l i c vo id f i l t r e ( Te r r a i n [ ] [ ] mat ){6 f o r ( i n t i =0; i<mat . l eng th−window . l eng th −1; i++)7 f o r ( i n t j =0; i<mat [ 0 ] . l eng th−window [ i ] . l eng th −1; j++){8 i f ( matching ( mat , i , j ) ) { // t e s t9 f o r ( i n t m=0; m<window . l e n g t h ; m++)

10 f o r ( i n t n=0; n<window [ 0 ] . l e n g t h ; n++)11 mat [ i+m] [ j+n ] = Te r r a i n . Herbe ; // remplacement12 }13 }14 }1516 p r i v a t e boolean matching ( Te r r a i n [ ] [ ] mat , i n t i , i n t j ) {17 f o r ( i n t m=0; m<window . l e n g t h ; m++)18 f o r ( i n t n=0; n<window [ 0 ] . l e n g t h ; n++)19 i f ( Too l sTe r r a i n . i sRunnab l e (mat [ i+m] [ j+n ] ) != window [m] [ n ] )20 re tu rn f a l s e ;21 re tu rn t rue ;22 }23 }

Vincent Guigue 2i013 - Course de Voiture 7/45

Page 8: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Rappels sur l’évaluation

◦ CC : 70%- Partiel (0.25) : Annales en ligne + cours 91er avril 10h45-12h30 (et ce n’est pas une blague)

· Sur feuille, vérification de la maitrise du projet· Développement propre de nouvelles fonctions/strategy

- Rapport et performance de votre code (binôme) (0.6)· Nombre de fonctionnalités développées (Strategy,Optimisation, IHM)

· Propreté du code· Performance des stratégies (bonus/malus dans la compétition)

- Participation (0.15) : retard/présence, jalons manqués

◦ Exam : 30%

- Soutenances orale et modification de code individuelExam le 15/04, Soutenances le 17/04

Vincent Guigue 2i013 - Course de Voiture 8/45

Page 9: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Quelques explications sur le fonctionnement

◦ Slides en partie tirés du cours de A. Meyer, Lyon 1◦ Beaucoup de calcul matriciel (d’où les nouveaux usages des

cartes graphiques)

Vincent Guigue 2i013 - Course de Voiture 9/45

Page 10: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Cours de synthèse d’images 4

2 approches duales en SI

Impossible d'a!cher l'image. Votre ordinateur manque peut-être de mémoire pour ouvrir l'image ou l'image est endommagée. Redémarrez l'ordinateur, puis ouvrez à nouveau le fichier. Si le x rouge est

Impossible d'a!cher l'image. Votre ordinateur

Oeil Image (pixels)

Impossible d'a!cher l'image. Votre ordinateur manque peut-être de mémoire pour ouvrir l'image ou l'image est endommagée. Redémarrez l'ordinateur, puis ouvrez à nouveau le fichier. Si le x rouge est

Impossible d'a!cher l'image. Votre ordinateur

Oeil Image (pixels)

Des rayons sont lancés

depuis l’œil vers la scène

en passant par un pixel

Les objets sont projetés sur

l’écran dans la direction de l’œil.

Ray-tracing •!Image réaliste

•!Lent

Rendu projectif (cablé sur les

cartes graphiques modernes -> temps réel)

Vincent Guigue 2i013 - Course de Voiture 10/45

Page 11: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Cours de synthèse d’images 6

Pipeline

1. Clipping des polygones en 3D suivant la pyramide de vue

2. Projection des points sur le plan image

3.! Remplissage des triangles (Rasterizing) dans l’image

a.! Suppression des parties cachées : Z-Buffer

b.! Calcul de la couleur : illumination

Ap oeil

Plan image

A

Rendu projectif : PIPELINE

Vincent Guigue 2i013 - Course de Voiture 10/45

Page 12: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Cours de synthèse d’images 19

Projection perspective

!!Besoin de perspective

!!Configuration simple :

CDP

Q P(x,y,z)

A O

Plan image

-Z

Y

d

Si et

C

d=distance focale

Vincent Guigue 2i013 - Course de Voiture 10/45

Page 13: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Cours de synthèse d’images 20

Matrice de projection : MI!C

!! Soit un point dans l’espace de la camera

!! Résultat : un point dans l’espace Image

Vincent Guigue 2i013 - Course de Voiture 10/45

Page 14: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Cours de synthèse d’images 42

1. Projection des points sur le plan image

2. Clipping

3.! Remplissage des triangles (rasterisation) dans l’image 5.! Suppression des parties cachées

6.! Calcul de la couleur : illumination

Ap CDP

Plan image

(viewport)

d h

l A

Rendu projectif

Vincent Guigue 2i013 - Course de Voiture 10/45

Page 15: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Cours de synthèse d’images 49

1ere idée : algo du peintre

Ambiguïtés

Vincent Guigue 2i013 - Course de Voiture 10/45

Page 16: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Cours de synthèse d’images 56

12 13 14

11 12 12 13

10 12 12 13

10 10 11 12

5 4

Z-Buffer

+inf +inf +inf +inf +inf +inf +inf +inf +inf +inf +inf +inf

+inf +inf 4 4 4 +inf +inf +inf +inf +inf +inf +inf

+inf +inf 4 4 5 5 5 +inf +inf +inf

+inf +inf +inf 4 4 5 5 5 +inf +inf +inf +inf

+inf +inf +inf 3 3 4 4 +inf +inf

+inf +inf +inf 3 3 3 +inf +inf

+inf +inf +inf +inf 3 +inf +inf +inf

+inf +inf +inf +inf +inf +inf +inf +inf

4 5

z=11>5 donc caché

Vincent Guigue 2i013 - Course de Voiture 10/45

Page 17: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Cours de synthèse d’images 64

OpenGL : par exemple

!! Effacer le buffer et le zbuffer entre chaque image

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

!! Active le test des Z avec le Z-buffer

glEnable(GL_DEPTH_TEST) ; activé

non

activé

Vincent Guigue 2i013 - Course de Voiture 10/45

Page 18: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

JAVA et 3D

◦ On propose d’utiliser lwjGL- http://lwjgl.org/

◦ La puissance de l’architecture vient du fait qu’il n’y a pasgrand chose à modifier pour faire de la 3D...◦ Le modèle ne change pas, seule la manière de l’afficher est

modifiée.◦ IHMSwing devient

- public class IHM3D extends AWTGLCanvas- void paint(Graphics g) devient public void paintGL()

Vincent Guigue 2i013 - Course de Voiture 11/45

Page 19: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Coté main...

... pas de modification ! (logique on a prévu ce cas figure dans leMVC)

1 S imu l a t i o n simu = new S imu l a t i o n ( t rack , v , s t r a t e g y ) ;23 JFrame f en = new JFrame ( ) ;4 f en . s e tD e f a u l t C l o s eOp e r a t i o n ( JFrame .EXIT_ON_CLOSE) ;5 IHM3D ihm = new IHM3D ( ) ;67 simu . add ( ihm ) ;

Vincent Guigue 2i013 - Course de Voiture 12/45

Page 20: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Qu’est ce qu’une IHM3D?

◦ Proposition : utiliser le AWTGLCanvas qui ouvre un panelOpenGL dans l’univers SWING

1 pub l i c c l a s s IHM3D extends AWTGLCanvas2 implements KeyL i s t ene r , Upda t eEven tL i s t en e r {3 p r i v a t e Ar r a yL i s t <Observeur3D> toDraw ;45 pub l i c IHM3D( ) throws LWJGLException {6 toDraw = new Ar r a yL i s t <Observeur3D >() ;7 t h i s . addKeyL i s t ene r ( t h i s ) ; // j e m’ auto−ecoute pour l e s touche s8 }9 pub l i c vo id paintGL ( ) {

10 // su r c h a r g e11 }12 pub l i c vo id add ( Observeur3D d ){ toDraw . add ( d ) ; }13 pub l i c vo id keyPre s s ed ( KeyEvent e ) {}14 pub l i c vo id keyRe l e a s ed ( KeyEvent e ) {}15 pub l i c vo id keyTyped ( KeyEvent e ) { }1617 pub l i c vo id manageUpdate ( ) {}18 }

Vincent Guigue 2i013 - Course de Voiture 13/45

Page 21: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Spécificités de la 3D

◦ Pas de mise à jour explicite : la 3D se refraichît en boucle◦ Nouveaux observeurs :1 pub l i c i n t e r f a c e Observeur3D {2 pub l i c vo id drawGL ( ) ;3 }

◦ Beaucoup de paramètres à régler pour l’affichage :- Surcharge de l’initialisation (AWTGLCanvas ) :

1 protected vo id i n i tGL ( ) {2 g lEnab l e (GL_TEXTURE_2D) ; // a c t i v a t i o n des t e x t u r e s3 g lEnab l e (GL_DEPTH_TEST) ; // g e s t i o n de l a p r o f ondeu r4 }

- Dans paintGL() ... On appelle glsettings()

Vincent Guigue 2i013 - Course de Voiture 14/45

Page 22: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

PaintGL

◦ RAZ du buffer◦ Définition d’une scène

1 p r i v a t e vo id g l s e t t i n g s ( ){2 g l C l e a r (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ) ;3 g lV i ewpo r t (0 , 0 , getWidth ( ) , g e tHe i gh t ( ) ) ; // 100% de l a f e n ê t r e4 g l C l e a r C o l o r ( 0 . f , 0 . f , 0 . f , 1 . 0 f ) ;5 glMatr ixMode (GL_PROJECTION) ;67 g l L o a d I d e n t i t y ( ) ; // RAZ t r a n s f o rma t i o n s89 // d e f i n i t i o n de l a t a i l l e de l a f e n e t r e 3D où l ’ on r e ga r d e

1011 g lOr tho ( ( f l o a t ) −getWidth ( )∗ zoom , ( f l o a t ) getWidth ( )∗ zoom ,12 ( f l o a t ) −ge tHe i gh t ( )∗ zoom ∗0 . 5 , ( f l o a t ) ge tHe i gh t ( )∗ zoom ∗1 . 5 , −2000 , 2000 ) ;1314 glMatr ixMode (GL_MODELVIEW) ;15 . . .

Vincent Guigue 2i013 - Course de Voiture 15/45

Page 23: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Définition de la fenêtre

Vincent Guigue 2i013 - Course de Voiture 16/45

Page 24: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

PaintGL

◦ Définition des lumières/matériaux

1 p r i v a t e vo id g l s e t t i n g s ( ){2 [ . . . ]3 i n i t L i g h t A r r a y s ( ) ; // code f o u r n i s u r l e s i t e web45 glShadeModel (GL_SMOOTH) ; // mode de rendu67 g lMa t e r i a l (GL_FRONT, GL_SPECULAR, matSpecu la r ) ;8 g l M a t e r i a l f (GL_FRONT, GL_SHININESS , 50 .0 f ) ;9

10 g l L i g h t (GL_LIGHT0 , GL_POSITION , l i g h t P o s i t i o n ) ;11 g l L i g h t (GL_LIGHT0 , GL_SPECULAR, wh i t e L i g h t ) ;12 g l L i g h t (GL_LIGHT0 , GL_DIFFUSE , wh i t e L i g h t ) ;13 g lL i gh tMode l (GL_LIGHT_MODEL_AMBIENT, lModelAmbient ) ;1415 g lEnab l e (GL_LIGHTING ) ; // a c t i v a t i o n16 g lEnab l e (GL_LIGHT0 ) ;17 g lEnab l e (GL_COLOR_MATERIAL) ;18 g l C o l o rMa t e r i a l (GL_FRONT, GL_AMBIENT_AND_DIFFUSE) ;1920 g l L o a d I d e n t i t y ( ) ;

Vincent Guigue 2i013 - Course de Voiture 17/45

Page 25: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Modes de rendu

Synthè!"#$%&'()"! 6

Texture

Fil de fer Faces cachées (objet) Rendu Gouraud

Rendu Phong

HistoriqueVincent Guigue 2i013 - Course de Voiture 18/45

Page 26: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

PaintGL

◦ Et enfin... On peut dessiner !

1 pub l i c vo id paintGL ( ) {2 t r y {3 g l s e t t i n g s ( ) ;4 // d é f i n i t i o n de l a camera5 GLU. g luLookAt ( x , y , z , 500 , 500 , −500, 0 , 0 , 1 ) ;6 // MVC c l a s s i q u e7 f o r ( Observeur3D d : toDraw ){8 g lPushMat r i x ( ) ;9 d . drawGL ( ) ;

10 g lPopMatr i x ( ) ;11 }12 swapBu f f e r s ( ) ;1314 r e p a i n t ( ) ;15 } catch ( LWJGLException e ) { throw new Runt imeExcept ion ( e ) ; }16 }

Vincent Guigue 2i013 - Course de Voiture 19/45

Page 27: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Fonctionnement de la caméra :1 GLvoid g luLookAt ( GLdouble eyex , GLdouble eyey ,2 GLdouble eyez , GLdouble c en t e r x , GLdouble3 cen t e r y , GLdouble c en t e r z , GLdouble upx ,4 GLdouble upy , GLdouble upz )

Vincent Guigue 2i013 - Course de Voiture 20/45

Page 28: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Rendre un objet en 3D

Dans l’idée, c’est simple : on multiplie les dessins de formesbasiques (triangle/carré) dans l’espace :Sur un exemple dans :

12 pub l i c c l a s s C i r cu i tOb s e r v eu r 3D implements Observeur3D{3 [ . . . ]45 pub l i c vo id drawGL ( ) {67 GL11 . g lBeg i n (GL11 .GL_QUADS) ;8 {9 GL11 . g l V e r t e x 3 f (0 , 0 , 0 ) ;

10 GL11 . g l V e r t e x 3 f (0 , he ightR , 0 ) ;11 GL11 . g l V e r t e x 3 f ( widthR , he ightR , 0 ) ;12 GL11 . g l V e r t e x 3 f ( widthR , 0 , 0 ) ;13 }14 GL11 . g lEnd ( ) ;15 }

Vincent Guigue 2i013 - Course de Voiture 21/45

Page 29: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Utilisation de volumes préfédinis

Dessiner la voiture sous forme de sphère est assez simple :1 pub l i c c l a s s Voi tu reObse rveur3D implements Observeur3D{2 p r i v a t e org . l w j g l . u t i l . g l u . Sphere sphe r e = new Sphere ( ) ;3 p r i v a t e Vo i t u r e v o i t u r e ;45 pub l i c Voi tu reObse rveur3D ( Vo i t u r e v o i t u r e ) {6 t h i s . v o i t u r e = v o i t u r e ;7 }89 pub l i c f l o a t getX ( ){ re tu rn ( f l o a t ) v o i t u r e . g e t P o s i t i o n ( ) . getX ( ) ; }

10 pub l i c f l o a t getY ( ){ re tu rn ( f l o a t ) v o i t u r e . g e t P o s i t i o n ( ) . getY ( ) ; }1112 pub l i c vo id drawGL ( ) {13 g l C o l o r 3 f (1 , 0 , 1 ) ; // code RGB en t r e 0 e t 114 g l T r a n s l a t e f ( getX ( ) , getY ( ) , 0 ) ;15 s phe r e . draw (20 , 10 , 1 0 ) ; // rayon + r é s o l u t i o n16 g l T r a n s l a t e f (−getX ( ) , −getY ( ) , 0 ) ;17 g l C o l o r 3 f (1 , 1 , 1 ) ;18 }19 }

Vincent Guigue 2i013 - Course de Voiture 22/45

Page 30: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

TexturesPour des rendus plus agréables et pour le terrain, il faut gérer lesimages en plus de la 3D :

Cours de synthè!"#$%&'()"! 5

Plaquage de la texture

! A chaque sommet de la face! Coordonnées textures (u,v)

! *+,-.#/011"!203$#4#+3"#20!&5&03#$(3!#6%&'()"#*$(3!#6(#5"75+1".

!"#$%"&'

()*%'+,'-,./'

0-12$1231450.12614

0-72$7237450.72674(0,0)

(1,1)(0,1)

(1,0)

Vincent Guigue 2i013 - Course de Voiture 23/45

Page 31: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Texture : application sur le circuit

◦ La classe possède un attribut Texture◦ Une texture est stockée dans la mémoire graphique et possède

un identifiant◦ Texture = contrainte : souvent des images carrées, toujours en

puissance de 2

1 pub l i c vo id drawGL ( ) {2 // chargement l o r s du p r em i e r appe l3 i f ( t e x t u r e == nu l l ){4 Buf f e r ed Image im = Too l sTe r r a i n . imageFromCi r cu i t ( t r a c k ) ; // c r e a t i o n5 t r y {6 ImageIO . w r i t e ( im , "PNG" , new F i l e ( " t e r r a i n . png" ) ) ;7 t e x t u r e = Textu reLoade r . g e tTex tu r e ( "PNG" , ResourceLoade r . getResourceAsSt ream ( " t e r r a i n . png" ) ) ;8 } catch ( IOExcept i on e ) {9 e . p r i n t S t a c kT r a c e ( ) ;

10 }11 width = t e x t u r e . getTextureWidth ( ) ;12 h e i g h t = t e x t u r e . g e tTex tu r eHe i gh t ( ) ;13 }14 . . .

Vincent Guigue 2i013 - Course de Voiture 24/45

Page 32: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Texture : application sur le circuit (suite)

1 . . .2 GL11 . g lB i ndTex tu r e (GL11 .GL_TEXTURE_2D, t e x t u r e . ge tTex tu re ID ( ) ) ;3 GL11 . g l P i x e l S t o r e i ( GL11 .GL_UNPACK_ALIGNMENT, 1 ) ;45 // draw a quad t e x t u r e d to match the s p r i t e6 GL11 . g lBeg i n (GL11 .GL_QUADS) ;7 {8 GL11 . g lTexCoord2 f (0 , 0 ) ; GL11 . g l V e r t e x 3 f (0 , 0 , 0 ) ;9 GL11 . g lTexCoord2 f (0 , 1 ) ; GL11 . g l V e r t e x 3 f (0 , he i gh t , 0 ) ;

10 GL11 . g lTexCoord2 f (1 , 1 ) ; GL11 . g l V e r t e x 3 f ( width , he i gh t , 0 ) ;11 GL11 . g lTexCoord2 f (1 , 0 ) ; GL11 . g l V e r t e x 3 f ( width , 0 , 0 ) ;12 }13 GL11 . g lEnd ( ) ;14 GL11 . g lB i ndTex tu r e (GL11 .GL_TEXTURE_2D, 0 ) ;1516 }

Vincent Guigue 2i013 - Course de Voiture 25/45

Page 33: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Exemple de résultat

Vincent Guigue 2i013 - Course de Voiture 26/45

Page 34: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Exemples de circuit d’examen

Gestion d’un labyrinthe :

Vincent Guigue 2i013 - Course de Voiture 27/45

Page 35: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Exemples de circuit d’examen

Gestion d’un nouveau type de terrain :

Vincent Guigue 2i013 - Course de Voiture 27/45

Page 36: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Exemples de circuit d’examenJouer un circuit de 2 manières

Vincent Guigue 2i013 - Course de Voiture 27/45

Page 37: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Circuit mystère

◦ Construire un circuit mystère à partir d’un algorithme, parexemple :

- 500x500 pixels, bordure d’herbe de 10 pixels- Départ en ... Arrivée en ...- ...

Questions◦ Dans quel objet le développer ?◦ Implémenter l’algorithme

Vincent Guigue 2i013 - Course de Voiture 28/45

Page 38: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Module LI260 – Licence 2 page 2

Exercice 3 – Circuit analytique mystere (6 pts)

Nous proposons dans cet exercice de construire un circuit de maniere analytique, en respectant a la lettrel’algorithme fourni ci-dessous. Vous creerez la classe CircuitFactoryFromAlgo, sans argument.Attributs/Constructeur :Dans le constructeur, vous initialiserez les attributs int sizeX=600 ; int sizeY=600 ; int bordure=20 ; Laclasse possede egalement les attributs :

private Vecteur depart;

private Vecteur dirDepart = new Vecteur(0,1); // comme d’habitude

private Vecteur dirArrivee = new Vecteur(0,1); // comme d’habitude

Methode build :Dans la methode public Circuit build() de cette classe, on commencera par instancier un tableau track deTerrain de 600x600 cases.Goudron partout sauf sur les bords :En parcourant toutes les cases a l’aide d’une double boucle for, vous mettrez toutes les cases en Route, sauf lescases dont l’une des coordonnees est inferieure a bordure ou superieure a sizeX/Y-bordure.Depart :Le point de depart se situe en (bordure+10, bordure+10). Mettez a jour la matrice de Terrain ainsi que l’attributdepart de la classe.Arrivee :La ligne d’arrivee est definie par le code suivant :

for(int i= 0; i<20; i++){

track[300-i][300] = Terrain.EndLine;

}

Coeur du circuit :Definition de double : a=0, b=1Definition de int : nbPas = 10000Pour i allant de 1 a nbPas faire :

– ✓ = i⇡10nbPas

NB : ⇡ est defini dans Math.PI. Suivant votre implementation du calcul, il faut mieux convertir nbPas endouble pour eviter les problemes de division.

– ⇢ = a✓ + b;– x = ⇢ cos(✓)8 + 300

NB : x doit etre un entier, il faut donc convertir le resultat ci-dessus a l’aide de (int).– y = ⇢ ⇤ sin(✓)8 + 300 (meme conversion en int)– Ajouter le code suivant pour convertir les cases autour de (x,y) en herbe :track[x][y] = Terrain.Herbe;

for(int j=0; j<2; j++){

track[x+j][y] = Terrain.Herbe;

track[x][y+j] = Terrain.Herbe;

}

Retour :return new CircuitImpl(track, depart, dirDepart, dirArrivee) ;

Q 3.1 Creer ce circuit, jouer le et sauver le resultat dans les fichiers mystere.com/mystere.pngVincent Guigue 2i013 - Course de Voiture 29/45

Page 39: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Départ manuel

Vincent Guigue 2i013 - Course de Voiture 30/45

Page 40: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Héritage vs Décoration1 pub l i c i n t e r f a c e C i r c u i t {2 pub l i c double g e tD i s t ( i n t i , i n t j ) ; // Pour i n t e r r o g e r d i j k s t r a3 pub l i c Te r r a i n g e tT e r r a i n ( i n t i , i n t j ) ;4 pub l i c Te r r a i n g e tT e r r a i n ( Vecteu r v ) ;5 pub l i c Vecteu r ge tPo in tDepa r t ( ) ;6 pub l i c Vecteu r g e tD i r e c t i o nDepa r t ( ) ;7 pub l i c Vecteu r g e t D i r e c t i o n A r r i v e e ( ) ;8 pub l i c i n t getWidth ( ) ;9 pub l i c i n t ge tHe i gh t ( ) ;

10 pub l i c Ar r a yL i s t <Vecteur> g e t A r r i v e e s ( ) ;11 }

◦ On veut créer un système générique pour ajouter des obstacles dansle circuit (possibilité d’ajouter des obstacles rectangles, ronds...).

◦ Un obstacle permettra donc de coder la définition d’un zone del’espace (pour une coordonnée il est nécessaire de savoir si on estsur l’obstacle ou pas).

◦ On construira ensuite une nouvelle implémentation de circuit gérantles obstacles.

Vincent Guigue 2i013 - Course de Voiture 31/45

Page 41: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Obstacle

1 Cahier des chargesQu’est qu’un obstacle du point de vue du cahier des charges ?(expliquer en une ou deux phrases) Utiliseriez vous uneinterface ou une classe abstraite pour l’implémenter ?(expliquer en une ou deux phrases) Donner le code de laclasse/interface Obstacle.

2 ConcrétisationDonner le code d’un obstacle rectangle et d’un obstacle rond(en accord avec la question précédente).

Vincent Guigue 2i013 - Course de Voiture 32/45

Page 42: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Prise en compte des obstacles dans le Circuit

L’idée de base est simple : on veut prendre en compte les obstacles sanschanger le code de la classe circuit On souhaite pouvoir ajouter plusieursobstacles (nombre indéterminé) de n’importe quel type (rectangle, rondou autres définis dans le futur).

1 Par héritageDonner le code de la classe CircuitAvecObstacleHeritage quiimplémente l’idée ci-dessus en utilisant l’héritage.

2 Par décorationDonner le code de la classe CircuitAvecObstacleDecoration quiréalise exactement les mêmes opérations que dans la questionprécédente mais en prenant un attribut Circuit à décorer.

3 Exemples d’usage

Vincent Guigue 2i013 - Course de Voiture 33/45

Page 43: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Approfondissement

1 Réflexions sur les deux solutionsQuels sont les avantages et inconvénient des deux solutions ?Pistes de réponse : - comparer le type de l’objet qui est étendu parhéritage avec le type de l’attribut qui est décoré dans la secondesolution. - comparer comment sont instanciés les deux objets. -comparer le nombre d’indirection (c’est à dire le nombre d’appels defonctions pour effectuer une même opération dans les deuxarchitectures).

2 Pérénisation : sauvegarde/chargementQuels sont les enjeux et les choix à faire au niveau de lasauvegarde des circuits avec obstacles ? Proposer une ouplusieurs architecture de sauvegarde chargement des circuitsavec obstacles.

Vincent Guigue 2i013 - Course de Voiture 34/45

Page 44: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Algorithmique : radar parabolique

Prédiction

Réglage de l’avance

Mesure de la force du virage à venir

(x_max,y_max)

35

30

25

20

15

10

5

0

40

−20 −10 0 2010

0

5

10

15

20

25

30

35

40

-25 -20 -15 -10 -5 0

Les faisceaux ont pour équation y = ax2 + bx + c . Le paramétragedu radar se fait en donnant :◦ ymax : la hauteur du maximum (ymax = 40)◦ xmax : la déviation en x du point max de la parabole (xmax

prend les valeurs :[−12.5, −10, −7.5, −5, 5, 7.5, 10, 12.5]).

Les équations des faisceaux correspondent à :b = 2ymax/xmax , a = −b/(2xmax), c = 0.

Vincent Guigue 2i013 - Course de Voiture 35/45

Page 45: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Algorithme d’analyse sur un faisceau :

A partir de la position et de la direction de la voiture, nous voulonsextraire les coordonnées de 100 points répartis le long d’un faisceau.On calcule 100 valeurs de x entre 0 et 2xmax . Pour chaque valeur,on calcule la valeur y associée. Il faut ensuite faire un changementde repère pour obtenir des coordonnées dans l’espace du circuit.

◦ Calculer l’angle α entre la direction de la voiture et la direction(0, 1). Vous supposerez que vous disposez de la fonctionadéquat, soit dans la classe Vecteur, soit dans une classe Tools.

◦ Appliquer une rotation α sur les coordonnées (x , y).◦ Appliquer la translation suivante : x ← x + voiture.x ,

y ← y + voiture.y

Une fois les points dans le bon espace, l’algorithme est très prochedu radar Dijkstra : on parcours les points tant que l’on n’est pasdans l’herbe et on note le score le plus intéressant.

Vincent Guigue 2i013 - Course de Voiture 36/45

Page 46: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Implémentation

1 Quels sont les attributs du radar parabolique ?2 Donner la signature du constructeur ainsi qu’un exemple de

construction d’un tel radar depuis le main.3 Donner le code de la méthode doublescoreFaisceau(double xmax) qui prend en argument xmaxet qui retourne le meilleur score dijkstra rencontré.NB1 : ymax devra évidemment être accessible, ainsi que les données de la voiture.NB2 : question (un peu) difficile qui nécessite sans doute un peu de réflexion au brouillon.NB3 : on partira de x=0 pour aller vers xmax. Si on rencontre de l’herbe, on s’arrête.

NB4 : il peut être utile de coder le changement de repère dans une méthode privée à part pour

faciliter la lecture du code.

4 Donner le reste du code de la classe RadarParabolique.NB1 : vous pourrez choisir de faire de l’héritage par rapport au radar classique ou pas.NB2 : vous mettrez quelques commentaires pour que je m’y retrouve si vous faites appel à desméthodes/attributs issus de la classe mère

1 pub l i c i n t e r f a c e Radar {2 pub l i c double [ ] s c o r e s ( ) ; // s c o r e de chaque branche3 pub l i c double [ ] d i s t a n c e s I n P i x e l s ( ) ; // pour l ’ o b s e r v e r4 pub l i c i n t ge tBe s t I nd e x ( ) ; // m e i l l e u r i n d i c e5 pub l i c double [ ] t h e t a s ( ) ; // a ng l e s de chaque f a i s c e a u6 }

Vincent Guigue 2i013 - Course de Voiture 37/45

Page 47: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Approfondissement

1 ObservationProposer une technique d’observation du radar parabolique.Expliquer votre approche en quelques phrases. S’il vous restedu temps à la fin, proposez un code réalisant l’opération.

2 StratégieProposer une stratégie à partir du radar parabolique (enquelques phrases, pas de code).NB : vous pouvez évidemment ajouter d’autres radars.

3 (Un peu de) mathématiquesMontrer que les paramètres de la parabole sont bien :b = 2ymax/xmax , a = −b/(2xmax), c = 0

Vincent Guigue 2i013 - Course de Voiture 38/45

Page 48: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Partie commune + personnalisation

◦ Algorithmes suffisamment efficaces pour jouer toutes lescourses◦ ... Et d’autre lors de l’examen sur machine◦ Architecture très propre, MVC fonctionnel◦ Interface temps-réel de base (une fenêtre)◦ Niveau de performance minimal : 1/3 des courses en vert

(10% du meilleur temps)

La personnalisation peut prendre diverse formes... Quelquesexemples dans les slides suivants.

Vincent Guigue 2i013 - Course de Voiture 39/45

Page 49: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Editeurs de circuits :

Vincent Guigue 2i013 - Course de Voiture 40/45

Page 50: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Editeurs de circuits :

Vincent Guigue 2i013 - Course de Voiture 40/45

Page 51: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Gestion 3D

Vincent Guigue 2i013 - Course de Voiture 41/45

Page 52: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Gestion 3D

Vincent Guigue 2i013 - Course de Voiture 41/45

Page 53: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Editeurs de stratégies :

Vincent Guigue 2i013 - Course de Voiture 42/45

Page 54: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Editeurs de stratégies :

Vincent Guigue 2i013 - Course de Voiture 42/45

Page 55: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Editeurs de stratégies :

Vincent Guigue 2i013 - Course de Voiture 42/45

Page 56: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

IHM diverses

Vincent Guigue 2i013 - Course de Voiture 43/45

Page 57: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

IHM diverses

Pause Zoom Détails !

Vincent Guigue 2i013 - Course de Voiture 43/45

Page 58: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

IHM diverses

Visualisation de stratégies

Vincent Guigue 2i013 - Course de Voiture 43/45

Page 59: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Implémentation de stratégies complexes

Algorithme Génétique

Vincent Guigue 2i013 - Course de Voiture 44/45

Page 60: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Implémentation de stratégies complexes

Point à point

Vincent Guigue 2i013 - Course de Voiture 44/45

Page 61: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Implémentation de stratégies complexes

Fin de courses

Vincent Guigue 2i013 - Course de Voiture 44/45

Page 62: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Implémentation de stratégies complexes

Raccourci de trajectoire itératif

Vincent Guigue 2i013 - Course de Voiture 44/45

Page 63: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Implémentation de stratégies complexes (2)

Franchissement de diagonales

Vincent Guigue 2i013 - Course de Voiture 45/45

Page 64: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Implémentation de stratégies complexes (2)

Point à point

Vincent Guigue 2i013 - Course de Voiture 45/45

Page 65: Cours 9 : Introduction à la 3Dwebia.lip6.fr/.../uploads/Course/LI260_2015_Cours9.pdfStrategy 3D Implem. Observeurs Examen Partiel Personnalisations Cours de synth se dÕimages 4 2

Strategy 3D Implem. Observeurs Examen Partiel Personnalisations

Implémentation de stratégies complexes (2)

Détection des chemins impossibles

Vincent Guigue 2i013 - Course de Voiture 45/45