amélioration de la scène et des performances d'un...

47
Rapport de stage 2008 1 Amélioration de la scène et des performances d'un simulateur d'entrainement maritime IFSIC Université de Rennes 1 Campus de Beaulieu 35042 RENNES Cédex SIREHNA 1, rue de la Noë – BP 42105 44321 NANTES CEDEX Sous la responsabilité de : Jean-Jacques MAISONNEUVE (Sirehna) Kadi BOUATOUCH (IFSIC) Dan Que LE DIIC2 – INC Année 2007-2008

Upload: phungminh

Post on 14-Sep-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Rapport de stage 2008

1

Amélioration de la scène et des performances d'un simulateur d'entrainement maritime

IFSIC Université de Rennes 1Campus de Beaulieu35042 RENNES Cédex

SIREHNA1, rue de la Noë – BP 42105

44321 NANTES CEDEX

Sous la responsabilité de :Jean-Jacques MAISONNEUVE (Sirehna)Kadi BOUATOUCH (IFSIC)

Dan Que LEDIIC2 – INC

Année 2007-2008

Rapport de stage 2008

Remerciements

Je tiens tout d'abord à exprimer mes remerciements à M. Olivier DOUCY de m'avoir permis de réaliser mon stage au sein de l'entreprise Sirehna.

Je tiens ensuite à remercier M. Jean-Jaques MAISONNEUVE qui m'a encadré et m'a suivi tout au long du stage ainsi que Michel PICARD et Alexandre JAMET, qui travaillent dans le projet, pour l'aide qu'ils m'ont apportée.

Je remercie également M. Kadi BOUATOUCH pour sa validation de mon sujet.

2

Rapport de stage 2008

Résumé

Un simulateur est un outil très performant pour l'enseignement et l'entrainement, c'est comme un jeu éducatif. Et c'est dans ce but que le simulateur de pêche initialement développé pour le lycée maritime de Ciboure par l'ESTIA, est repris et adapté par Sirehna. L'objectif consiste à simuler le comportement de différents navires, de représenter la scène de la mer ainsi que des instruments qui sont nécessaires pour la navigation.

Pour rendre le simulateur de pêche réaliste, un des facteurs important est le réalisme de la scène et de la mer en particulier. Ce qui compte dans le « réalisme » ce n'est pas seulement le côté graphique mais aussi le côté physique. L'aspect graphique donne une bonne impression et rend le simulateur plus intéressant et plus agréable à utiliser et l'approche physique permet de simuler plus précisément les mouvements du navire.

Ce logiciel est donc développé et sera utilisé non seulement par le lycée maritime de Ciboure mais il sera aussi un outil intéressant dans les projets de développement de Sirehna - une entreprise spécialisée dans le domaine maritime.

Abstract

A simulator is a very effective tool for teaching and training, it's like an educative game. So the fishing simulator initially developed for this purpose by ESTIA for the requirement of Ciboure maritime high school. The objective consists in simulating different ship behaviours, in representing the scene of the sea and also the instruments which are necessary for sailing.

To make the fishing simulator realistic, one of the important elements is the realistic scene and the realistic sea in particular. But the graphical aspect doesn't count for all, the physical aspect is also important. On the one hand, the rendering gives a good feeling and makes the simulator more interesting and friendly to use. On the other hand, the physical characteristics afford to simulate the ship motion with a high precision.

So, this software is developed and will be used not only by Ciboure school but it will become an interesting tool for others development projects of Sirehna – a company skilled in the maritime field.

3

Rapport de stage 2008

Sommaire

Remerciements 2Résumé 3Abstract 3Sommaire 4Introduction 6

1. Présentation de l'entreprise SIREHNA 7

1.1 Historique 7 1.2 Secteur d'activité 7 2. Présentation de l'école maritime CIBOURE et du simulateur de ESTIA 9

3. Le stage 9

3.1 Prendre en connaissance le simulateur CIBOURE 10

3.1.1 Disposition matérielle des postes élèves et du poste professeur 103.1.2 L'architecture logicielle modifiée et améliorée 113.1.3 Déroulement d'une séance de simulation 14

3.2 Développements unitaires 16

3.2.1 Les timers 163.2.2 Les commandes 163.2.3 Le sonar 163.2.4 Le son 183.2.5 Les balises 183.2.6 L'installation 193.2.7 Bilan 19

3.3 Amélioration de l'aspect de la mer 20

3.3.1 Théories : modèle statistique des vagues et la transformée de Fourier 20 a) Introduction 20 b) Modèle statistique des vagues Tessendorf et l'utilisation de la FFT 20 c) Construction de la mer avec un champ de hauteur aléatoire 21 d) L'éclairage en temps réel 22 3.3.2 Étude de l'implémentation actuelle 23 a) Algorithme utilisé dans la version actuelle 24 b) Comparaison avec la méthode de Tessendorf 27

4

Rapport de stage 2008

c) Vérifications numériques des caractéristiques de la mer régulière et irrégulière 28 d) Vérifications graphiques des caractéristiques de la mer régulière 29 e) Bilan des mesures 30

3.3.3 Modifications du calcul de la mer pour adapter aux besoins de Sirehna 31 a) Réglage des paramètres pour la mer régulière 31 b) Les spectres d'énergie 32 c) La taille des patchs 39 d) Bilan 40

Conclusion 41Index des figures 42

Annexe I 43Annexe II 44Annexe III 45Annexe IV 46

Bibliographies 47

5

Rapport de stage 2008

Introduction

Dans les écoles maritimes, il y a une forte demande d'outils de simulation d'entrainement à cause du coût considérable d'entrainement en pleine mer. C'est pourquoi le développement d'un tel logiciel est un enjeu important. Et plus la simulation s'approche de la réalité, plus l'enseignement est intéressant et efficace. Dans la reproduction de la scène de navigation, une des difficultés se concentre sur la modélisation de la mer et le calcul des mouvements du navire en temps réel.

Le simulateur de pêche, initialement développé pour le lycée maritime de Ciboure par l'ESTIA, maintenant repris et adapté à Sirehna, est un simulateur qui est réaliser dynamiquement des scènes concrètes et réalistes tout en garantissant une manipulation facile. En utilisant des nouvelles technologies en calcul physique et graphique, le simulateur est capable de reproduire les situations difficiles de la météo, ce qui aidera les élèves à se confronter à des cas réalistes.

À mon arrivée à Sirehna, le projet était incomplet. En rejoignant l'équipe de développement du simulateur, j'ai d'abord la charge d'améliorer la représentation visuelle de la scène complète dont la modélisation de la mer, du paysage,...et aussi d'ajouter ou d'améliorer les fonctionnalités demandées.

Dans ce rapport, je vais d'abord vous présenter l'entreprise Sirehna, puis un résumé sur l'origine du projet. La suite abordera mon travail durant le stage comprenant les développements fonctionnels et finalement, la plus grande partie de mon stage, l'étude sur la modélisation de la mer en temps réel.

6

Rapport de stage 2008

1 Présentation de l'entreprise SIREHNA

1.1 Historique

Sirehna est une société de R&D crée en 1986 et en relation avec le laboratoire de mécanique des fluides (LMF) de l'Ecole Centrale de Nantes (ECN), Sirehna est d'abord développé grâce au transfert des recherches du laboratoire en applications industrielles, principalement dans le domaine maritime. Durant ces années, Sirehna offre de nombreux services concernant les outils de mesure/simulation adaptés dans la domaine maritime.

Sirehna a, depuis 16 ans, le label ANVAR en tant que société de recherche sous contrat. Elle a reçu également du ministère de la recherche le titre de crédit d'impôt en faveur de la recherche.

Les principaux actionnaires de la société jusqu'à 2007 sont SIREHNA S.A.S (80%), employés (10%), Thales Underwater systems (10%). Au début 2008, DCNS le leader du secteur naval militaire en Europe a acquis 65% d'actions de la société. Cela ouvre à Sirehna un important avenir à l'internationale [Sirh].

1.2 Secteur d'activité

Sirehna est spécialisée dans la résolution des problèmes complexes dans les domaines de Transport et Énergie.

– 70% de ses activités sont orientées dans la filière maritime (naval, offshore, défense)– 30% des activités concernent l'aéronautique et spatial, auto motive, rails,..

Avec ses connaissances et ses savoir faire, Sirehna dispose de nombreuses offres pour ses clients internationaux et nationaux pour les problèmes tels que:

– La simulation numérique et l'optimisation (mécaniques des fluides, thermique, acoustique..) [Sirh].

Fig. 1 : Les simulations numériques

– Mesures et tests expérimentaux : mouvements des véhicules (bateaux, camions, ...), différentes mesures (terrains, houle, route, ...), sillages (avions, navires, ...)[Sirh].

7

Rapport de stage 2008

Fig. 2 : Les mesures des bateaux

