amélioration de la scène et des performances d'un...
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