– Contrôle dynamique : stabilisation de plate-forme, auto-pilote, positionnement dynamique, appontage automatique de drone, contrôle actif de trajectoire. Dans ce domaine, Sirehna consacre la R&D essentiellement pour les applications militaires [Sirh].

Fig. 3 Les expériences sur le contrôle dynamique

8

Rapport de stage 2008

2 Présentation de l'école maritime CIBOURE et du simulateur de ESTIA

En tant que lycée maritime, Ciboure a besoin d'un outil pédagogique performant et suffisamment réaliste pour ses formations initiales de navigation et de pêche. Le simulateur d'entrainement maritime a été ainsi développé en 1998 par l'Ecole Supérieur des Technologies Industrielles Avancées - ESTIA. Cet outil a été écrit en langage de programmation C++ et en GL pour le graphique, il fonctionnait sur UNIX sur les postes de travail Silicon Graphics - SGI.

Ce simulateur permet donc à l'enseignant, à partir d'un poste professeur, d'envoyer à 6 postes élèves différentes leçons et de les contrôler. L'apprentissage de l'élève est diversifié et progressif, les principaux exercices sont sur la manipulation du navire, l'interface de conduite du bateau, les instruments tels que le radar, le sonar, le sondeur, et les techniques de pêche industrielle.

Après dix ans, l'informatique a considérablement évolué au niveau du matériel et du logiciel. Par conséquent, le lycée souhaite changer l'ensemble de son matériel servant au simulateur, ce qui entraîne des changements importants au niveau du système d'exploitation, des bibliothèques ainsi que de l'architecture générale du simulateur. Un travail de portage et d'amélioration est donc nécessaire. En 2007, Estia et Ciboure ont confié ce travail à Sirehna. En plus, en ces dernières années, nous disposons beaucoup plus de ressources de calcul et d'affichage qu'en 1998, on a possibilité de modéliser en temps réel des vagues océaniques plus réalistes et également, de calculer le comportement du navire dû aux effets des vagues.

3 Le stage

Quand je suis arrivée à l'entreprise le projet était partiellement-réalisé, la structure du logiciel a été définie et implémentée. Ce qui reste à finir est l'implémentation des fonctionnalités manquantes, l'amélioration de l'interface graphique de navigation et de la scène.

Sujet de stage : Amélioration de la scène et des performances du simulateur.Pour ce simulateur d'entraînement maritime, une représentation visuelle convenablement

réaliste de la scène (mer, navire, paysage, ouvrages côtiers, objets en mer, objets sur terre, ...) est importante. Dans le cadre du stage, une amélioration du réalisme de la scène et des différents objets concernés est envisagée, et éventuellement l'ajout des fonctionnalités particulières.

Objectifs :– Jusqu'à fin mai : livraison de la première version du simulateur à Ciboure, avec toutes

les fonctionnalités de base testées.– Jusqu'à fin août : travaux complémentaires pour améliorer le fonctionnement, la scène et

corriger des bogues.

Travaux :– Prendre connaissance du simulateur dont l'architecture générale, la structure du code, les

objets et les classes concernant le sujet du stage.– Effectuer des tâches ponctuelles afin de finaliser le simulateur pour la livraison à

Ciboure.– Effectuer des études et améliorations sur le calcul et l'affichage de la mer : comprendre

9

Rapport de stage 2008

la méthode, vérifier la cohérence graphique et physique et finalement l'adapter au besoin interne de Sirehna dans l'avenir.

– Effectuer des travaux d'ajout de systèmes.

3.1 Prendre connaissance du simulateur CIBOURE

Cet première étape me permet de mieux comprendre la structure logicielle du simulateur afin de pouvoir corriger des bogues ou ajouter des fonctionnalités nécessaires. Grâce à quelques documentations concernant le simulateur j'ai pu avoir une vue globale du logiciel que je vais exposer ci après.

3.1.1 Disposition matérielle des postes élèves et du poste professeur

Chaque poste élève dispose de trois écrans, un de 21 pouces affichant la scène de la mer ainsi que l'interface de navigation du bateau, un écran de 19 pouces affichant les instruments (un seul à la fois) et le dernier pour afficher la cartographie. Deux unités centrales dont une sert pour faire fonctionner le simulateur et une pour faire fonctionner le logiciel MaxSea permettant d'afficher la cartographie de la zone où se trouve le bateau.

Il y a un poste professeur pour contrôler tous les postes élève, qui dispose d'une unité centrale et d'un écran de 19 pouces et qui communique avec les postes élève via le réseau.

Fig. 4 : Disposition matérielle du simulateur

10

Poste élève 1 Poste élève 2

Ecran visu

Ecran instruments

Ecran carto

Station simu PC carto

Pupitre commandes

Réseau

PC supervisionexercices

Ecran visu

Poste professeur

Ecran visu

Ecran instruments

Ecran carto

Station simu PC carto

Pupitre commandes

Rapport de stage 2008

3.1.2 L'architecture logicielle modifiée et améliorée

Dans la version de 1998, Estia n'avait pas réalisé une architecture claire et détaillée du simulateur. Toutes les procédures sont groupées et gérées ensembles. Dans la version modifiée par Sirehna, le programme est divisé en trois processus qui fonctionnent indépendamment l'une de l'autre et qui communiquent par la mémoire partagée.

Fig.5 : Architecture logicielle modifiée par Sirehna

0- Mémoire partagée : contient l'ensemble des données suivantes :– Le temps– Les données sur les commandes– Les données cartographiques– Les positions, attitude, vitesse, accélération instantanée du navire

11

Poste élève 1

Cartographie

Service commandes

Service carto

Calcul mouvements

Calcul mer

Simu affichage

Mémoire partagée

Service réseauPC simu

Commandes

Ecran íntrument

Ecran scène +cadrans

Clavier

Souris

4 6

11

10

9

8

14 15

18

17

16 13

3

12

PosteProfesseur

Posteélève 2

Posteélève 3

1 2

0

7 5

Rapport de stage 2008

– Les données concernant la mer– Les informations pédagogiques (des leçons)– Les informations sur les autres navires élèves

1- Poste professeur : contient l'exécutable « profexe » donne l'interface de contrôle de 6 postes élèves. Le poste professeur communique avec les postes élèves via un réseau Ethernet en utilisant le protocole UDP.

2- Postes élèves : contient les exécutables principaux du simulateur, ces programmes sont lancés par le poste professeur.

3- Poste élève détaillé : constitué de différents composants matériels et logiciels

4- Pupitre et commandes : constitué des commandes matérielles (angle barre, vitesse moteur, pas de l'hélice, ...). Signaux transformés en informations numérique par un boîtier spécifique développé pour Ciboure, et transmis par liaison série au PC du poste élève, suivant un format de trames particulier. 5- Liaison série commandes – PC élève 6- Poste cartographie : connecté avec le PC élève par une liaison série, protocole NMEA. Affichage de la carte géographique où se situe le bateau.

7- Liaison série carto – PC poste élève

8- Souris PC poste élève : commande l'IHM du poste élève

9- Clavier PC poste élève : commande l'IHM du poste élève

10- Écran 1 : affiche la scène graphique et des cadrans (interface de conduite du bateau)

11- Écran 2 : affiche un instrument à la fois (radar, sonar, sondeur, ...)

12- Réseau Ethernet, protocole UDP

13- Service réseau : constitué d'un programme installé sur le PC poste élève, analysant en permanence les informations sur le réseau, de la part du poste professeur et des autres postes élèves, et mettant à jour la base de données du poste élève (mémoire partagée), et inversement, envoyant les informations du poste élève sur le réseau.

14- Service commandes : constitué d'un programme installé sur le PC poste élève, analysant en permanence les informations sur la liaison série « commandes » et mettant à jour la base de données du poste élève (mémoire partagée)

15- Service carto : constitué d'un programme installé sur le PC poste élève, analysant en permanence les informations sue la liaison série « carto » et mettant à jour la base de donnée du poste élève (mémoire partagée), et inversement, envoyant les informations du poste élève sur le

12

Rapport de stage 2008

poste Carto.

16- Programme de simulation et d'affichage : sur la base du code existant, c'est le module qui construit l'affichage du paysage, cadrans et instruments, en fonction des informations disponibles dans la base de données, et qui collecte les informations provenant du clavier et de la souris, pour mettre à jour cette base de donnée.

17- Calcul mer : constitué d'un exécutable utilisant les données instantanées de la base de données pour calculer la surface de la mer, et qui transfère ces informations dans la base de données pour l'affichage.

18- Calcul mouvements : constitué d'un exécutable utilisant les données instantanées de la base de données pour calculer le mouvement du bateau, et qui transfère ces informations dans la base de données pour l'affichage.

Les modules en vert sont des exécutables dont la structuration du code source est la suivante [Estia] :

13

Calcul mouvements

18 libCBateau

libFish

CalcMvtNavire.exe

libCBateau

libCBateau

Calcul mer 17

CalcMer.exe

libCBateau

libCBateau

Rapport de stage 2008

3.1.3 Déroulement d'une séance de simulation

Le professeur à partir de son poste utilise le programme « profexe » qui lui donne une interface de contrôle, et qui lui permet de définir des leçons à affecter aux élèves de son choix. Il lui permet également de saisir différents événements tels que le changement de la météo, l'ajout des balisages, la simulation de panne mécanique, ... Et ensuite de les envoyer aux groupes d'élève choisis.

Le simulateur sur le poste élève est ainsi lancé à partir du poste professeur. L'élève possède sur son poste des objets d'IHM (bouton d'activation, manettes, souris, barre à roue,...) qui lui permet de manipuler le comportement du simulateur ou plus particulièrement, celui du bateau.

14

Simu affichage

16

libBateau_demo

libDrawBateau

libMer2 VueZone2

Vue3d

Affichage bateau Affichage mer Affichage décor

ELEVE.EXE

libInstruments

Instruments

GL_window

Interface graphique

cadrans

Cadransinterface

libReg

Options Bibliothèques utilitaires : GL_Utiles, libConvert, libFish, libStringTools, libBaseBd, libComDB, io_base...

Rapport de stage 2008

15

Fig. 6 : Poste professeur – l'interface pour affecter et contrôler les leçons/poste élève

Vue de face Vue de côté Vue dessusVue de la tour

Activer/Arrêt pêche

Sonner la sirène(son court)

Sonner la sirène(son long)

Baisser la vue

Avancer la vue

Activer/Arrêt vue jumelle

Tourner la vue à gauche

Monter la vue

Tourner la vue à gauche

Manette de contrôle du pas de l'hélice

Manette de contrôle du régime moteurLes deux

manettes servant lors de la pêche

Ecran de la scène de la mer et des cadrans pour le contrôle du bateau

Ecran d'instrument

Ecran cartographie

Barre à roue

Fig. 7 : Poste élève

Fig. 8 : Détails du clavier personnalisé

Rapport de stage 2008

3.2 Développements d'utilitaires

Plusieurs tâches ponctuelles sont à réaliser tout en découvrant le simulateur. Ces tâches ont pour but de perfectionner et améliorer les fonctionnalités ou l'affichage du simulateur.

3.2.1 Les timers

Objectif : finaliser/ régler les différents timers (ex : instruments petits/grands).Faire afficher les instruments dans le petit cadran de la vue 3D avec la bonne fréquence de

l'instrument au lieu de la fréquence de la scène 3D. Par exemple, quand on affiche un instrument dans l'écran d'instrument, il a une fréquence de rafraichissement qui est sa propre fréquence de balayage, mais quand on l'affiche dans le petit cadran sur l'écran où la mer s'affiche, l'instrument prend en compte le rafraichissement de la scène 3D qui est de 0,1s alors que l'on souhaite garder sa propre fréquence.

Pour régler ce problème j'ai pris connaissance du fonctionnement des instruments (les paramètres, l'affichage, les boutons, ...).

3.2.2 Les commandes

Objectif : Développer le module de capture de commandes clavier pour faciliter l'opération de commande à Sirehna, à cause du manque de boitier commande de Ciboure.

Comme on avait vu précédemment les postes élèves de Ciboure possède un boitier de commande permettant à l'utilisateur de manipuler le simulateur. Mais à Sirehna nous ne disposons malheureusement pas ce boitier dans la phase de développement. La procédure de test est donc plus compliquée, nous somme obligés de passer par un programme spécifique pour modifier la base de données. C'est pourquoi un module de capture de commande clavier sera très utile pour le développement ou pour les besoins internes de Sirehna de ce simulateur dans l'avenir.

Les captures de commandes implémentées concernent la vue (changement de mode vue, rotation de la vue, ...), les commandes du navire (changement de comportement du contact moteur, du pas de l'hélice, de la manette de gaz, ...), la pêche (lancement/arrêt de la pêche, règlage du treuil PORT et du treuil STBD, ...).

En réalisant ce module j'ai pu découvrir l'ensemble des variables modifiables par les commandes et comment elles sont modifiées dans le programme. J'ai appris aussi à me servir de la base de données et éventuellement j'ai pu tester le simulateur avec différents scénarios.

3.2.3 Le sonar

Objectif : finir l'affichage et les fonctionnalités.Dans l'arborescence des fichiers, le sonar se situe dans la bibliothèque libIntruments, qui

contient tous les instruments du simulateur.

16

libIntruments

radar

sonar

sondeur

Rapport de stage 2008

L'interface de base du sonar est faite mais par rapport à l'ancienne version il manque quelques fonctionnalités. En outre, l'affichage du sonar en petit cadran et la réaction des boutons présentent encore quelques défauts. Le travail consiste à corriger les bogues, implémenter les fonctionalités manquantes, les tester et les intégrer dans le projet.

Différentes fonctionnalités sont indiquées ci dessous. Celles encadrées en vert sont soit manquantes soit améliorables.

Fig. 9 : Affichage du sonar dans l'écran d'instrument, [ManEs]

17

Valeur du VRM Valeur de l'échelleAllumer/ éteindre le sonar

Afficher la barre option

Témoin indica-teur de la montée

ou descente de la sonde

Zone de modification des valeurs de l'échelle, du VRM, EBL.

Orientation vers la surfaceou le fond de lamer

Valeur de l'EBL

Valeur de la distance horizontale,distance obliqueet de la profondeur

(3) Clear : boutonpermettant d'en-lever tous lespoints de repère

(2) Cancel : bouton permettantd'enlever le dernier pointde repère

Zone de sélection des secteurs de balayage

(5) Move the center :bouton permettant de bouger le centre du cerclede balayage

(1)Marker : bouton permettant de positionner des points de repère

(4)Track : dessiner laparcourt du bateau

(6)Center : centrer/recentrerle centre de balayage

Rapport de stage 2008

En ce qui concerne l'affichage du petit sonar plusieurs problèmes sont exprimés tels que le mauvais réglage de la police, de la non activation de certains boutons et pour certains boutons, une prise en compte de la position du clic de souris décalée.

Pour effectuer toutes ces fonctionnalités il fallait que je maitrise la procédure d'affichage du sonar (grand et petit). Cela peut se résumer en deux parties : l'affichage du fond du sonar (la zone contenant plusieurs cercles) où s'affiche le balayage, le banc de poisson, ...; la deuxième partie de l'affichage concerne la zone des boutons, c'est l'interface de contrôle du sonar dont les détails sont expliqués plus haut.

3.2.4 Le son

Objectif : vérifier le fonctionnement de différents sons, modifier ou ajouter des sons manquants.

L'ajout : la pluie, le moteur (mode démarrage et mode marche), bip du sonar.Vérification: le son morse sirène (cloche, klaxon, ...), le son du sonar quand il y a du

poisson, le son d'explosion (collision entre deux bateaux ou entre un bateau et les objets en mer ou collision avec le terrain), le son des signaux sonores par visibilité réduite.

Pour réaliser ce travail j'ai découvert comment le son est chargé et joué dans le simulateur.

3.2.5 Les balises

Objectif : affichage des balises qui sont au format VRMLLes balises font parties des objets importants en mer, elles permettent aux élèves d'apprendre

et mettre en pratique le code maritime. On a deux sortes de balises : les balises fixes et les balises rajoutées. Les balises fixes sont celles qui correspondent à la réalité dont les positions, la taille, les couleurs, ... sont respectées comme en vraie mer. Les balises rajoutées sont celles crées par le professeur, durant l'exécution il a possibilité de rajouter des balises avec les positions de son choix.

L'affichage des balises est fait seulement par la saisie d'événement « nouveau balisage » et par l'envoi d'événement du professeur.

Les balises sont modélisées sous Blender et sont exportées au format VRML, elle sont ensuite chargées dans le programme par la bibliothèque OpenVRML. Les informations concernant l'affichage des balises (positions, rythme de clignotement, ...) sont inscrites dans un fichier Excel rédigé par Ciboure. Pour exploiter ces informations nous transformons ce fichier Excel en un fichier texte au format csv. Ce fichier sera lu par un programme spécifique qui rangera les informations dans l'objet balise correspondant.

18

Fig. 10 : Le sonar affiché dans le petit cadran

Rapport de stage 2008

3.2.6 L' installation

Objectif : Effectuer l'installation complète du simulateur sur des postes élèves pour la livraison à Ciboure

Afin de faire fonctionner le simulateur correctement, Sirehna prend en charge l'installation du système d'exploitation ainsi que de l'ensemble des bibliothèques nécessaires. Avant la livraison de la première version de test à Ciboure on a donc besoin de faire l'installation complète de 6 postes élèves.

La procédure d'installation effectuée est la suivante :– Installer la distribution Linux Mandriva 2007– Installer le driver nvidia– Installer les bibliothèques : libftgl, Cg, libboost, libbzip, openvrml, libwxgtk.

3.2.7 Bilan

Ces tâches ponctuelles m'ont beaucoup aidée à comprendre l'organisation et le fonctionnement du simulateur comme elles sont bien réparties dans différents aspects. La découverte et le développement se passent ainsi de façon parallèle.

Au niveau des outils, j'ai pu appliquer mes connaissance en OpenGL et en graphisme, j'ai découvert par la même occasion la bibliothèque OpenVRML, le langage VRML et l'outil de modélisation 3D sous Linux – Blender.

19

Fig. 11 : Les balises en mer avec la vue jumelle

Rapport de stage 2008

3.3 Amélioration de l'aspect de la mer

Le simulateur est assez satisfaisant comme outil d'entraînement au niveau du fonctionnement mais au niveau du réalisme, le manque le plus important est la mer. Dans la version précédente, la mer est affichée par une seule texture qui bouge, ceci ne permet pas aux élèves de conduire dans des conditions réalistes de la mer comme une grosse mer avec l'influence du vent, du courant ou des vagues, ... Alors que dans la réalité ces facteurs jouent énormément sur le mouvement du bateau.

Dans la version récente, l'aspect de la mer est exprimé par rapport à l'échelle de Beaufort (Annexe II). La surface de la mer est modélisée par une fonction ou une somme de fonctions sinusoïdales dont l'amplitude varie en fonction de l'état de la mer, plus l'état de mer est grand plus la mer est forte et plus l'amplitude augmente c'est-à-dire la hauteur des vagues augmente.

Mon travail est d'étudier comment est implémenté le calcul de la mer, de comparer avec la théorie de Tessendorf [Tess], de vérifier la cohérence du rendu au niveau graphique et physique comme la période, la longueur d'onde, de mesurer et d'analyser les sorties du calcul et finalement, de modifier ce qui a été implémenté pour obtenir un meilleur rendu tout en assurant une bonne cohérence physique. La suite consiste à adapter la modélisation de la mer pour le besoin interne de Sirehna dans ses applications qui demandent une forte précision au niveau physique.

3.3.1 Théories : le modèle statistique des vagues et la transformée de Fourier

a) Introduction

Pour mieux modéliser une mer réaliste il faut prendre en compte son comportement physique. La mécanique des fluides est donc invoquée. Une théorie de l'océanographie définit le mouvement de la surface des vagues comme un mouvement ondulatoire (la houle), dont les caractéristiques plus détaillées sont dans l'annexe I.

Plusieurs modèles sont proposés pour ce problème de modélisation comme le modèle de Foster, de Chen, de Layton pour une simulation complète du fluide, le modèle de Fournier et Reeves, de Gozato pour une simulation d'une onde de surface, et le modèle qu'on va surtout aborder, celui de Mastin, de Tessendorf pour la simulation spectrale. Le modèle de Tessendorf est utilisé et connu largement depuis 1999 par le film « Titanic », « Le cinquième élément », « Water World », ... Il est aussi appelé modèle statistique des vagues.

b) Modèle statistique des vagues Tessendorf et utilisation de la FFT

Dans ce modèle statistique, la hauteur des vagues est calculée en considérant une variable aléatoire qui suit une loi Gaussienne. Le modèle donne aussi la possibilité de décomposer une onde en une somme d'ondes sinusoïdales. Dans le cas d'une mer régulière, la surface de la mer est modélisée par une seule fonction sinusoïdale alors que dans le cas d'une mer irrégulière, elle est modélisée par une somme infinie de sinusoïdes [Tess]. C'est pourquoi dans ce cas particulier on a recours à la transformée de Fourier, une méthode assez efficace et précise pour la décomposition de fonction. En pratique, on utilise la transformée de Fourier rapide (FFT) qui permet d'accélérer ce calcul. La FFT représente l'expression de la hauteur des vagues h(X,t) en un point X situé sur le plan horizontale (Ox, Oz), X=(x, z), par une somme de sinusoïdes :

20

Rapport de stage 2008

h X ,t =∑khK ,t exp iK∗X

avec t le temps, K=k x , k z un vecteur du nombre d'onde dans l'espace fréquentiel dont chaque composante définit un nombre d'onde suivant un axe, k x=2 n/Lx , k z=2n /Lz . Lx, Lz définissent la taille d'un patch et contiennent successivement N et M divisions et −N /2nN /2 , −M /2mM /2

Pour calculer la hauteur de vague en un point discret X=(nLx/N, mLy/M) sur le plan de la mer on a besoin de connaître le spectre d'amplitude h(K,t) d'un patch de la mer et la FFT inverse, ceci donnera la hauteur des vagues en fonction du temps h(X,t).

h X ,t =K iKh K ,t exp iK∗X

La FFT permet aussi de construire un motif périodique, ceci nous aide à afficher une mer complète par simple duplication des patchs. Plus on augmente la subdivision plus on a une bonne résolution de la mer. L'ordre de subdivision peut varier entre 16 et 2048 pour obtenir un résultat convenable. Dans « Titanic » et « Water World » le patch est subdivisé en 2048x2048 points car cela est réalisé sans la contrainte du temps réel. La taille du patch (Lx, Lz) doit varier de sorte que les rapports Lx/N et Lz/M ne doivent pas dépasser 2cm pour avoir une mer fluide.

Tessendorf a montré que l'amplitude spectrale h(K,t) est statistiquement proche du spectre d'énergie de vague PhK . Différents modèles de spectre d'énergie sont détaillés dans l'annexe III.

c) Construction de la mer avec un champ de hauteur aléatoire.

Le calcul du spectre d'amplitude des vagues h(K,t) peut s'effectuer ainsi :

h0K =1i Phk 2

21

Oz

Ox1 2 3 4-1-2-3-4

1

-1

2

-2

Fig. 12 : Un patch de la mer de taille 4x2

Rapport de stage 2008

Avec ~ LG(0,1)En donnant la relation de dispersion w(k) (Annexe I), le spectre d'amplitude à l'instant t est :

h k , t =h0 k exp iw k t h0−k exp −iw k t

d) L'éclairage en temps réel

Pour avoir un rendu réaliste de la mer il faut modéliser le comportement optique de la surface liquide dont la réflexion et la réfraction, autrement dit l'éclairage. Dans notre simulateur, nous avons utilisé une formulation simplifiée des coefficients de Fresnel et le modèle de Phong pour la réfraction et réflexion spéculaire de la lumière (Annexe IV).

Ici, notre éclairage est réalisé par la programmation par « shader » que l'on peut résumer par le schéma ci dessous :

« Cube map » est le type de texture d'environnement en deux dimensions, une structure pour calculer en temps réel les reflets et le fond de la mer. C'est l'assemblage de six textures en deux dimensions qui forme un cube contenant la mer.

22

Position dans le repère 3DNormales

Matrice de modélisation et de projectionPosition de la caméra

Position du soleil

VERTEX SHADER

PIXEL SHADER

Position dans le repère caméraVecteurs R et TCouleur du soleilCouleur de l'eau

Coefficients de Fresnel

Cube mapDistances et profondeurs

Couleur du cielTurbidité

Couleur finale

Fig. 13 : Procédure du calcul d'éclairage en un point

Rapport de stage 2008

3.3.2 Étudier l'implémentation actuelle

Dans la version récente du simulateur, M. Jean Marc CIEUTAT a implémenté cette théorie en combinant ses propres connaissances écrites dans sa thèse [Cieu]. De ma part, après avoir étudié la théorie de Tessendorf j'ai étudié également la thèse de CIEUTAT et son implémentation afin de comparer et vérifier les résultats.

Le calcul du patch de la mer est réalisé par l'exécutable CalcMer :Il est fait à partir de deux fichiers : main.cpp et CalcMer.cpp

– main.cpp : contient le programme principal qui réalise la boucle d'opérations suivantes par pas de temps de 0,1s :

• lecture de la base de données• appel de la fonction Init_Mer pour réinitialiser l'état de la mer en fonction des

paramètres lus en base de données• appel de la fonction Advance_Mer de la classe CalcMer qui calcule « la nouvelle »

mer à l'instant courant• écriture des résultats dans la base de données.

– CalcMer.cpp : contient des fonctions permettant de calculer l'état de la mer dont :• Init_Mer pour l'initialiser en fonction de la météo, calculer le spectre d'énergie

Ph(K) et le spectre d'amplitude des vagues à l'instant t = 0.• Advance_Mer pour calculer le nouvel état de la mer (l'amplitude des vagues pour

chaque point dans le plan spatial) en utilisant la FFT et la FFT inverse.

– Les paramètres de la météo sont enregistrés dans la base de données par l'envoi d'événement météo du professeur. Si le simulateur est exécuté indépendamment du poste professeur, pour changer la base de données on a le programme « BdEdit » qui donne la possibilité de faire des requêtes sur la base de données. Une requête sur la météo permettra de changer les conditions météorologiques qui vont changer l'aspect de la mer.

23

Fig. 14 : L'éclairage d'une mer calme

Réflexion du soleil

Rapport de stage 2008

Voici l'interface du programme « BdEdit » :

a) Algorithme utilisé dans la version actuelle

➢ Initialisation : les paramètres nécessaires pour le calcul de la mer sont définis par le professeur, ces paramètres diffèrent en cas de mer régulière ou mer non régulière, ce sont V(vitesse du vent), Lambda (un coefficient pour traiter la sortie de la FFT inverse), Facteurwkt (résultat de w(k)*t), L_vag (longueur d'onde souhaitée), Hk (norme du nombre d'onde), Amplitude_vag (amplitude de vague souhaitée).

Elles sont initialisées par rapport aux tableaux ci dessous :

Mer régulière_ Tableau de données 1

État de la mer

0 1 2 3 4 5 6 7 8 9

L_vag 0.0 10.0 15.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0

Hk 0.0 (2*Π) / L_vag

(2*Π) / L_vag

(2*Π) / L_vag

(2*Π) / L_vag

(2*Π) / L_vag

(2*Π) / L_vag

(2*Π) / L_vag

(2*Π) / L_vag

(2*Π) / L_vag

Ampli-tude_vag

0.0 0.05 0.25 0.5 1 1.5 2 2.5 3 3.5

Lambda 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0

Facteur-wkt

1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 0.125

24

Fig. 16 : Le fichier contient la base de données dont la classe BD_METEO avec tous les

champs concernant la météo

Fig. 15 : Requête sur la météo

Rapport de stage 2008

Mer irrégulière _ Tableau de données 2

État de la mer

0 1 2 3 4 5 6 7 8 9

V 0.0 10.0 15.0 20.0 30.0 35.0 40.0 45.0 50.0 55.0

Lambda 1.0 1.0 1.0 1.0 1.5 1.5 2.0 2.0 2.0 3.0

Facteur-wkt

2.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0

➢ Procédure de calcul de la mer (synthétise de 2 procédures Init_Mer et Advance_Mer)

A) Cas 1 : La mer irrégulière

- Initialiser V (vitesse de vent); lambda (coeff du déplacement).Exemple : Etat de mer = 5 => V = 35; lambda=1,5

- Initialiser ℜh0k =ℑh0 k =0

- Pour tout point (i,j) du patch (i,j = ...-2,-1,0,1,2...)Calculer kx=2 i /NbPoints kz=2 j /NbPointsCalculer k=kx2ky2– Si k>=2

– Cas etat de mer=0h0k =0.001 (1)

– Cas etat de mer ≠ 0

h0k =0.0015k x

∣k∣,k z

∣k∣∗

W x

∣W∣,W z

∣W∣ (2)

W vecteur direction du vent– Si k<2

– Cas etat de mer ≠ 0– Calculer le spectre énergie

Phk = k ∗ W 0.0081g2k 5

exp −5/4 0.855gV∗k

4

∗ 124

= k∗ W Ak 5 exp[−B

k 4 ] 124

(3)

Avec A=0.0081g2

B=0.766[ gV ]

4

W : Vecteur direction du vent

25

Rapport de stage 2008

V: la vitesse du ventk=kx2ky2

– Calculer l'amplitude initiale spectral

ℜh0k =ℑh0 k =Phk 22 (4)

B) Cas 2 : La mer régulière

– Initialiser L_vag; Hk=2/LVag ; Amplitude_vag; lambda.

– Initialiser ℜh0k =ℑh0 k =0

– Pour tout point (i,j) du patch (i,j = ...-2,-1,0,1,2...)

– Calculer kx=2 i /NbPoints kz=2 j /NbPoints– Calculer k=kx2ky2

– Si k>=2 – Cas etat de mer=0

h0k =0.001– Cas etat de mer ≠ 0

h0k =0.0015k x

∣k∣,k z

∣k∣∗

W x

∣W∣ ,W z

∣W∣

W vecteur direction du vent

– Si etat de mer ≠ 0– Chercher le point k(iproche, jproche) qui est au plus proche du point

Hk*sincap_vent– Calculer l'amplitude initale spectrale en ce point. Les autres points du

plan spectral ont tous l'amplitude initiale 0. (initalisé plus haut)

ℜh0iproche =ℑh0 jproche= AmplitudeVag2 (5)

C) Avancer dans le temps et dans l'espace

– Pour tout point (i,j) du patch (i = 0...NbPoints-1; j=0.. NbPoints/2 +1 )– Calculer w(k) relation de dispersion

w k =gk

– Calculer le champs d'amplitude dépendant du temps dans le domaine des fréquencesh k , t =−h0k exp−iw k t −h0k expiw k t

– Calculer les dérivée partielle (en x et z) de h(x,t) : pour définir la surface normale;

26

Rapport de stage 2008

dx, dz permet aussi d'afficher un point sur le plan de la mer avec plus de fluidité. Car on affichera un point en 3 coordonnées (dx(X,t), h(X,t), dz(X,t)).

dx k , t= kx∣k∣

h0 k −i exp −iw k t − kx∣nk∣

h0−k −i exp iw k t

dz k , t = kz∣k∣

h0k −i exp−iw k t −kz∣nk∣

h0−k −i exp iw k t

– Calculer les fft_inverse afin de déterminer les 3 coordonnées de chaque point dans le plan spatial

dx X , t =d h X , t dx dz X ,t =d h X , t

dz sont les sorties du

TF-1(dx(k,t)) et TF-1(dz(k,t))

h X 0, t est la sortie du TF-1(h(k,t))

– Pour chaque point (i,j = 0...NbPoints)h X ,t =−1i j h X , t

dx X , t =lamda∗−1i j dx X , t

dz X ,t =lambda∗−1i j dz X , t

b) Comparaison avec la méthode de Tessendorf

– La dimension du patch et la taille de la grille : Le patch est de dimension Lx=L=128; la grille contient 128x128 points donc M=N=128 pointsDonc dx=Lx /N=128/128=1m , dz=Lz /M=1m .

– Calcul du spectre d'énergie : L'implémentation utilise 2 modèles de spectre d'énergie, dont un dans le cas où la norme du vecteur nombre d'onde K>=2 et l'autre dans le cas où K<2. Dans les 2 cas, on prend en compte la direction du vent, ceci est conforme au spectre d'énergie de Philips utilisé par Tessendorf. Mais la formule dans le cas K>=2 est plus proche que celle du spectre Pierson (Annexe III) . Le modèle statistique est bien respecté par la variable aléatoire suivant la loi Gaussienne de moyenne 0 et de variance 1.

– Calcul du spectre d'amplitude dans le plan fréquentiel à l'instant t=0:La formule de h0k est conforme à la méthode de Tessendorf .Pour la mer régulière on ne met l'amplitude initiale qu'à un point du patch qui formera une vague ayant la longueur d'onde et la direction les plus proches de celles choisies par le professeur, tout les autres points du patch ont une amplitude nulle. Ce qui fait que les vagues de la mer régulière se composent d'une seule fonction. Pour la mer irrégulière on calcule bien l'amplitude de tous les points du patch, chaque amplitude dans le plan spectral donnera une onde dans le plan spatial, ce qui fait qu'une vague de la mer irrégulière est le résultat d'une somme des ondes différentes.

27

Rapport de stage 2008

– Avancer dans le temps et dans l'espace :La notion de relation de dispersion w(K) est bien prise en compte. Calcul du spectre d'amplitude à l'instant t, h(K,t) est conforme à la méthode de Tessondorf, les termes h(K,t) et h(-K,t) sont introduits par la propagation des vagues « à gauche » et « à droite ».Par FFT inverse on obtient bien l'amplitude des vagues dans le plan spatial à un instant t.

c) Vérifications numériques des caractéristiques de la mer régulière et irrégulière

Le travail consiste à analyser le résultat obtenu par cette implémentation.Méthode : pour un point fixe du patch, récupérer sa valeur d'amplitude tous les pas de temps

c'est-à-dire 0,1s. En analysant ce signal je pourrai confirmer si les caractéristiques de la mer correspondent à la nomenclature « Otan » (Annexe II) .

➢ Mer régulière

Exemple d'une mer régulière par l'image de rendu par le signal correspondant :

Donc, pour l'état de mer 6 on remarque que la période et la longueur d'onde ne conviennent pas à l'échelle d'Otan. Même si l'aspect de la mer est assez convenable.

➢ Mer irrégulière

Exemple d'une mer régulière par l'image de rendu par le signal correspondant :

28

101,1 110,7 120,3 129,9 139,5 149,1 158,7 168,3-3

-2

-1

0

1

2

3

l'amplitude d'un point du patch par rapport au temps

Colonne H

Fig. 17 : Mer régulière pour l'État de mer 6 (très forte)

On regarde sur 2 périodest = [140,9;154,1]T ≈ 5,26 (s) (en moyenne)λ = 9,81*(5,26)²/2π = 43,22 (m)c= 43,22 /5,26 = 8,216

Rapport de stage 2008

L'amplitude obtenue n'est donc pas conforme à l'échelle d'Otan pour l'état de mer 6, c'est-à-dire l'amplitude moyenne 0,5m au lieu de 2,5m.

Le travail consiste ensuite à modifier les valeurs à l'initialisation afin de s'approcher au maximum de l'échelle d'Otan.

d) Vérifications graphiques des caractéristiques de la mer régulière

Pour confirmer la cohérence entre les mesures numériques et l'affichage graphique, l'étape suivante est de mesurer graphiquement la longueur d'onde. Mais cette mesure n'est possible que pour une mer régulière, car dans le cas de la mer irrégulière, on ne peux pas vraiment distinguer les différentes périodes.

Méthode : Pour faciliter la mesure, j'ai dessiné dans la scène de la mer une sorte de « règle » dont chaque division fait 5m. Ceci m'aide à mesurer la distance entre 2 crêtes successive.

Voici l'exemple d'une telle mesure, l'image suivante est une vue de dessus du bateau pour mieux distinguer les crêtes.

29

101,3 116,5 131,7 146,9 162,1 177,3 192,5 207,7 222,9 238,1 253,3-2,500000-2,000000-1,500000-1,000000-0,5000000,0000000,5000001,0000001,5000002,0000002,500000

Colonne R

l'amplitude d'un point du patch par rapport au temps

Dans ce cas particulier on ne peut pas estimer la période et la longueur d'onde de la vague.On peut pourtant mesurer l'amplitude moyenne et la comparer avec l'échelle de Beaufort. Dans ce cas, on obtient une moyenne d'environ 0,5m.

Fig. 18 : Mer irrégulière État de mer 6 (très forte)

Rapport de stage 2008

Pour cet exemple, la longueur d'onde est environ 45m.

e) Bilan des mesures

➢ Pour la mer régulière

Etat de mer Amplitude max

Période T Longueur d'onde

=g T 2

2

Longueur d'onde(Graphique)

Célérité c= T

0 0,33982 1,2 2,249 1,8741 0,243079 1,2 2,249 1,8742 0,375478 2,95 13,59 12,5 4,6083 0,724634 3,6 20,244 22 5,6234 1,681 4,55 32,34 35 7,1075 1,68134 5,26 43,22 40 8,2166 2,22863 5,4 46,39 43 8,5917 2,756 6,43 64,58 62 10,0448 3,10764 6,47 65,39 65 10,1079 3,60863 6,475 65,49 70 10,1146

J'en conclue que la longueur d'onde est cohérente entre le niveau graphique et le niveau numérique, par contre le résultat obtenu n'est pas satisfaisant par rapport à l'échelle d'Otan. Le problème qui se pose plus tard est de modifier les valeurs pour que cela s'en rapproche.

➢ Pour la mer irrégulière

Je n'ai pas effectué la mesure pour tous les états de mer car après avoir étudié la méthode

30

Distance entre 2 crêtes

Fig. 19 : Mesure graphique de la longueur d'onde

Rapport de stage 2008

d'implémentation et observer le résultat obtenu pour l'état de mer 6, j'ai suffisamment d'informations et je passe directement à la modification.

3.3.3 Modifications du calcul de la mer

Après des tests et des mesures, le résultat obtenu au niveau physique n'est pas satisfaisant, ce qui m'amène donc à des modifications du calcul de la mer qui est d'abord intéressant pour Ciboure, et à l'avenir sera intéressant pour les projets internes de Sirehna.

Comme une des activités importantes de Sirehna est la mesure et la simulation maritime. Un logiciel tel que le simulateur Ciboure est intéressant pour ses travaux habituels. Mais le but de l'utilisation sera accentué sur le comportement du navire par rapport à différentes états de la mer, ce qui fait que les caractéristiques physiques de la mer doivent être respectés (par rapport à l'échelle de Beaufort) pour assurer un bon calcul de mouvement des navires. Les modifications ou validations doivent donc prendre en compte des caractéristiques physiques et non seulement l'aspect graphique.

Plusieurs modifications sont à réaliser suivant la demande de M. Maisonneuve que je vais détailler plus en dessous :

a) Réglage des paramètres pour la mer régulière

Dans le tableau des données 1 plus haut, on a vu comment les paramètres sont initialisées, mais le résultat donné par le bilan n'est pas celui qu'on attend. C'est pourquoi un réglage de ces paramètres est nécessaire afin d'obtenir un résultat plus satisfaisant. Je les ai donc réglés par rapport à l'échelle d'Otan. Le tableau des données 1 devient :

État de la mer

0 1 2 3 4 5 6 7 8 9

T 1 1 6 7.5 8.8 9.7 12.4 12.8 12.8 12.8

Ampli-tude_vag

0.0 0.05 0.25 0.88 1.88 3.25 5.0 7.0 8.0 10.0

Lambda 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0

Les paramètres L_vag et Hk sont calculés par rapport à T : Lvag=gT² /2 , Hk=2/Lvag .

On remarquera que le tableau a un léger décalage par rapport à l'échelle d'Otan pour les état de mer 7,8 et 9. Ceci est fait exprès à cause des anomalies pour les états de mer supérieurs à 7 au niveau de l'affichage. Ceci s'explique le limite de l'affichage du patch de la mer, car la taille du patch est 128 seulement, il ne peut donc pas afficher les vagues ayant la longueur d'onde trop grande. Ici, la plus grande longueur d'onde supportée est 256m, de période 12,8s.

31

Rapport de stage 2008

b) Les spectres d'énergie

➢ Introduire différents spectres;Vérifier le résultat avec chaque spectre par l'analyse du signal; Adapter les entrées, donner possibilité à l'utilisateur de changer le modèle de spectre ;

Afin de rendre le simulateur cohérent avec les applications de Sirehna, les formules implémentées pour le calcul de la mer doivent être celles habituelles, que les personnels sauraient manipuler au cas de besoin. Ceci demande une modification au niveau des formules de spectre d'énergie. Les formules standards que l'entreprise a l'habitude d'utiliser, comme Pierson, IITC, ISSC, sont définies dans l'annexe III.

Par demande des utilisateurs de Sirehna, une variable « spectre » est introduit dans la base de donnée pour permettre de changer facilement le spectre sans toucher le code. Et comme chaque spectre a besoin de différentes paramètres, particulièrement la vitesse du vent pour le spectre de Pierson, la période moyenne pour le spectre ISSC et la hauteur significative pour les spectre ITTC et ISSC, chaque paramètre sera présenté par une variable dans la base de donnée qui pourra être modifiée volontairement par l'utilisateur. Ceci est fait par le même principe que les paramètres de la météo .

Les données en entrées sont aussi modifiée par rapport au besoin du calcul des spectres et par rapport à l'échelle d'Otan. Le tableau de données d'initialisation dans le cas de la mer irrégulière est modifiée comme suivant :

32

Fig. 20 : Requête sur les paramètre de la houle

Fig. 21 : Le fichier contient la base de donnée dont la classe EFF_HOULE et

HOULE_HAUTEUR avec tous les champs concernant la houle

Rapport de stage 2008

Mer irrégulière _ Tableau de données 2

État de la mer

0 1 2 3 4 5 6 7 8 9

V 0.0 0.5 3.5 11.5 19.0 24.5 37.5 51.5 60.0 63.0

Lambda 1.0 1.0 1.0 1.0 1.5 1.5 2.0 2.0 2.0 3.0

L_vag 0.0 7.0 87.0 100.0 120.0 140.0 240.0 351.0 420.0 613.0

Hk 0.1 (2*Π) / L_vag

(2*Π) / L_vag

(2*Π) / L_vag

(2*Π) / L_vag

(2*Π) / L_vag

(2*Π) / L_vag

(2*Π) / L_vag

(2*Π) / L_vag

(2*Π) / L_vag

Ampli-tude_vag

0.0 0.025 0.15 0.44 0.98 1.625 2.5 3.75 5.75 7

T 2.0 4.0 7.5 8.0 8.8 9.7 12.4 15.0 16.4 20.0

Pour mieux voir la différence entre ces 3 spectres (Pierson, ITTC et ISSC), voici les signaux tirés des tests ainsi que des images correspondantes. Ces expériences sont faites avec l'état de mer 5, on considère que la mer a une profondeur infinie. L'influence du fond de la mer sera abordée dans la partie suivante.

Fig. 22 : Mer obtenue avec l'ancienne implémentation

33

Rapport de stage 2008

Fig. 23 : Mer obtenue avec le modèle de spectre d'énergie de Pierson

Fig. 24: Mer obtenue avec le modèle de spectre d'énergie de ITTC

Fig. 25 : Mer obtenue avec le modèle de spectre d'énergie ISSC

34

101,6121,4114,3 109 128,8106,4126,2108,6109,8129,6110,8118,8111,7 105 124,8117,7-5,000000

-4,000000

-3,000000

-2,000000

-1,000000

0,000000

1,000000

2,000000

3,000000

4,000000

5,000000

Fig. 26 : Hauteur de vague en un point / Spectre Pierson

Colonne B

Rapport de stage 2008

BILAN DES MESURES

Spectre Amplitude_vag entrée Amplitude max (spatial)

Amplitude moyenne (spatial)

Pierson 1.625 3.67 1.22ITTC 1.625 4.93 1.51ISSC 1.625 2.02 0.6

Remarques : – Par l'observation graphique on constate que parmi les 4 rendus de mer, celui du spectre ITTC ou

Piersion donne la meilleure qualité de rendu.– Par l'observation des signaux et du bilan on confirme la cohérence entre les valeurs numériques

et le rendu graphique, la mer modélisée par le spectre ISSC est plus plate, autrement dit la valeur de l'amplitude moyenne est très éloignée de celle de l'échelle de Beaufort.

35

101,6122,6116,7112,6106,7112,4106,5 117 119,4113,5 111 105,1126,1120,6114,7-2,500000

-2,000000

-1,500000

-1,000000

-0,500000

0,000000

0,500000

1,000000

1,500000

2,000000

2,500000

Fig. 28 : Hauteur de vague en un point / Spectre ISSC

Colonne F

101,6 122 115,5110,8104,3109,4129,8112,8114,6108,1 105 125,4118,9112,8106,3-6,000000

-4,000000

-2,000000

0,000000

2,000000

4,000000

6,000000

Fig. 27 : Hauteur de vague en un point / Spectre ITTC

Colonne D

Rapport de stage 2008

➢ Prendre en compte le fond dans la relation de dispersion; Tests et vérifications

Jusqu'à maintenant on a eu une mer assez réaliste au niveau graphique et acceptable au niveau physique, mais seulement on n'a pas pris en compte le fond de la mer c'est-à-dire la profondeur d'eau. Jusqu'à là la relation de dispersion est calculé en supposant que la mer a une profondeur infinie. Comme le comportement de la mer se diffère par rapport à la profondeur, par exemple le rapport entre la longueur d'onde et l'amplitude est plus petit au bord des côtes qu'en pleine mer. On utilise cette fois la formule de la relation de dispersion en prenant en compte la profondeur de la mer.

w² k =gktanhkH avec g la constante gravitationnelle, k la norme du nombre d'onde, H la profondeur de la

mer.Comme la vue de la mer est positionnée à l'endroit du bateau on récupéra la profondeur de la

mer à la position du bateau au départ. Voici le résultat de la nouvelle formule, pour les expériences suivantes la profondeur est de 40m, l'état de mer 5 :

Fig. 29 : Mer obtenue avec le modèle de spectre d'énergie de Pierson

Fig. 30 : Mer obtenue avec le modèle de spectre d'énergie ITTC

36

Rapport de stage 2008

Fig. 31 : Mer obtenue avec le modèle de spectre d'énergie ISSC

37

101,6 120,8113,1 107,2 126,4 103,4122,6 104,4 105 124,2 104,8 112,2104,5 123,7 116,4108,7-5,000000

-4,000000

-3,000000

-2,000000

-1,000000

0,000000

1,000000

2,000000

3,000000

4,000000

5,000000

Fig. 32 : Hauteur de vague en un point / Spectre Pierson

Colonne O

101,6120,2111,9105,4 124 115,7 119 110,7118,8118,8110,5105,6124,2115,9 108 126,6118,3

-6,000000

-4,000000

-2,000000

0,000000

2,000000

4,000000

6,000000Fig. 33 : Hauteur de vague en un point / Spectre ITTC

Colonne M

Rapport de stage 2008

BILAN DES MESURES

Spectre Amplitude_vag entrée Amplitude max (spatial) Amplitude moyenne (spatial)

Pierson 1.625 3.86 1.29

ITTC 1.625 4.87 1.51

ISSC 1.625 2.11 0.62

On remarque par les images et par le bilan que le spectre ITTC donne la meilleur approximation de l'échelle d'Otan dans le cas de profondeur fini (40m), le spectre ISSC donne une mer beaucoup trop plate par rapport à l'état de mer 5. Mais on fera l'expérience avec une profondeur de 5m pour le spectre ISSC, on observera que ça correspond mieux à l'échelle d'Otan.

Fig. 35 : Mer obtenue avec le modèle de spectre d'énergie ISSCAmplitude de vague maximale = 5.79 Amplitude de vague moyenne = 2,1

38

101,6120,2111,9105,4 124 115,7 119 110,7118,8118,8110,5105,6124,2115,9 108 126,6118,3

-2,500000

-2,000000

-1,500000

-1,000000

-0,500000

0,000000

0,500000

1,000000

1,500000

2,000000

2,500000Fig. 34 : Hauteur de vague en un point / Spectre ISSC

Colonne Q

Rapport de stage 2008

c) La taille des patchs (en dimension et en discrétisation)

➢ Tester des tailles de patchs plus grands: augmenter en dimension plus grande que 128 ; augmenter en discrétisation plus grande que 128

Comme on avait vu dans le tableau de l'initialisation, la longueur d'onde de la vague est trop grande par rapport aux dimensions du patch de la mer dans les cas des grands états de mer, par exemple la longueur d'onde maximum correspondant à l'état de mer 9 est de 613m alors que le patch est de taille 128m x 128m. Ceci pose problème au niveau du rendu. En faisant l'expérience j'ai remarqué que pour les grands états de mer, l'amplitude moyenne ne correspond plus à l'échelle de Beaufort.

Comme la taille du patch de la mer est paramétrable par un fichier texte, il suffit donc de le modifier, cette modification entrainera le changement de la base de données.

Fig. 36 : Fichier de configuration la taille du patch de la mer

La dimension du patch est aussi changé en 256m x 256m, ce qui permet d'avoir un patch plus grand avec une discrétisation de 1 point tous les mètres.

Le résultat obtenu n'est pas acceptable au niveau graphique et en plus le comportement du simulateur est très anormale, par exemple on passe de 10 images/s à 5 images/s, le simulateur s'éteint aussi tôt.

On peut expliquer ce problème par la limite du matériel, sachant que le calcul de la FFT reste assez lourd en temps réel. Dans l'avenir, si Sirehna aurait vraiment besoin de simuler ces grands états de mer, on pourrait accélérer le calcul en changeant la bibliothèque de calcul FFT ou si possible, utiliser la carte graphique pour ce calcul de FFT.

39

#On passe a 128 points pour la mer# classe pour outmdv, outmdvkx, outmdvkzCLASSE;OUTMDV6565;value;FL;0;0;16644;# classe pour les normalesCLASSE;POINT6565;value;FL;0;0;49932;# classe pour le vectVagCLASSE;POINT65;value;FL;0;0;388;

#On passe a 256 points pour la mer# classe pour outmdv, outmdvkx, outmdvkzCLASSE;OUTMDV6565;value;FL;0;0;65536;# classe pour les normalesCLASSE;POINT6565;value;FL;0;0;196608;# classe pour le vectVagCLASSE;POINT65;value;FL;0;0;772;

Rapport de stage 2008

3.3.4 Bilan

En réalisant ces modifications, j'ai beaucoup expérimenté, testé, et remarqué différents aspects. Les améliorations réussies ou échouées m'ont été utiles pour la compréhension de la théorie de Tessendorf et surtout comment modéliser une mer en utilisant la transformée de Fourier. Par la même occasion, j'ai pris connaissance de la bibliothèque « fftw » permettant d'effectuer des calculs de FFT facilement et rapidement.

En ce qui concerne l'éclairage en temps réel, j'ai découvert le langage Cg qui sert à programmer les « shaders », conçu par Nvidia.

40

Fig. 37: La mer avec un patch de 256x256

Rapport de stage 2008

Conclusion

La participation au développement du simulateur m'a permis d'une part, d'appliquer mes connaissances sur la synthèse d'image et d'autre part, de prendre connaissance de l'océanographie ainsi que de la mécanique des fluides. J'ai découvert aussi une importante application de la transformée de Fourier. J'ai donc pris conscience qu'un ingénieur en informatique dans l'imagerie a besoin aussi des connaissances propres au domaine d'application des images crées (ici, en mécanique des fluides) et en mathématiques.

En participant à ce projet, j'ai appris comment développer un projet méthodiquement. Par exemple pour rendre le travail efficace et profitable il faut bien spécifier, documenter et soigner un code propre, bien structuré. La phase de test doit être rigoureuse et bien détaillée. Enfin l'organisation et la répartition des tâches sont aussi importantes pour répondre aux contraintes liées aux clients.

J'ai eu la chance de travailler sur un projet d'imagerie qui concerne non seulement la synthèse d'image mais aussi le traitement d'image. Ce qui m'a permis d'avoir une vision plus large de leur application. Cette expérience m'a donc été vraiment enrichissante et est un bon point d'entrée dans ma future carrière dans l'imagerie.

41

Rapport de stage 2008

Index des figures

Fig. 1 : Les simulations numériques 7Fig. 2 : Les mesures des bateaux 8Fig. 3 : Les expériences sur le contrôle dynamique 8Fig. 4 : Disposition matérielle du simulateur 10Fig. 5 : Architecture logicielle modifiée par Sirehna 11Fig. 6 : Poste professeur 15Fig. 7 : Poste élève 15Fig. 8 : Détails du clavier personnalisé 15Fig. 9 : Affichage du sonar dans l'écran d'instrument 17Fig. 10 : Le sonar affiché dans le petit cadran 18Fig. 11 : Les balises en mer avec la vue jumelle 19Fig. 12 : Un patch de la mer de taille 4x2 21Fig. 13 : Procédure du calcul d'éclairage en un point 22Fig. 14 : L'éclairage d'une mer calme 23Fig. 15 : Requête sur la météo 24Fig. 16 : Le fichier contient la base de données dont la classe BD_METEO avec tous les champs concernant la météo 24Fig. 17 : Mer régulière - État de mer 6 (très forte) 28Fig. 18 : Mer irrégulière - État de mer 6 (très forte) 29Fig. 19 : Mesure de la longueur d'onde graphiquement 30Fig. 20 : Requête sur les paramètres de la houle 32Fig. 21 : Le fichier contient la base de donnée dont la classe EFF_HOULE et HOULE_HAUTEUR avec tous les champs concernant la houle 32Fig. 22 : Mer obtenue avec l'ancienne implémentation 33Fig. 23 : Mer obtenue avec le modèle de spectre d'énergie de Pierson , profondeur infini 33Fig. 24 : Mer obtenue avec le modèle de spectre d'énergie de ITTC, profondeur infini 34Fig. 25 : Mer obtenue avec le modèle de spectre d'énergie de ISSC, profondeur infini 34Fig. 26 : Hauteur de vague en un point / Spectre Pierson, profondeur infini 34Fig. 27 : Hauteur de vague en un point / Spectre ITTC, profondeur infini 35Fig. 28 : Hauteur de vague en un point / Spectre ISSC, profondeur infini 35Fig. 29 : Mer obtenue avec le modèle de spectre d' énergie de Pierson, profondeur 40m 36Fig. 30 : Mer obtenue avec le modèle de spectre d' énergie de Pierson, profondeur 40m 36Fig. 31 : Mer obtenue avec le modèle de spectre d' énergie de Pierson, profondeur 40m 37Fig. 32 : Hauteur de vague en un point / Spectre Pierson, profondeur 40m 37Fig. 33 : Hauteur de vague en un point / Spectre ITTC, profondeur 40m 37Fig. 34 : Hauteur de vague en un point / Spectre ISSC, profondeur 40m 38Fig. 35 : Mer obtenue avec le modèle de spectre énergie ISSC, profondeur 5m 38Fig. 36 : Fichier de configuration la taille du patch de la mer 39Fig. 37: La mer avec un patch de 256x256 40

42

Rapport de stage 2008

ANNEXES

I. Typologie des vagues océaniques

Définition d'une vague

– La surface libre de l'océan est le niveau théorique de l'océan au repos sans aucune ondulation.– La hauteur H de la vague est la différence de niveau entre un creux et une crête successifs.– L'amplitude a de la vague est égale à H/2.– La période T est le temps qui sépare le passage de deux crêtes successives.– La longueur d'onde L est la distance qui sépare le passage de deux crêtes successives.– La célérité C de la vague est la vitesse moyenne de propagation des crêtes, égale à L/T.– La fréquence f de la vague est le nombre de périodes par seconde, égale à 1/T. Elle est exprimée

en hertz.– On appelle k le nombre d'onde, k=2/L .– On notera g la gravité terrestre.– La profondeur h est la distance entre la surface libre de l'eau et le fond de la mer.– La pulsation de la vague est le nombre de radians effectués par seconde,

=2/T=2 f

– La relation de dispersion : rend compte de l'évolution du nombre d'onde en fonction d nombre d'on et de la profondeur :

=gktanhkH en bord de côte=gk en plein mer

43

HH

L

h

Rapport de stage 2008

II. L'échelle d'Otan

Aspect de la mer Chiffre Beaufort

Termes descriptifs

Etat de mer

Temps descrip-

tifs

Vague (m)

Vague moy(m)

Vent(nd)

Vent moy(nd)

Période moy(s)

Lon-gueur d'onde

Comme un miroir 0 Calme 0-1 Calme 0 à 0,1 0,05 0 à 1 0,5

Quelques rides

Vaguelettes ne déferlant pas

1

2

Très légère brise

Légère brise

2 Belle 0,1 à 0,5

0,3 1 à 6 3,5 7,5 87,0

Les moutons apparaissentPetites vagues, nombreux moutons

34

Petite briseJolie brise

3 Peu agitée

0,5 à 1,25

0,88 7 à 16 11,5 7,5 100,0

Vagues modérée, moutons, embruns

5 Bonne brise 4 Agitée 1,25 à 2,5

1,88 17 à 21 19 8,8 120,0

Lames, crête d'écume blanche, embruns

6 Vent frais 5 Forte 2,5 à 4 3,25 22 à 27 24,5 9,7 140,0

Lames déferlants, traitées d'écumes

Tourbillons d'écume à la crête des lames

Lames déferlantes, grosses à énormes

7

8

9

Grand frais

Coup de vent

Fort coup de vent

6 Très forte

4 à 6 5 28 à 47 37,5 12,4 240,0

Visibilité réduite par les embruns 10 Tempête 7 Grosse 6 à 9 7,5 48 à 55 51,5 15,0 351,0

« 11 Violent tempête

8 Très grosse

9 à 14 11,5 56 à 63 59,5 16,4 420,0

« 12 Ouragan 9 Énorme >14 >14 >63 >63 20,0 613,0

– Vague moyenne représente la hauteur de la vague, donc l'amplitude vague sera divisé par 2.

44

Rapport de stage 2008

III. Spectres d'énergie standards

A) Spectre de Pierson-Moskovitz

Ils correspondent à des mers entièrement formées de l'Atlantique Nord

Phw= Aw5 exp[−B

w4 ]A=0.0081g2

B=0.74[ gV ]

4

avec g est l'accélération terrestre, V est la Vitesse du vent

B) Spectre ITTC

Phw= Aw5 exp[−B

w4 ]A=0.0081g2

B=3.11Hs2 Hs : hauteur significatif

C) Spectre ISSC

Phw= Aw5 exp[−B

w4 ]

A=173 Hs 2

T 14

Hs: Hauteur significatif

B=691T 1

4 T1 : période moyenne

45

Rapport de stage 2008

IV. Modèle éclairage en temps réel

Soit I l'intensité de la lumière en un point de l'océan parvient jusqu'à l'oeil

I=1−Kair d x I aK air d x {I d I sI x}

où :I a=K a I air : la lumière ambiante dans l'atmosphèreI d=I soleil k d N.S : la réflexion diffuse de la lumière ; N est la normale, S du soleilI s=I soleil k sR.S n : la réflexion spéculaire de la lumière (modèle de Phong)I x=K r I rK t I t : la couleur en un point x à la surface de l'océan I r , I t : couleurs de la rélexion et de la réfraction

K r=1

1V.N 8: coefficient de Fresnel simplifié de rélfexion

K t=1−K r : coefficient de Fresnel simplififé de réfraction K aire : coefficient d'atténuation de l'atmosphère

d x : distance du point x de l'océan à l'observateur

Soit R et T les directions de réflexion et le rayon de réfraction

R=2V.N N−V

T=N na

nbV.N ±1−

na

nb

2

1−V.N 2−na

nbV

où na=1.333 nb=1 , N la normale et V la direction de la vue

46

Rapport de stage 2008

BIBLIOGRAPHIE

[Cieu] Jean-Marc Cieutat. Modélisation physique réaliste de session de simulation d'entraînement maritime. Thèse de l'université de Bordeaux, 2003

[Dau-Asc] F.Dauce, M.Aschehoug. Document d'ALEA +V.2.0, 2002

[Estia] ESTIA. Document de conception du simulateur de navigation SIMUNAV, 2007

[Hins] Damien Hinsinger. Modélisation et animation de la mer en temps réel. Projet iMAGIS, laboratoire GRAVIR, 2001

[ManEs] ESTIA. Manuel utilisateur du simulateur de navigation et de pêche, poste élèves. Institut des logiciels et des systèmes

[Sirh] Le site de l'entreprise Sirehna. http://www.sirehna.com

[Tess] Jerry Tessendorf. Simulating Ocean Water, 1999-2001

[Paren] Article de M. Parenthoën, J.Gourrion, J.Tisseau. Les états de mer : un état de l'art, laboratoire d'ingénierie Informatique de l'Université de Paris, 2003

47